转自:http://gkecenter./blog/static/18138030591745234195/
一.两种类型
HTML中的大部分元素都可分为两种类型:块级元素和行级元素。这些元素的类型是通过文档类型定义(DTD)来指明。块级元素会从新的一行出现,行 级元素则不会。块级元素的前后都会有插入的断行,所以如果不用CSS则没法让两个块级元素并列在一起。
二.块级元素
块级元素一般作为容器出现,用来组织结构,但并不全是如此。有些块级元素,如
只能包含块级元素。其他的块级元素则可以包含 行级元素如
.也有一些则既可以包含块级,也可以包含行级元素。如,
,
三.行级元素
行级元素一般是包含语义意义的元素。行级元素一般只能包含文字或其他行级元素。行级元素不能被应用下列属性:
width
height
max-width
max-height
min-width
min-height
如果你想改变这些属性,应该应用给它的属于块级元素的父元素。
四.Spring Brother
有些元素既可以是块级元素,也能成为行级元素。例如
information on author
long quotation
push button
table caption
definition description
deleted text
generic language/style container
definition list
definition term
form control group
interactive form
heading
heading
heading
heading
heading
heading
horizontal rule
inline subwindow
inserted text
fieldset legend
list item
client-side image map
alternate content container for non frame-based rendering
alternate content container for non script-based rendering
generic embedded object
ordered list
paragraph
preformatted text
table
table body
table data cell
table footer
table header cell
table header
table row
unordered list
行内元素
anchor
abbreviated form
acronym
bold text style
I18N BiDi over-ride
large text style
forced line break
push button
citation
computer code fragment
deleted text
instance definition
emphasis
italic text style
inline subwindow
Embedded image
form control
inserted text
text to be entered by the user
form field label text
client-side image map
generic embedded object
short inline quotation
sample program output, scripts, etc.
option selector
small text style
generic language/style container
strong emphasis
subscript
superscript
multi-line text field
teletype or monospaced text style
instance of a variable or program argument
大家可以发现,上面有些元素有重复,为什么呢,是因为HTML中存在可变元素。可变元素为根据上下文语境决定该元素为块元素或者内联元素。
◎ applet - java applet
◎ button - 按钮
◎ del - 删除文本
◎ iframe - inline frame
◎ ins - 插入的文本
◎ map - 图片区块(map)
◎ object - object对象(当浏览器不支持时,则显示为块级)
◎ script - 客户端脚本
但是就我个人而言,我更愿意把它们当做行内元素,因为一般情况下,不会解释为块级元素
二.行内元素与块级元素有什么不同?
块级元素和行内元素的区别是,块级元素会占一行显示,而行内元素可以在一行并排显示。
通过样式控制,它们可以相互转换。
1.尺寸-块级元素和行内元素之间的一个重要的不同点
设置宽度width 无效。
设置高度height 无效,可以通过line-height来设置。
设置margin 只有左右margin有效,上下无效。
设置padding 只有左右padding有效,上下则无效。
注:这里说的无效, 是指,它对其它元素的排列没有影响。也就是说,对于设置的margin,padding行内元素文档流里的上下元素来说,他们的间距不会因为上下margin或者上下padding而产生间距。但是就他本身而言,对于上下margin与padding是有效的。
上面写的有点绕了,我也是尽量表达。请参照下图,如果还是不清楚,请动手自己写一下,就能明白了。
2.text-align属性是两者表现的又以不同之处
这个特性描述了如何使一个块元素的行内内容对齐。
注意一点,w3c标准里说这个属性是用来对齐行内内容的,所以,不应该对块级内容起作用。
解释一下,行内内容是说由行内元素组成的内容,
这样,我们对这个特性的认识应该就清楚了。但是,问题来了,虽然标准里这么规定,那么是不是所有浏览器都遵守呢?答案是否定的。啊? 又是IE!!
IE6/7及IE8混杂模式中,text- align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。