块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签P
。form
这个块元素比较特殊,它只能用来容纳其他块元素。
如果没有css
的作用,块元素会顺序以每次另起一行的方式一直往下排。而有了css
以后,我们可以改变这种html
的默认布局模式,把块元素摆放到你想要 的位置上去。而不是每次都愚蠢的另起一行。需要指出的是,table
标签也是块元素的一种,table based layout
和css based layout
从一般使用者(不包括视力障碍者、盲人等)的角度来看这两种布局,除了页面载入速度的差别外,没有其他的差别。但是如果普通使用者不经意点了 查看页面源代码按钮后,两者所表现出来的差异就非常大了。基于良好重构理念设计的css
布局页面源码,至少也能让没有web
开发经验的普通使用者把内容快 速的读懂。从这个角度来说,css layout code
应该有更好的美学体验吧。
你能够把块容器元素div
想象成一个个box
,或者如果你玩过剪贴文载的话,那就更加容易理解了。我们先把需要的文章从各种报纸、杂志总剪 下来。每块剪下来的内容就是一个block
。然后我们把这些纸块按照自己的排版意图,用胶水重新贴到一张空白的新纸上。这样就形成了你自己独特的文摘快报 了。作为一种技术的延伸,网页布局设计也遵循了同样的模式。.
内联元素inline element
一般都是基于语义级semantic
的基本元素。内联元素只能容纳文本或者其他内联元素,常见内联元素 a
。
块元素block element
和内联元素inline element
都是html
规范中的概念。块元素和内联元素的基本差异是块元素一般都从新行开始。而当加入了css
控制以后,块元素和内联元素的这种属 性差异就不成为差异了。比如,我们完全可以把内联元素cite
加上display:block
这样的属性,让他也有每次都从新行开始的属性。
可变元素的基本概念就是他需要根据上下文关系确定该元素是块元素或者内联元素。可变元素还是属于上述两种元素类别,一旦上下文关系确定了他的类别,他就要遵循块元素或者内联元素的规则限制。大致的元素分类见全文。
关于inline element
的中文叫法,有多种内联元素、内嵌元素、行内元素、直进式元素。基本上没有统一的翻译,爱怎么叫怎么叫吧。另外提到内联元素,我们会想到有个display
的属性是display:inline
;这个属性能够修复著名的IE双倍浮动边界问题。
关于行内元素和块状元素的说明
根据
CSS
规范的规定,每一个网页元素都有一个display
属性,用于确定该元素的类型,每一个元素都有默认的display
属性值,比如div
元素,它的默认display
属性值为block
,成为“块级”元素block-level
;而span
元素的默认display
属性值为inline
,称为“行内”元素。div
这样的块级元素,就会自动占据一定矩形空间,可以通过设置高度、宽度、内外边距等属性,来调整的这个矩形的样子;与之相反,像span
、a
这样的行内元素,则没有自己的独立空间,它是依附于其他块级元素存在的,因此,对行内元素设置高度、宽度、内外边距等属性,都是无效的。
行内、块状元素区别:
- 块级元素会独占一行,其宽度自动填满其父元素宽度
行内元素不会独占一行,相邻的行内元素会排列在同一行里,知道一行排不下,才会换行,其宽度随元素的内容而变化 - 一般情况下,块级元素可以设置 width, height属性,行内元素设置width, height无效 (注意:块级元素即使设置了宽度,仍然是独占一行的)
- 块级元素可以设置
margin
和padding
. 行内元素的水平方向的padding-left
,padding-right
,margin-left
,margin-right
都产生边距效果,但是竖直方向的padding-top
,padding-bottom
,margin-top
,margin-bottom
都不会产生边距效果。(水平方向有效,竖直方向无效)
块元素block element
- address
- 地址
- blockquote
- 块引用
- center
- 举中对齐块
- dir
- 目录列表
- div
- 常用块级容易,也是css layout的主要标签
- dl
- 定义列表
- ieldset - form
控制组
- form
- 交互表单
- h1
- 大标题
- h2
- 副标题
- h3
- 3级标题
- h4
- 4级标题
- h5
- 5级标题
- h6
- 6级标题
- hr
- 水平分隔线
- isindex
- 提示用户输入单行文本
- menu
- 菜单列表
- noframes - frames
可选内容,(对于不支持frame的浏览器显示此区块内容)
- noscript
- 可选脚本内容(对于不支持script的浏览器显示此内容)
- ol
- 排序表单
- p
- 段落
- pre
- 格式化文本
- table
- 表格
- ul
- 非排序列表
内联元素(inline element)
- a
- 锚点
- abbr
- 缩写
- acronym
- 首字
- b
- 粗体(不推荐)
- bdo
- 右向左输出
- big
- 大字体
- br
- 换行
- cite
- 引用
- code
- 计算机代码(在引用源码的时候需要)
- dfn
- 定义字段
- em
- 强调
- font
- 字体设定(不推荐)
- i
- 斜体
- img
- 图片
- input
- 输入框
- kbd
- 定义键盘文本
- label
- 表格标签
- q
- 短引用
- s
- 中划线(不推荐)
- samp
- 定义范例计算机代码
- select
- 项目选择
- small
- 小字体文本
- span
- 常用内联容器,定义文本内区块
- strike
- 中划线
- strong
- 粗体强调
- sub
- 下标
- sup
- 上标
- textarea
- 多行文本输入框
- tt
- 电传文本
- u
- 下划线
- var
- 定义变量
可变元素
可变元素为根据上下文语境决定该元素为块元素或者内联元素。
- applet
- java applet
- button
- 按钮
- del
- 删除文本
- iframe
- 元素会创建包含另外一个文档的内联框架(即行内框架)。
- ins
- 插入的文本
- map
- 图片区块(map)
- object
- object对象
- script
- 客户端脚本