07-CSS浮动初体验

问题:在页面上有两个盒子,一个盒子靠着屏幕左侧显示另一个盒子靠着屏幕的右侧显示?
作用:解决一行中显示多个盒子的问题(并且这些盒子的位置是可控的)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
      *{
        margin:0px;
        padding: 0px;
      }
      div{
        width: 200px;
        height:200px;
      }
      .one{

         background: red;
         float: left;
      }
      .two{
          background: blue;
          float: right;
      }

    </style>
</head>
<body>
    <div class="one"></div>
    <div class="two"></div>
</body>
</html>

浮动的代码:

floatleft
floatright

浮动的特点:

标准流:就是浏览器默认摆放盒子的标准。
1. 浮动的元素会脱离标准流。
如果一个元素按照正常的标准流来显示,会在html中所属的位置占位,后面的元素会紧跟着它。但是浮动脱了标准流,将来在看到浮动的元素之后,不能以正常的标准流来进行判断。(在标准流中不占位置了,它是在标准流之上)
2. 浮动以后的元素会覆盖在标准流元素之上。
3.浮动的规则:浮动找浮动,不浮动找不浮动
不浮动就是标准流,浮动找浮动的意思 只有写在同一个结构下才会浮动找浮动。

  <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
        }
        .one {
            background: red;
            float: left;
        }
        .two {
            background: blue;
            float: left;
        }
        .three {
            background: pink;
            float: left;
        }
    </style>
</head>
<body>
    <div class="one"></div>
    <div class="two"></div>
    <div class="three"></div>
    <div style="background: yellow;"></div>
    <div style="background: deeppink;"></div>
    <div style="background: skyblue"></div>
</body>
</html>

这里写图片描述
4.浮动显示的位置和不浮动之前的位置是对应的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
      *{
        margin:0px;
        padding: 0px;
      }
      div{
        width: 200px;
        height:200px;
      }
      .one{

         background: red;
         float: right;
      }
      .two{
          background: blue;
           float: right;
      }
       .three{
        background: pink;
         float: right;
       }
    </style>
</head>
<body>
    <div class="one"></div>
    <div class="two"></div>
    <div class="three"></div>
</body>
</html>

这里写图片描述
5.浮动的元素只会影响下面的元素不会影响上面的元素
6.浮动的元素会改变显示方式
*不管元素是行内元素还是块元素都是在一行显示。
浮动以后的元素可以设置宽高。总结就是浮动元素就像行内块级元素一样!*
浮动的元素在页面上是不占位置的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .one {
            width: 200px;
            height:200px;
            background: pink;
            float: left;
        }
        .two {
            width: 200px;
            height: 200px;
            background: red;
            float: left;
        }
    </style>
</head>
<body>
    <span class="one">今天下雨啦</span>
    <span class="two">没有</span>
</body>
</html>

这里写图片描述

浮动的案例

1利用浮动完成页面的布局
版心一般980px。无浮动。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       *{
        margin: 0px;
        padding: 0px;
       }
       /*确定版心的距离是980*/
       .nav{
        width: 980px;
        height: 50px;
        background: red;
        margin: 0 auto;
       }

       .logo{
        width: 980px;
        height: 100px;
        background: purple;
        margin: 0 auto;

       }
       .message{
        width: 980px;
        height: 150px;
        margin: 0 auto;
        background: pink;
       }
       .content{
        width: 980px;
        height: 500px;
        margin: 0 auto;
        background: blue;
       }
       .foot{
        width: 980px;
        height: 50px;
        margin: 0 auto;
        background: yellow;
       }
    </style>
</head>
<body>
    <div class="nav">导航</div>
    <div class="logo">商标</div>
    <div class="message">页面信息</div>
    <div class="content">内容区域</div>
    <div class="foot">底部</div>
</body>
</html>

这里写图片描述
加入浮动,将内容区域,变成一边导航一般内容!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       *{
        margin: 0px;
        padding: 0px;
       }
       /*确定版心的距离是980*/
       /*为了更好看每一个元素都设置一个margin-top*/
       div{
        margin-top: 3px !important;
       }
       .nav{
        width: 980px;
        height: 50px;
        background: red;
        margin: 0 auto;
       }

       .logo{
        width: 980px;
        height: 100px;
        background: purple;
        margin: 0 auto;

       }
       .message{
        width: 980px;
        height: 150px;
        margin: 0 auto;
        background: pink;
       }
       .content{
        width: 980px;
        height: 500px;
        margin: 0 auto;
        background: blue;
       }
       .foot{
        width: 980px;
        height: 50px;
        margin: 0 auto;
        background: yellow;
       }
       .left{
        width:300px; 
        height:500px;
        background: green;
        float: left;
       }
       .right{
        width: 660px;
        height: 500px;
        background:deeppink;
        float: right;
       }
    </style>
</head>
<body>
    <div class="nav">导航</div>
    <div class="logo">商标</div>
    <div class="message">页面信息</div>
    <div class="content">
       <div class="left">导航</div>
       <div class="right">内容</div>
    </div>
    <div class="foot">底部</div>
</body>
</html>

这里写图片描述
2制作导航
注意以前是使用a标签来直接制作导航是有问题的。
*1.导航和导航之间应该是列表的关系,如果想要将这些关系通过html语义化表示出来必须ul标签。
2.如果这些a标签你不用其他的标签包裹起来,那么将来浏览器会将这些a标签中的文字全部一起显示。SEO在查看页面的时候会认为这个页面进行作弊,就是进行了关键字的堆砌。*
必须要用ul的li标签将a标签的内容包裹起来。**

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    *{
        margin: 0px;
        padding: 0px;
    }
    li{
        list-style: none;
        float: left;

    }
    a{
        /*文本去掉下划线*/
        text-decoration: none;
        color:#CCC;
        /*给a标签设置宽高还有边框让他先变成行内块级元素*/
        display: inline-block;
        padding: 0px 10px;
        height: 50px;
        /*文本水平和垂直居中*/
        text-align: center;
        line-height: 50px;
    }
    a:hover{
        background: red;
        color: #CCC;
    }
    </style>
</head>
<body>
    <ul>
      <li><a href="#">糯米</a></li>
      <li><a href="#">新闻</a></li>
      <li><a href="#">hao123</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 网站的头部

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这只是一个网站的头部</title>
    <style>
       *{
        margin: 0px;
        padding:0px;
       }

       .top{
        width: 760px;
        height: 150px;
            margin: 0 auto;
            /*图片的大小小于div的宽度所以要先设置一个平铺的纯色背景图片*/
        background: url(img1/banner_bg.jpg);
       }
       .down{

        width: 760px;
            /*背景图片决定*/
        height: 32px;
            margin: 0 auto;
        background: url(img1/button1_bg.jpg);

       }
       li{
        list-style: none;
        float: left;
       }
       a{
        text-decoration: none;
        color:red;
        font-size: 12px;
        display: inline-block;
            /*根据背景图片设置宽高*/
            width: 80px;
        height: 32px;
            text-align: center;
        line-height: 32px;
            /*导航之间的间距*/
            background: url(img1/button1.jpg);
       }
       a:hover{
            background: url(img/button2.jpg);
       }

    </style>
</head>
<body>
    <div class="top">
      <!-- 插入背景图片 -->
           <img src="img/banner1.jpg" alt="">
           </div>
    <div class="down">
      <ul>
             <li><a href="#">导航</a></li>
             <li><a href="#">返回首页</a></li>
             <li><a href="#">网站介绍</a></li>
             <li><a href="#">想起来了</a></li>
      </ul>


    </div>
</body>
</html>

这里写图片描述
3文字环绕图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文字环绕</title>
    <style>
     div{
         border:1px solid black;
         /*高度大于图片*/
         height: 250px;
     }
     img{
        width: 200px;
        height: 200px;
        float: left;
     }

    </style>
</head>

<body>
    <div>
      <img src="img/1.jpg" alt="">
      hello!这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
      这是一个文字环绕图一片的案例感觉很难得样子
    </div>
</body>
</html>

这里写图片描述


浮动练习:

标准:


通栏:给个div就好了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body {
            height: 1500px;
        }
        * {
            margin: 0;
            padding: 0;
        }
        a {
            text-decoration: none;
        }
        li {
            list-style: none;
        }
        /*logo B*/
        .logo {
            height: 62px;
            background: #FFFFFF;
            border-bottom: 1px solid #E1E1E1;
        }
        .logo .banxin {
            width: 980px;
            height: 62px;
            margin: 0 auto;
        }
        .logo_l {
            width: 180px;
            height: 24px;
            background: url(img/logo.png);
            margin-top: 19px;
            float: left;
        }
        .logo_r {
            width: 200px;
            height: 30px;
            background: url(img/search.png);
            float: right;
            margin: 19px 8px 0 0;
        }
        /*logo E*/
        /* nav B*/
        .nav {
            height: 55px;
            background: url(img/nav_bg.png) repeat-x;
        }
        .nav .banxin {
            width: 980px;
            height: 55px;
            margin: 0 auto;
        }
        .nav .banxin li {
            float: left;
            line-height: 55px;
        }
        .nav li a {
            display: inline-block;
            height: 55px;
            width: 128px;
            text-align: center;
            border-left: 1px solid #DFDFDF;
            border-right: 1px solid #CDCDCD;
            font: bold 14px/55px "黑体";
            color: #00004B;
        }
        /* nav E*/
        .banner {
            margin: 0 auto;
            margin-top: 1px;
            width: 980px;
            height: 666px;
            background: url(img/banner.png);
        }
        .ad {
            height: 29px;
            border-top: 1px solid #EFEFEF;
            border-bottom: 1px solid #EFEFEF;
            background: #FBFBFB;
        }
        .ad .banxin {
            width: 980px;
            height: 29px;
            margin: 0 auto;
            line-height: 29px;
            font-size: 12px;
            font-family: "微软雅黑";
        }
        .word {
            float: left;
        }
        .ad .banxin .iimg {
            width: 86px;
            height: 16px;
            background: url(img/share.png);
            float: right;
            margin: 6px 6px 0 0 ;
        }
    </style>
</head>
<body>
    <!-- logo B -->
    <div class="logo">
        <div class="banxin">
            <div class="logo_l"></div>
            <div class="logo_r"></div>
        </div>
    </div>
    <!-- logo E -->
    <!-- nav B -->
    <div class="nav">
        <div class="banxin">
            <ul>
                <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>
        </div>
    </div>
    <!-- nav E -->
    <div class="banner"></div>
    <div class="ad">
        <div class="banxin">
            <div class="word"><span style="font-weight: 900;">最新公告:</span>
&nbsp;&nbsp;尚合Aone智能手机入网证已经获工信部门审批下发。尚合官方</div>
            <div class="iimg"></div>
        </div>
    </div>
</body>
</html>

自己的:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
      *{
        margin: 0px;
        padding:0px;
      }
      a {
        text-decoration: none;
        font-size: 15px;
        color: black;
      }

      li{
        list-style: none;
        float: left;
      }
       .top{
        width: 980px;
        height: 63px;
        border-bottom:1px solid #C4C4C4;
        margin:0 auto;

       } 
       .logo{
        width: 182px;
        height: 25px;
        /*解决了margin的塌陷问题*/
        float: left;
        line-height: 25px;
        margin:18px 0;

       }
       .input{
        width: 200px;
        height: 30px;
        float: right;
        margin:18px 8px 0 0;

       }
       .dao{
        height: 56px;
        background: url(img/nav_bg.png) repeat-x;
       }
       .dao .banxin{
        width: 980px;
        margin:0 auto;

       }

        .dao .banxin a{
            /*margin:0px 10px;自己的想法*/
            display: inline-block;
            width: 128px;
            height:56px;
            text-align: center;
            border-left: 1px solid #DFDFDF;
            border-right: 1px solid #CDCDCD;
            font: bold 14px/56px "黑体";
            color: #00004B;
        }
       .content{
        width: 980px;
        height: 597px;
        margin:2px 0;
        margin:0 auto;
       }
       .yuan{
        width: 980px;
        height:69px;
        text-align: center; 
        margin:0 auto;
       }
       .down{
        width: 980px;
        margin:0 auto;
       }
       .gao{
        width: 980px;
        height: 30px;
        border: 1px solid #C4C4C4;
        background: #C4C4C4;
        margin:0 auto;
       }
       .share{
        width: 86px;
        height: 16px;
        float:right;

       }

    </style>
</head>
<body>
    <div class="top">
        <div class="logo"><img src="img\s2.png" alt=""></div>
        <div class="input"><img src="img\search.png" alt=""></div>
    </div>
    <div class="dao">
         <div class="banxin">
       <ul>
         <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>
       </div>
    </div>
    <div class="content">
    <img src="s1.jpg" alt="">
    </div>
    <div class="yuan"><img src="img\5.png" alt=""></div>
    <div  class="down">
    <span class="gao">最新公告:尚合Aone智能手机入网证已经获工信部门审批下发。尚合官方</span>
    <img class="share" src="img\share.png" alt="">
    </div>
</body>
</html>

这里写图片描述

清楚浮动

**

1浮动的影响

**
浮动对页面的影响:
如果一个父盒子中有一个子盒子,并且父盒子没有设置高,子盒子在父盒子中进行了浮动,那么将来父盒子的高度为0.由于父盒子的高度为0,下面的元素会自动补位,所以这个时候要进行浮动的清除。

float: left;float: right;

清除浮动:clear:both;
清楚浮动的方法:
1.使用额外标签法:就是在浮动的盒子上面加一个新的标签,在这个标签里面加上clear:both,来清楚浮动对页面的影响。但是缺点就是父元素的高度还是没有撑开。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .father{
        width: 500px;

        /*height: 300px;*/
        border: 1px solid black;

       }
       .clear{
        /*清楚浮动的影响*/
        clear: both;
       }
        .son{
            width: 200px;
            height: 200px;
            background: red;
            float:right;
        }
        .one{
            width: 500px;
            height: 300px;
            border: 10px solid pink;    
        }

    </style>
</head>
<body>
    <div class="father">
          <div class="son"></div>
     </div>
     <div class="clear"></div>
     <div class="one"></div>
</body>
</html>

这里写图片描述
2.使用内部标签法:
就是把新的标签放在浮动盒子的父亲盒子里面这样就把父亲盒子高度撑开了。

<body>
    <div class="father">
        <div class="son"></div>
        <div class="clearfix"></div>
    </div>
    <div class="one"></div>
</body>
</html>

这里写图片描述
注意:但是一般不使用这种方式来清楚浮动的影响,因为会增加额外的标签,破坏原来的页面结构。
2可以使用overflow属性来清楚浮动
找到浮动元素的父节点,然后添加属性:

overflow: hidden;

就是清除这个父元素中的子元素浮动对页面的影响。

.father {
            width: 500px;
            /*height: 300px;*/
            border: 10px solid #000;
            overflow: hidden;
        }

注意:一般情况下也不会使用这种方式,因为overflow:hidden有一个特点,离开了这个元素所在的区域以后会被隐藏(等学完overflow以后)。

使用伪元素来清楚浮动:

这个是使用最多的方法。
4 伪元素:在页面上不存在的元素,但是可以通过CSS添加上去。
*class类
伪类:是不存在的类满足某一条件才存在*
伪元素属性::after :before
每个元素都有自己的伪元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>微元素</title>
    <style>
      p:before {
                content: "h";
      }
     p:after{
                content: "d";
     }


    </style>
</head>
<body>
    <p>ello worl</p>
</body>
</html>

这里写图片描述

用伪元素来清楚浮动

默认伪元素是行内元素但是可以用display来改变他。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        p:before {
            content: "h";
        }
        p:after {
            content: "d";
            display: block;
            height: 200px;
            width: 200px;
            background: red;
        }
    </style>
</head>
<body>
    <p>ello worl</p>
</body>
</html>

这里写图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .father{
        width: 500px;

        /*height: 300px;*/
        border: 1px solid black;

       }

        .son{
            width: 200px;
            height: 200px;
            background: red;
            float:right;
        }
        .one{
            width: 500px;
            height: 300px;
            border: 10px solid pink;    
        }
        .clearfix:after{
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            clear: both;
            visibility: hidden;/*将元素隐藏起来*/
            /*在页面的clearfix元素后面加了一个空的块级元素(这个元素高是0行高也是0并且这个元素清楚了浮动)*/
        }
        .clearfix{
            zoom:1;/*为了兼容ie*/
        }


    </style>
</head>
<body>
    <div class="father clearfix">
          <div class="son"></div>
     </div>

     <div class="one"></div>
</body>
</html>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值