肉渣教程

CSS Float浮动

上一节 下一节

CSS中float属性定义一个元素的浮动方式。 CSS中clear属性定义指定元素的哪一侧不允许其他浮动元素


float属性

CSS中的float属性定义一个元素的浮动方式;其取值如下:

  • left - 使元素向左浮动
  • right - 使元素向右浮动
  • none - 不对元素设置浮动(默认)


案例 float:left;

纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。

bash_logo第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」

img {
    float: left;
}

运行一下


案例 float:right;

纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。

bash_logo第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」

img {
    float: right;
}

运行一下


案例 float:none;

纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。

bash_logo第一柄剑长四尺,锋利无比,剑下石片下写着:「凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。」第二片石片上没有剑,下面写着:「紫薇软剑,三十岁前所用,误伤义士不祥,悔恨无已,乃弃之深谷。」剑魔独孤求败的第三把武器:「重剑无锋,大巧不工。四十岁前恃之横行天下。」外表黑黝,剑身深黑之中隐隐透出红光,三尺多长,共重八八六十四斤,两边剑锋都是钝口,剑尖圆圆的似是个半球。第四个阶段才是渐入化境,第四柄木剑,石片上文字道:「四十岁之后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。」

img {
    float: none;
}

运行一下

Clear属性

CSS中的clear属性定义指定元素的哪一侧不允许其他浮动元素。该属性取值如下:

  • none - 这是默认取值,左右两侧都允许浮动元素的存在;
  • left - 元素左侧不允许浮动元素的存在;
  • right - 元素右侧不允许浮动元素的存在;
  • both - 元素左右两侧都不允许浮动元素的存在。

clear属性最多的应用场景是,在连续使用完浮动元素后,想重新回到使用非浮动元素的状态下,随意搞个空的元素,设置其clear属性为both即可。

div {
    clear: both;
}

运行一下

浮动元素超出容器范围咋办呢?

经常会遇到浮动元素超出容器范围,那该怎么办呢?很简单,把外部容器设置上overflow:auto;就ok啦~(不过这不是最佳的方法,不过可以先试试)

图片设置为float:right;后,超出元素范围:

bash_logo图片设置为float:right后,超出元素范围

把外部容器元素设置overflow:none;即可:

外部容器设置overflow:none;就ok啦bash_logo
.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来实现各种布局

实现布局的方式很多,但万变不离其宗,贫道最推荐利用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

剑冢

  • 长剑利空
  • 软剑紫薇
  • 重剑无锋
  • 无剑胜有剑

独孤求败

纵横江湖三十余载,杀尽仇寇,败尽英雄,天下更无敌手,无可奈何,惟隐居深谷,以雕为友。

呜呼,生平求一敌手而不可得,诚寂寥难堪也。

运行一下


望汝早日到达无码胜有码的境界,吾不知何以到达此境界。但吾所知之,代码本无善恶,但写的代码有善恶之分;代码是用来创造体验的,而不是用来为了利益而什么代码都可以去写。底线至重也,此谓之道中之首也。凡不知底线者,以代码为恶者,甚以之洋洋得意者,吾必取之首级也


CSS Float浮动

上一节 下一节