03-行内、块、空元素的区别


谈谈我对 行内元素/块级元素/空元素 的区别的认识


之前一直很熟悉 在行内元素块级元素,后来听说竟然还有空元素一说,于是就赶紧总结一下,增长一下见识

先说说行内元素

行内元素又叫内联元素或者行内标签.

它的特点有

  • 设置宽高无效,只能由内容撑起来,即行内元素设置width,height属性无效.
  • 行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化.
  • 设置上下margin无效,左右margin有效
  • 设置上下padding无效,左右padding有效
  • 行内元素的margin和padding属性,水平方向的padding-left,padding-right,margin-left,margin-right都产生边距效果,但竖直方向的padding-top,padding-bottom,margin-top,margin-bottom却不会产生边距效果.
  • 行内元素对应于display:inline

常见的行内元素有:

span、em、i、b、strong、a、img、input、br、select、textarea、q、bdo、sub、sup...等等

块级元素

块级元素又叫块级标签

它的特点有

  • 能够设置宽高,即块级元素可以设置width,height属性.
  • 块级元素会独占一行,默认情况下,其宽度自动填满其父元素宽度.
  • 块级元素即使设置了宽度,仍然是独占一行
  • 块级元素可以设置margin和padding属性,即上下左右margin有效,上下左右padding有效
  • 块级元素对应于display:block

常见的块级元素有:

div、p、h1~h6、
ul、ol、li、
dl、dt、dd、
form、table、hr、
blockquote // 浏览器以缩进方式显示被引用的文本,通常定义一段长的文本引用、
address、menu、pre.....等等

空元素

这个我之前不了解,但了解了特性就很简单了,大家都看一看记住就行了

什么是 空元素?

没有内容的 HTML 元素被称为空元素。空元素是在开始标签关闭的。
<br>就是没有关闭标签的空元素(<br>标签定义换行)。
在 XHTML、XML 以及未来版本的 HTML 中,所有元素都必须被关闭

由于HTML元素的内容是开始标签结束标签之间的内容。
而某些 HTML 元素具有空内容。那些含有空内容的HTML元素,就是空元素。

简单的说就是:没有 HTML 内容的元素被称为空元素。空元素是在开始标签中关闭的。

空元素最显著的特点?

  • 没有HTML内容
  • 单标签,只有开始标签,没有结束标签

常见的空元素有哪些?

<br> //换行 
<input> //文本框等
<img>  //图片
<hr>  //分割线
...等等

空标签注意的地方?

<br />就是没有关闭标签的空元素(<br />标签定义换行)。
在开始标签中添加斜杠,比如 <br />,是关闭空元素的正确方法,HTML、XHTML 和 XML 都接受这种方式。
即使 <br>在所有浏览器中都是有效的,但使用 <br />其实是更长远的保障。

HTML 元素语法

  • HTML 元素以开始标签起始
  • HTML 元素以结束标签终止
  • 元素的内容是开始标签与结束标签之间的内容
  • 某些 HTML 元素具有空内容(empty content)
  • 空元素在开始标签中进行关闭(以开始标签的结束而结束)
  • 大多数 HTML 元素可拥有属性

HTML 提示:使用小写标签

HTML 标签对大小写不敏感<P> 等同于 <p>。许多网站都使用大写的 HTML 标签。
W3School 使用的是小写标签,因为万维网联盟(W3C)在 HTML 4 中推荐使用小写,而在未来 (X)HTML 版本中强制使用小写。

行内元素与块级元素的嵌套规则?

大多数 HTML 元素可以嵌套(可以包含其他 HTML 元素)。
HTML 文档由嵌套的 HTML 元素构成。

  • 块级元素可以嵌套内联元素或者某些块级元素
  • 内联元素只能嵌套内联元素,不能嵌套块级元素

比较典型的特例

  • a无所不能,但a不能嵌套它本身
  • p标签不能嵌套块级元素
  • h1~h6、p、dt标签:只能包含内联元素,不能再包含块级元素
  • li很强大,它可以包含div,甚至可以包含它的父元素ul或者ol

怎么改变元素的排列方式,通过设置display属性?

常见的属性值有:

diaplay: none 此元素不会被显示。
diaplay: block 此元素将显示为块级元素,此元素前后会带有换行符。
diaplay: inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
diaplay: inline-block 行内块元素。(CSS2.1 新增的值)
diaplay: list-item 此元素会作为列表显示。
diaplay: inherit 规定应该从父元素继承 display 属性的值。

可做了解,不做深入:


diaplay: run-in 此元素会根据上下文作为块级元素或内联元素显示。
diaplay: compact    CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
diaplay: marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
diaplay: table  此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
diaplay: inline-table   此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
diaplay: table-row-group    此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
diaplay: table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
diaplay: table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
diaplay: table-row  此元素会作为一个表格行显示(类似 <tr>)。
diaplay: table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
diaplay: table-column   此元素会作为一个单元格列显示(类似 <col>)
diaplay: table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
diaplay: table-caption  此元素会作为一个表格标题显示(类似 <caption>)

display: inline-block行内块元素的兼容性问题?

给元素设置display: inline-block属性,元素将变成行内块元素,结合盒子模型理解,该元素整体内联元素表现,但它的内容块状元素表现。

简单来说就是将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。

但是这个属性目前不是所有的浏览器都支持,只有Opera和Safari支持,FireFox3和IE8据说将会支持,Firefox2和IE使用特殊办法可以实现这种效果,下面就来探讨一下

在火狐浏览器上存在的问题

在Firefox2中有-moz-inline-stack和-moz-inline-box实现,但是这两个私有属性在某些情况下都会有异常,具体如下:
1、display:-moz-inline-stack
“当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或无法选取,需要通过position:relative还hack掉这个bug”--乌龙茶
2、display:-moz-inline-box
使用这一属性后,text-align就会出问题,必须使用Firefox的私有属性 -moz-box-align来解决
所以,建议不要使用-moz-inline-box,还是使用-moz-inline-stack

在IE浏览器上怎么实现的

在IE(以下IE8除外)下,如果对内联元素,比如a或span元素,使用inline-block属性是有效的,似乎IE是支持的,其实是触发了IE的layout,从而拥有了inline-block属性的表症。这样我们就有了一种在IE下实现display:inline-block效果的两种方法:

1、先用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(原理:这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display为inline或block,layout不会消失),代码如下:


div {display:inline-block;}
div {display:inline;}

2、直接让块元素设置为内联对象(display:inline),然后通过zoom:1触发块元素的layout,代码如下:
div {display:inline; zoom:1;}

怎么兼容所有浏览器?

那么为了能够让所有浏览器支持display:inline-block,综合一下,最终的实现代码如下(参考怿飞:模拟兼容性的 inline-block 属性):

display:inline-block; /*一方面Firefox3 beta、IE8 beta、Opera、Safari 支持,另一方面下触发IE下inline 元素的 hasLayout*/

display:-moz-inline-stack; /* Firefox 的私有属性,需要时还必须用到position:relative解决上面提到的bug */

zoom:1; /*同样是IE 下触发 hasLayout*/
*display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/

/*扩展一下一些其他可能用到的属性*/
text-indent:-9999px;
*text-indent:0;
font-size:0;
line-height:0; /* 如需隐藏文字,可用这四个属性 */
/*另外上面隐藏文字,还可以用更简化的方法:line-height:超级大值;font-size:0; */

overflow:hidden; /* 隐藏溢出的内容 */

vertical-align:middle; /* 行内垂直居中,针对 Opera 比较大的偏离 */

width:?px; /*?为任意非auto值*/
height:?px; /*?为任意非auto值*/
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容