CSS权威指南读书笔记-基本视觉格式化

2016-10-28  本文已影响0人  风色透明

基本框:

假设每个元素都会生成一个或多个矩形框,成为元素框
各元素中心有个内容区,内容区周围有内边距边框和外边距

包含块:

每个元素都相对于其包含块摆放,包含块是一个元素的“布局上下文”由最近的块级祖先框

块级元素

水平格式化

关键在于width影响的是内容区的宽度,而不是整个可见的元素框。
p{width:200px;padding:10px;margin:20px;}
可见元素框的宽度是220px=200px + padding-left:10px+padding-right:10px
整个元素框的宽度是260px=200px+20px+10px+10px+20px

*正常流中块级元素框的水平部分总和等于父元素的width *

水平属性7大属性

margin-left border-left padding-left width padding-right border-right margin-right
元素框与其父元素的width相同
width必须为auto或某种类型的非负值

使用auto
负外边距

由于7个水平属性总和要等于父元素的width,只要属性都是>=0的,元素就不会大于其父元素的内容区。

div{width:400px}
p.wide{margin-left:10px;width:auto;margin-right:-50px}
width的值为440px比父元素还宽,这样是合法的

百分数

width内边距和外边距设置为百分数,会应用相同的基本规则

替换元素

垂直格式化

垂直属性7个

同水平格式化属性,这7个属性必须等于元素包含块的height。往往是父元素的height值
依然是三个值可以是auto height margin-top margin-bottom

合并垂直外边距

垂直相邻外边距的合并,这种行为只应用于外边距,如果元素有内边距和边框,他们绝对不会合并
li{margin-top:10px;margin-bottom:15px}
这种情况下,相邻列表元素之间的距离是15px,而不是25px,因为相邻外边距会沿竖轴合并,如果相邻有多个外边距,也会出现合并

列表项

行内元素

行内替换元素

行内替换元素有固定的宽度和高,他不会改变行中任何元素的line-height值,包括替换元素本身,只会让行框的高度恰好能包含替换元素,会使用替换元素整体,包含内边距框和外边距来定义元素的行内框。

改变元素显示display

display:none|inline|block|inline-block|list-item|run-in|table|inline-table|table-row-group|table-header-group|……

***这种改变只是显式的改变元素的显示角色而不是本质,因此不能把一个段落真正的改变为行内元素,因此行内元素比如<a display="block">即使改变显示为块级元素,其仍然是行内元素,不能包含块级元素,比如<a style="display:block"></a><p>错误的包含关系</p></a>

行内块元素 display:inline-block

行内块元素作为一个行内框与其他元素的内容相关,他就像图像一样放在一个文本行中,实际上行内块元素会作为替换元素放在行中
行内块元素的地点默认位于文本行的基线上,内部没有行分割符

run-in元素

改变元素的display的值实际上是改变元素的生成框,如display:blcok 是生成块级框,而display:inline是生成行内框

上一篇 下一篇

猜你喜欢

热点阅读