它们的定义
1.块级元素:每一个块级元素默认占一行高度,如有块级元素则同行没法再添加其余元素(float浮动除外)
特色:
高度行高以及外边距内边距均可控制
宽度默认100%
能够容纳内联元素及块元素html
2.行内元素:能够和其余元素都在一行上.
特色:
宽度就是它的文本或图片的宽度,不可改变
内联元素只能容纳文本或者其余的内联元素
设置宽度width无效
设置高度height无效,可经过line-height来设置
设置margin只有左右有效,上下无效
设置padding只有左右padding有效,上下无效spa
3.行内块状元素:综合了行内元素与块状元素的特性,可是各有取舍
特色:
不自动换行
可以识别宽高
默认排列方式从左到右3d
4.块级元素有哪些:
div | dl(定义列表) | h1(h开头系列) | hr | menu | ol | p | table | ul htm
5.行内元素有哪些:
a | b | br | em | i | img | input | label | select | span | strong
sub | textarea | u对象
6.行内块状元素有哪些:
button | del | iframe | ins | map | objectblog
1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也是传说中的流图片
由此能够看出,即便div1的宽度很小,页面中一行能够容下div1和div2,div2也不会排在div1后面,显然标准流已
经法知足需求,这就要用到浮动
浮动能够理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。
假设上图中的div2浮动,那么它将脱离标准流,可是div1,div3,div4仍然在标准流当中因此div3会自动向上移动,占据div2的位置,从新组成一个流。ip
从图中能够看出,div2再也不属于标准流,div3自动上移顶替div2的位置,div1,div3,div4依次排列,成为新的流,又由于浮动是漂浮在标准流上面的,因此div2挡住了一部分的div3,因此div3看起来变矮了。get
若是把div2右浮动,咱们看的是这个效果:input
下面咱们把div2和div3都加上左浮动,效果如图:
同理,因为div2,div3浮动以后,div3会跟随在div2以后,可是从以上的每一个例子中,div2都是浮动的,可是却没有跟在div1以后,所以能够获得一个重要结论:
div元素A是浮动的,若是A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下的状况,则会被挤到下一行);若是A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部是和上一个元素的底部对齐。
假如咱们把div2,和div4左浮动,效果图以下:
结论依然是:div2,div4浮动,脱离了标准流,所以div3将会自动上移,与div1组成标准流。div2发现上一个元素是标准流的元素,所以div2相对垂直位置不变,与div1底部对刘。div4发现上一个元素div3也是标准流中的元素,所以div4的顶部与div3的底部对齐。
恭喜你已经掌握了添加浮动.
如今咱们来聊一下清除浮动,有上边的基础清除浮动很是理解
语法:clear: none | left | right | both
none:容许两边都有能够有浮动对象
left:不容许左边有浮动对象
right:不容许右边有浮动对象
both:不容许有浮动对象
根据上边的基础,假如页面中只有两个元素div1,div2,他们都是左浮动,场景以下:
这时候使用清除浮动,根据官方定义,读者可能会尝试这样写,在div1中的样式中添加clear:right,理解为不容许div1的右边有浮动元素,因为div2是浮动元素,所以会自动下移一行来知足规则。
其实这种理解是不正确的,这样作没有任何效果。
对于CSS的清除浮动(clear),必定要牢记:这个规则只能影响使用清除的元素自己,不能影响其余元素。
怎么理解呢?就拿上边的例子来讲,咱们是想让div2移动,但咱们倒是在div1元素的CSS样式中使用了清除浮动,试图经过清除div1右边的浮动元素 (clear:right;)来强迫div2下移,这是不可行的,由于这个清除浮动是在div1中调用的,它只能影响div1,不能影响div2。
根据定论,要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,所以只要在div2的CSS样式中使用clear:left;来指定div2元素左边不容许出现浮动元素,这样div2就被迫下移一行。
对于右浮动也亦是如此。