深入理解和应用display属性(一)
Display在官方定义:规定元素应该生成的框的类型。本文只重点分析常用的6个值:none、block、inline、inline-block、inherit、flex。其他table、list-item等都不再推荐使用。
一、None
此元素不会被显示。主要与visibility属性为hidden时相区分。
1) 当元素的none时,js可以获取此元素,但不能获取/设置此元素的可视化属性的值(但可以设置自定义属性的值),如Width、Height、background等Css属性的值,这也就表明当元素为none时,元素是不被浏览器渲染的。
2) 当元素的visibility值为hidden时,元素虽然不可见,但可以获取/设置元素的任何值,包含Css相关属性。这也就表明此时的元素是被浏览器渲染的(在文档流中是占有位置的),只是处于不可见的状态。
3) 示例代码如下:
Css代码:
#div01{
display: none;
width: 200px;
background: red;
}
#div02{
visibility: hidden;
width: 100px;
}
#div03{
width: 100px;
}
Js/html代码:
<div id="div01" data-name="div01" > div01</div>
<div id="div02" data-name="div02" > div01</div>
<div id="div03" > div03</div>
<script type="text/javascript">
window.onload = function(){
var div01 = document.getElementById('div01');
var div02 = document.getElementById('div02');
var div03 = document.getElementById('div03'); //output: div01:0 background: name:div01
console.log( 'div01:' + div01.offsetWidth + " background: " + div01.style.background + " name:" + div01.getAttribute("data-name"));
//output: div02:100 name:div02
console.log( 'div02:' + div02.offsetWidth + " name:" + div02.getAttribute("data-name"));
//output: div03:100
console.log( 'div03:' + div03.offsetWidth); div01.style.width = 1000;
div01.setAttribute("data-name","div0101");
div02.style.width = "800px";
div02.setAttribute("data-name","div0202");
div03.style.width = 800; //output: div01:0 background: name:div0101
console.log( 'div01:' + div01.offsetWidth + " background: " + div01.style.background + " name:" + div01.getAttribute("data-name"));
//output: div02:800 name:div0202
console.log( 'div02:' + div02.offsetWidth + " name:" + div02.getAttribute("data-name"));
//output: div03:800
console.log( 'div03:' + div03.offsetWidth);
}
</script>
二、Block
设置元素为块级元素,可应用盒子模型相关属性。默认Width会100%,Height自适应。Margin、padding都有效。如果没有占宽或高的子元素存在,则高度为零。
代码如下:
<html>
<head>
<style>
#div01{
background: red;
}
#div02{
height: 100px;
background: gray;
}
#div03{
background: green;
}
</style>
</head>
<body>
<div id="div01" ></div>
<div id="div02" ></div>
<div id="div03" >div03</div>
</body>
</html>
效果截图:
三、inline
行内元素或者通过display:inline修饰为行内元素的都具有行内元素的行为。
1) 多个inline元素会排成一行,并列的多个inline元素之间会存在8个像素左右的间隔,8像素间隔解决办法:
a). Html文本有意识的都排成一行,如下代码所示:
<a>a01</a><a>a02</a>
b). 利用margin-left:-8px,也就是marginq负值实现,也可以在外层使用letter-spaceing和word-spaceing为负值的方式实现(此种试子元素需要重置被设置属性)
.inline{
display: inline;
background: red;
margin: 0px;
padding: 10px;
margin-left: -8px;
}
<div class="inline">inline01</div>
<div class="inline">inline02</div>
<div class="inline">inline03</div>
<div class="inline">inline04</div>c). 包裹inline元素的外层元素加上font-size:0px和-webkit-text-size-adjust:none实现
a{
background: red;
font-size: 14px;
}
.overWidth{
white-space: nowrap;
border: 1px solid gray;
font-size: 0px;
-webkit-text-size-adjust: none;
}<div class="overWidth" >
<a>a01</a>
<a>a000000002</a>
</div>
2) Inline元素的width和height无效
3) Inline元素的padding都有效,但margin左右有效,上下无效。
4) Inline元素包裹inline元素,外层元素的width和height会被内部的撑开
.overWidth{
display: inline;
border: 1px solid gray;
}
<div class="overWidth" >
<a>a01</a>
<a>a000000002</a>
</div>
5) Block/inline-block元素包裹inline元素,默认超width自动换行,height撑开。
a) 强制不换行可以通过white-space:nowrap来实现,此时超width的就会浮出来,可以通过overflow:hidden和text-overflow:ellipsis配合实现省略显示。
.overWidth{
white-space: nowrap;
width: 100px;
border: 1px solid gray;
overflow: hidden;
text-overflow: ellipsis;
}<div class="overWidth" >
<a>a01</a>
<a>a000000002</a>
</div>
深入理解和应用display属性(一)的更多相关文章
- 深入理解和应用display属性(二)
四.inline-block 此类元素是inline + block的合体 1) margin和padding都有效:width和height都有效: .inline{ display: inline ...
- 理解与应用css中的display属性
理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...
- 深入理解display属性
display 属性在网页布局中很常见,但是之前一直不了解他的各个属性的区别,只是简单的使用block.none属性,对于其他属性都不清楚,今天详细的学习和实践display属性的各个方面 定义 di ...
- 深入理解display属性——前端布局常用重要属性
小注:display属性在网页布局中非常常见,但经常用到的仅仅是block.inline-block.inline和none等寥寥几个属性值,下面本人将详细介绍display属性的各个方面 定义 di ...
- 理解clear:both属性(转)
理解clear:both属性 在前端开发布局中,经常会被float这个属性搞晕,尤其是新手 CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列.Float(浮动),往往是 ...
- 转帖 css的块元素、内联元素、内联块元素、display属性、浮动、定位
块元素 块元素,也可以称为行元素,布局中常用的标签如:div.p.ul.li.h1~h6.dl.dt.dd等等都是块元素,它在布局中的行为:1.支持全部的样式.2.如果没有设置宽度,默认的宽度为父级宽 ...
- 前端,基础选择器,嵌套关系.display属性,盒模型
基础选择器 1.统配选择器 控制html,body及body内跟显示相关的标签 *{ width:80px; height:80px; background-color:red; } 2.类选择器 以 ...
- CSS Display属性与盒模型
由于HTML流式文档的特性,页面布局往往是新手最为头疼的问题之中的一个. 每一个HTML元素都会渲染为一个Box,可分为inline Box和block Box. 依据display属性的不同.Box ...
- CSS学习笔记:display属性
目录 一.display属性概述 1. 块级元素和行内元素的区别 2.常见的块级元素和行内元素 3. display属性常见的属性值 二.测试display取各属性值的效果 1. 测试inline和b ...
随机推荐
- 2013 duilib入门简明教程 -- 简单控件介绍 (12)
前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用. 由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界 ...
- Mysql命令show global status求根溯源
近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的. 在此之前,我们必须搞明白mysql对于这个命令的执行过程 ...
- Constraint3:check约束 和 null
Check约束用以限制单列或多列的可能取值范围. 1,在check约束中(check(expression)),如果expression返回的结果是Unknown,那么check返回的结果是true. ...
- 转帖:DotNet 资源大全中文版
(注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框 ...
- ExtJs4之TreePanel
Tree介绍 树形结构,是程序开发,不可缺少的组件之一.ExtJs中的树,功能强大美观实用.功能齐全,拖拉,排序,异步加载等等. 在ExtJs4中Tree和Grid具有相同的父类,因此Grid具有的特 ...
- Newtonsoft.json中 linq to json 和序列化哪个快?
Newtonsoft.json是最常用的json序列化组件,当然他不是最快的,但是是功能最全的.. using System; using System.Collections.Generic; us ...
- EF循环迭代导致如此严重的性能丢失,你知道?
前言 在工作当中呢,没怎么用到过EF,所以为了遗忘这一部分知识,偶尔会去写写小的demo,偶然机会在EF循环迭代中发现居然影响性能这么严重,当我们在用时或许大概也许可能都曾这样写过,但是你注意到了吗, ...
- AngularJS API之$injector ---- 依赖注入
在AngularJS中也有依赖注入的概念,像spring中的依赖注入,但是又有所不同.Spring中使用构造注入或者设值注入的方式,还需要做一些额外的操作,但是angular中只需要在需要的地方声明一 ...
- IE内核发送ajax请求时不会将url中的参数编码
有一次用户遇到创建文件,名称为中文时乱码的问题. 经调查,发现用户使用的是国产浏览器ie模式 抓取请求发现 IE: 键 值请求 POST /Handlers/CreateTxtFile.ashx?fi ...
- MVC中处理表单提交的方式(使用html扩展方法+juqery插件)
这里使用扩展方法来扩展基于jquery.form 插件,实现基于异步的ajax的提交方式.