CSS中float
属性定义一个元素的浮动方式。
CSS中clear
属性定义指定元素的哪一侧不允许其他浮动元素。
CSS中的float
属性定义一个元素的浮动方式;其取值如下:
left
- 使元素向左浮动right
- 使元素向右浮动none
- 不对元素设置浮动(默认)
案例 float:left;
纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。
第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」
img { float: left; }
案例 float:right;
纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。
第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」
img { float: right; }
案例 float:none;
纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。
第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」
img { float: none; }
CSS中的clear
属性定义指定元素的哪一侧不允许其他浮动元素。该属性取值如下:
none
- 这是默认取值,左右两侧都允许浮动元素的存在;left
- 元素左侧不允许浮动元素的存在;right
- 元素右侧不允许浮动元素的存在;both
- 元素左右两侧都不允许浮动元素的存在。clear属性最多的应用场景是,在连续使用完浮动元素后,想重新回到使用非浮动元素的状态下,随意搞个空的元素,设置其clear属性为both即可。
div { clear: both; }
经常会遇到浮动元素超出容器范围,那该怎么办呢?很简单,把外部容器设置上overflow:auto;
就ok啦~(不过这不是最佳的方法,不过可以先试试)
图片设置为float:right;后,超出元素范围:
把外部容器元素设置overflow:none;即可:
.clearfix { overflow: auto; }
上面的这种方式,并不是最佳的方式,有时会因为浏览器的问题,而显示出滚动条。而真正推荐的最佳实践方法是:在外部容器的结尾添加一个设置了clear:both
的空元素。(该元素的display属性要使用block或者table等)
<div> content ... <!-- 在外部容器的结尾 --> <div style="clear:both;"></div> </div>
但是每次都要手动在外部容器元素结尾添加一个这样的空元素,会比较麻烦,因此,这里就可以利用之前学的伪元素了,使用::after
结尾虚拟一个clear属性为both、display属性为block的空元素。
#clearfix::after { content: ""; clear: both; display: block; }
实现布局的方式很多,但万变不离其宗,贫道最推荐利用float的方式进行布局,除了上述的那些细节,还注意一下box-sizing属性使用border-box取值。
当元素的box-sizing属性使用border-box取值后,则会将padding内边距和border边框的粗细都计入元素的高度和宽度,从而更适合网页精准实现各类布局。box-sizing属性后续会深入介绍。
案例1
Box1
Box2
Box3
Box4
* { box-sizing: border-box; } .box { float: left; width: 25%; /* 具体比例可自由设计 */ }
案例2
案例3
纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。
呜呼,生平求一敌手而不可得,诚寂寥难堪也。
望汝早日到达无码胜有码的境界,吾不知何以到达此境界。但吾所知之,代码本无善恶,但写的代码有善恶之分;代码是用来创造体验的,而不是用来为了利益而什么代码都可以去写。底线至重也,此谓之道中之首也。凡不知底线者,以代码为恶者,甚以之洋洋得意者,吾必取之首级也。