美文网首页html/cssWeb前端之路
css的浮动问题的解决方法

css的浮动问题的解决方法

作者: 土豪码农 | 来源:发表于2017-03-10 12:53 被阅读99次

浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及 width height

性。会导致盒子高度的塌陷.

清除浮动是一个前端开发人员必须掌握的技巧

1.固定高度法


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        /*可以为父标签设定一个高度, 这里就为父元素设置了高度防止了浮动影响和塌陷的问题*/
        #box1 {
            height: 100px;
        }
        #box1 div {
            float: left;
            width: 100px;
            background: red;
            height: 100px;
        }
        #box2 {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background: yellow;
        }
    </style>
</head>
<body>
<div id="box1">
    <div></div>
</div>
<div id="box2"></div>
</body>
</html>

2外墙法

在两个盒子之间防止一个div,设置clear属性为both;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        #box1 div {
            float: left;
            width: 100px;
            background: red;
            height: 100px;
        }
        /*这是外墙*/
        #wall{ 
            height: 0;
            clear: both;
        }
        #box2 {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background: yellow;
        }
    </style>
</head>
<body>
<div id="box1">
    <div></div>
</div>
<div id="wall"></div>
<div id="box2"></div>
</body>
</html>

但是有个问题,会导致上面的盒子下外边距失效,要设外边距只能通过下面的盒子去设定

3内墙法

和外墙法差不多,只是在第一个盒子的尾部放置一个div,设置清除浮动的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        #box1>#float {
            float: left;
            width: 100px;
            background: red;
            height: 100px;
        }
        #wall{
            height: 0;
            clear: both;
        }
        #box2 {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background: yellow;
        }
    </style>
</head>
<body>
<div id="box1">
    <div id="float"></div>
    <div id="wall"></div>
</div>
<div id="box2"></div>
</body>
</html>

4overflow 清除法
在父元素设置一个overflow为hidden或者auto属性就都以.;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        #box1 {
            overflow: hidden; /*这里设置了overflow就会防止因为盒子浮动*/
        }
        #box1 #float {
            float: left;
            width: 100px;
            background: red;
            height: 100px;
        }
        #box2 {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background: yellow;
        }
    </style>
</head>
<body>
<div id="box1">
    <div id="float"></div>
</div>
<div id="box2"></div>
</body>
</html>

这个方法很简单,也是我比较喜欢用的一种办法

5通过css3的伪类选择器添加一个外墙

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        #box1::after {
            display:block;
            clear:both;
            content:"";
            visibility:hidden;
            height:0
        }
        #box1 #float {
            float: left;
            width: 100px;
            background: red;
            height: 100px;
        }
        #box2 {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background: yellow;
        }
    </style>
</head>
<body>
<div id="box1">
    <div id="float"></div>
</div>
<div id="box2"></div>
<script>
</script>
</body>
</html>

这个比较常用,而且兼容性也不错

6还有一个是5方法的加强版

#box1::after {
            clear:both;
            content:"";
            display:table;
        }

相关文章

  • CSS定位相关知识点

    参考文档 《----css样式---------浮动带来的影响与解决方法---------------》 CSS ...

  • 知识点目录

    数据传输加密方式 div+css命名规则和技巧 css的浮动问题的解决方法 webpack 常用css记录 es6...

  • css的浮动问题的解决方法

    浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及 width height 性。会导致盒子...

  • CSS 浮动布局,解决清除浮动的问题

    仅供学习,转载请注明出处 浮动特性 1、浮动元素有左浮动(float:left)和右浮动(float:right)...

  • CSS浮动塌陷问题

    问题描述:当我们给子元素设置了浮动float:left或float:right或两者,但是没有给父元素设置高度时,...

  • 一篇文章带你了解CSS clear both清除浮动

    一、前言 CSS clear both清除产生浮动 ,使用了css float浮动会产生css浮动,这个时候就需要...

  • CSS浮动、定位

    这几天有空,学习了CSS浮动和定位,和大家分享几个问题,希望对学习CSS浮动和定位的同学有所帮助。 一、文档流的概...

  • css移动端的兼容性问题 (适配问题)

    css移动端的兼容性问题 (适配问题) 一、浮动问题简述:我们在平时切页面时,经常会出现用完浮动(float),忘...

  • Test10

    引用文章: 那些年我们一起清除过的浮动 CSS浮动float详解 Clear Float CSS float浮动的...

  • CSS浮动

    简介其实,CSS就三个大模块: 盒子模型 、 浮动 、 定位,其余的都是细节。这篇讲CSS浮动,在CSS中浮动主...

网友评论

    本文标题:css的浮动问题的解决方法

    本文链接:https://www.haomeiwen.com/subject/xgbngttx.html