CSS/块级元素与内联元素的深入理解
今天终于对html中的块级元素和行内元素有了一个较为理性的认识。首先w3c对于block和inline的解释为:
一、block的研究
通过w3c的解释,也就是说block(块级)元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱离了文档流)。下面来说说block元素默认宽度的问题。
1、没设置宽度:默认为浏览器可视区同宽(浏览器默认样式被重置后)。
看到的那条黄线实为一个未设置宽高的DIV,边框为1像素黄色实线,可以看出是布满整个屏幕的。
2、自身没设置宽度,但是父元素设置了宽度:
这个例子中,黄线为一个未设置宽度的P,其父元素是一个宽度为200px的DIV,在控制台中输出P的offsetWidth(offsetWidth=border+width+padding)属性为:200。也就是说一定程度上P是继承了DIV的宽度的。但也不完全是,因为打印出的P的宽度是加上了2px的边框宽度的,所以说子元素未设置宽度的话是会100%填充父元素的宽的,但是不会填充高度!
看下面一道例题:
已有HTML代码:<div class="a"><div class="b"></div></div>
如果应用了如下CSS:
.a{ width:200px; height:100px;}
.b{ padding:20%; background-color:red; } 问红色区域的大小为?width?height?
分析一下,因为.b是.a的子元素,而.b未设置宽度,我们通过刚才的研究得知,.b的宽度是完全填充.a的,这个宽度是包括边框(border)、边距(padding)在内的。也就是说我们可看到的.b的宽度仍为200px,不会因为加了padding而撑大!而高度则不然,为200*20%*2=80px。
[ 为什么用高度是用:宽度*padding百分比*2得出的呢?
根据w3c 对padding使用% 的定义知:子元素在的宽高都是根据父元素的宽度*百分比得出的。因为padding包括了上下左右四边,所以200*20%是上边距的值,再*2才是总的padding高度。]
所以本题的答案就呼之欲出了:width:200px;height:80px。(但未测试ie6下和混杂模式下的情况)
二、inline的研究
inline元素是可以在同一行显示多个的,直到浏览器窗口宽度不足以容纳才进行换行。我们来看看inline元素的宽高问题。
1、一个未设置宽高的span元素,加上1像素蓝色实线的显示效果是酱紫的:
2、给他的父亲加上50px的高度后是酱紫的:
1、2之间没有任何变化。
3、给他加上50px的高度后是酱紫的:
1、2、3显示是完全相同的。。
正常文档流下inline是不支持宽高设置的,所以例子中的span既不会继承父亲的宽高,自己设置的宽高也不能起作用。本身有的高度实为其默认的line-height的高度值。来看看给它加上padding的情况:
三、总结inline和block的区别
1、行内元素与块级元素直观上的区别
行内元素会在一条直线上排列,都是同一行的,水平方向排列
块级元素各占据一行,垂直方向排列。块级元素从新行开始结束接着一个断行。
2、块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素。
3、行内元素与块级元素属性的不同,主要是盒模型属性上。行内元素设置width无效,height无效(可以设置line-height),margin上下无效,padding上无效。
四、常见的inline元素和block元素
- 块级元素
- 行内元素
- 可变元素
CSS/块级元素与内联元素的深入理解的更多相关文章
- Code笔记之:CSS块级元素、内联元素概念
文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不 ...
- CSS文档流与块级元素和内联元素
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...
- CSS文档流与块级元素和内联元素(文档)
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不 少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指 南> ...
- CSS块级元素、内联元素概念
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...
- CSS的块级元素和内联元素的概念
三生有幸,偶然之下知道了<CSS世界>这本书,让我产生了探究 CSS 的想法. 这里对 CSS 中的块级元素和内联元素的概念做一个简单的整理. 可能对于我们前端开发人员来讲,一般接触到的元 ...
- css中块级元素、内联元素(行内元素、内嵌元素)
Block element 块级元素 顾名思义就是以块显示的元素,高度宽度都是可以设置的.比如我们常用 的<div>.<p>.<ul>默认状态下都是属于块级元 ...
- CSS的块级元素和内联元素,以及float
说明:之前有一点搞错了,就是float其实是浮动起来,其它元素会位于它的底层. 最近在系统地学习HTML5,感觉补上了好多缺失的知识. 例如: 锚点定位其实可以通过 id 来实现: CSS 使用 !i ...
- CSS 块级元素、内联元素概念
p.h1.或div等元素常常称为块级元素,这些元素显示为一块内容:Strong.span等元素称为行内元素,它们的内容显示在行中,即“行内框”.(可以使用display=block将行内元素转换成块元 ...
- CSS文档流、块级元素、内联元素
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...
- CSS块级元素、内联元素概念[转]
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...
随机推荐
- codeforces 629BFar Relative’s Problem
B. Far Relative’s Problem time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- HDU 1828 Picture (线段树+扫描线)(周长并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 给你n个矩形,让你求出总的周长. 类似面积并,面积并是扫描一次,周长并是扫描了两次,x轴一次,y ...
- java 关键字
Keywords transient 序列化保存时,排除不想保存的字段时候用这个关键字修饰. final final修饰的类不能被继承,final修饰的方法不能被重写,fina ...
- PAC(Proxy Auto Config)代理自动配置文件的编写
Proxy Auto Config文件格式说明 PAC文件实际上是一个Script, 通过PAC我们可以让系统根据情况判断使用哪一个Proxy来访问目标网址, 这样做的好处: 分散Proxy的流量,避 ...
- MySQL select into outfile用法
select into outfile用法 SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINAT ...
- OpenNebula 创建虚拟机失败(未解决)
Tue Jul :: [ReM][D]: Req: UID: AclInfo invoked Tue Jul :: [ReM][D]: Req: UID: AclInfo result SUCCESS ...
- 从gitbook将书籍导入到github中
gitbook自己的导出工具经常出问题,可直接使用git. 从gitbook中clone下书 $ git clone https://git.gitbook.com/username/name_of_ ...
- swift 个人笔记
swift是现代编程语言的综合体,灵活而强大. //http://www.cocoachina.com/newbie/basic/2014/0604/8675.html //语法var 变量,let ...
- securecrt 连接vmware ubuntu
折腾了好几天,我只想说shit,吃一堑长一智,和大家分享. SecureCRT连接Linux是使用Ubuntu下的SSH服务,ssh包括客户端和服务端即openssh-client,openssh-s ...
- dubbo-RPC学习(一)自定义配置
在dubbo的基础上实现异步调用的时候,因为需要支持回调的“重试间隔时间”与“重试次数”等属性.因此,需要扩展dubbo.xsd,需要添加新的属性来支持这种扩展. dubbo 的xsd是基于sprin ...