资讯专栏INFORMATION COLUMN

浮动元素

fuchenxuan / 3427人阅读

摘要:对于的清除浮动,一定要牢记这个规则只能影响使用清除的元素本身,不能影响其他元素。本例中的左边有浮动元素,因此只要在的样式中使用来指定元素左边不允许出现浮动元素,这样就被迫下移一行。对于右浮动也亦是如此。

块级元素与行内元素,怎么用CSS控制它们、以及如何合理的使用它们

它们的定义
1.块级元素:每个块级元素默认占一行高度,若有块级元素则同行无法再添加其他元素(float浮动除外)
特点:
高度行高以及外边距内边距都可控制
宽度默认100%
可以容纳内联元素及块元素

2.行内元素:可以和其他元素都在一行上.
特点:
宽度就是它的文本或图片的宽度,不可改变
内联元素只能容纳文本或者其他的内联元素
设置宽度width无效
设置高度height无效,可通过line-height来设置
设置margin只有左右有效,上下无效
设置padding只有左右padding有效,上下无效

3.行内块状元素:综合了行内元素与块状元素的特性,但是各有取舍
特点:
不自动换行
能够识别宽高
默认排列方式从左到右

4.块级元素有哪些:
div | dl(定义列表) | h1(h开头系列) | hr | menu | ol | p | table | ul

5.行内元素有哪些:
a | b | br | em | i | img | input | label | select | span | strong
sub | textarea | u

6.行内块状元素有哪些:
button | del | iframe | ins | map | object

浮动元素:怎么使用它们、它们有什么问题以及怎么解决这些问题通俗讲解

1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也是传说中的流

由此可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后面,显然标准流已
经法满足需求,这就要用到浮动
浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。
假设上图中的div2浮动,那么它将脱离标准流,但是div1,div3,div4仍然在标准流当中所以div3会自动向上移动,占据div2的位置,重新组成一个流。

从图中可以看出,div2不再属于标准流,div3自动上移顶替div2的位置,div1,div3,div4依次排列,成为新的流,又因为浮动是漂浮在标准流上面的,所以div2挡住了一部分的div3,所以div3看起来变矮了。

如果把div2右浮动,我们看的是这个效果:

下面我们把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就被迫下移一行。
对于右浮动也亦是如此。

参考:http://www.cnblogs.com/iyangy...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/53643.html

相关文章

  • 【CSS学习】--- float浮动属性

    摘要:浮动框旁边的行框被缩短,从而给浮动框留出空间,行框围绕浮动框。不浮动的浮动的三浮动之于块浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。  一、前言     浮动元素以脱离标准流的方式来实现元素的向左或向右浮动,并且浮动元素还是在原来的行上进行浮动的。float浮动属性的四个参数:left:元素向左浮动;right:元素向右浮动;none:默认值,元素不浮动;i...

    TigerChain 评论0 收藏0
  • 关于浮动与清除浮动,你应该知道的

    摘要:清除浮动并不是说让浮动元素回到文档流清除浮动只会改变改元素自身的位置,并且只针对排在该元素前面的元素。 我在做页面布局的时候,多多少少总会受到来自浮动的困扰,因此专门通过实践来总结一下浮动与清除浮动。 首先总结几个基础的概念: 浮动:设置浮动的元素会脱离文档流,不会影响块元素的布局,但是会影响内联元素的排列[通常是文本]; 文档流:在文档流中,块元素会单个元素独占一行 接下来我们通过实...

    mengbo 评论0 收藏0
  • 关于浮动与清除浮动,你应该知道的

    摘要:清除浮动并不是说让浮动元素回到文档流清除浮动只会改变改元素自身的位置,并且只针对排在该元素前面的元素。 我在做页面布局的时候,多多少少总会受到来自浮动的困扰,因此专门通过实践来总结一下浮动与清除浮动。 首先总结几个基础的概念: 浮动:设置浮动的元素会脱离文档流,不会影响块元素的布局,但是会影响内联元素的排列[通常是文本]; 文档流:在文档流中,块元素会单个元素独占一行 接下来我们通过实...

    masturbator 评论0 收藏0
  • 关于浮动与清除浮动,你应该知道的

    摘要:清除浮动并不是说让浮动元素回到文档流清除浮动只会改变改元素自身的位置,并且只针对排在该元素前面的元素。 我在做页面布局的时候,多多少少总会受到来自浮动的困扰,因此专门通过实践来总结一下浮动与清除浮动。 首先总结几个基础的概念: 浮动:设置浮动的元素会脱离文档流,不会影响块元素的布局,但是会影响内联元素的排列[通常是文本]; 文档流:在文档流中,块元素会单个元素独占一行 接下来我们通过实...

    Donald 评论0 收藏0
  • 关于浮动与清除浮动,你应该知道的

    摘要:清除浮动并不是说让浮动元素回到文档流清除浮动只会改变改元素自身的位置,并且只针对排在该元素前面的元素。 我在做页面布局的时候,多多少少总会受到来自浮动的困扰,因此专门通过实践来总结一下浮动与清除浮动。 首先总结几个基础的概念: 浮动:设置浮动的元素会脱离文档流,不会影响块元素的布局,但是会影响内联元素的排列[通常是文本]; 文档流:在文档流中,块元素会单个元素独占一行 接下来我们通过实...

    ideaa 评论0 收藏0

发表评论

0条评论

fuchenxuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<