css浮动

浮动
    1、浮动元素有左浮动(float:left)和右浮动(float:right)两种
    2、浮动的元素会向左或右浮动,碰到父元素边界、其它元素才停下来
    3、相邻浮动的元素块可以并在一行,超出父级宽度就换行
    4、浮动让行内元素或块元素自动转化为行内块元素(此时不会有行内块元素的间隙问题)
    5、浮动元素后面没有浮动元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果
    6、父元素如果没有设置尺寸(一般不设置高度),父元素内整体浮动的元素无法撑开父元素,父元素需要清除浮动
    7、浮动元素之间没有垂直margin合并




<!-- 浮动布局 用列表制作菜单-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

    <style type="text/css">
        .menu{
            width:694px;
            height: 50px;
            /*background-color: yellow;*/
            
            /*去掉li标签前面的小圆点*/
            list-style:none;
            
            /*ul标签默认有margin和padding值,重新设置覆盖掉默认的*/
            margin:50px auto 0;
            padding:0;
    /*        font-size: 0;*/

        }

        .menu li{
            width:98px;
            height:48px;
            background-color: #fff;
            border:1px gold solid;
            display: inline-block;
        /*    font-size: 16px; */
            float:left;
            margin-left: -1px;
            

        }
        .menu li a{
            /*把a变成块元素,设置尺寸,增大鼠标相应区域*/
            display: block;
            width:98px;
            height:48px;
            text-align: center;
            line-height:48px;
            text-decoration: none;
            color:pink;
        }
        .menu li a:hover{
            background-color:#f00;
        }
        
    </style>
</head>

<body>
     <!-- ul.menu>(li{公司简介})*7 -->
     <ul class="menu">
         <li><a href="#">公司简介</a></li>
         <li><a href="#">公司动态</a></li>
         <li><a href="#">公司简介</a></li>
         <li><a href="#">公司简介</a></li>
         <li><a href="#">公司简介</a></li>
         <li><a href="#">公司简介</a></li>
         <li><a href="#">公司简介</a></li>
     </ul>
</body>
</html>


清除浮动方法:
    1、父级增加属性overflow:hidden
    2、在最后一个子元素后面加一个空的div,给它样式属性style="clear:both"(不推荐)
    3、使用成熟的清除浮动样式类,clearfix
        .clearfix:after,.clearfix:before{content:"";display:table;}
        .clearfix:after{clear:both;}
        .clearfix{zoom:1;}
            这三句把解决margin-top塌陷和清除浮动写到一起了(前两句),最后一句是针对非标准浏览器(ie)可能不认after、before标签。

            
            解决margin-top塌陷:

            .clearfix:before{
            content="";
            display:table;
        }


            清除浮动:

            .clearfix:after{
            content="";
            display:table;
            clear:both;
        }

例子:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .list{
            width:210px;
    /*        height: 400px;*/
            border:1px solid #000;
            list-style: none;
            margin:50px auto 0;
            padding: 0;
            /*第一种清除浮动方法:*/
            /*overflow: hidden;*/

        }
        .list li{
            width:50px;
            height: 50px;
            background-color: gold;
            margin:10px;
            float: left;
        }

        /*第三种清除浮动方法:*/
        /*.clearfix:after{
            content: "";
            display: table;
            clear:both;
        }*/
        /*清除浮动和解决margin-top塌陷:*/
        .clearfix:before,.clearfix:after{
            content: "";
            display: table;
        }
        .clearfix:after{
            clear:both;
        }
        .clearfix{zoom:1;}

        
    </style>


</head>
<body>
    <!-- ul>li{$}*7 -->
    <ul class="list clearfix">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <!-- 第二种清除浮动方法: -->
        <!-- <div style="clear:both"></div>     -->
    </ul>
</body>
</html>

 

posted @ 2019-02-22 15:52  greenfan  阅读(86)  评论(0)    收藏  举报