zoukankan      html  css  js  c++  java
  • 713 CSS浮动float:浮动的规则,清除浮动,clear

    定位方案(Position Schemes)


    CSS属性 - float


    浮动的特点

    浮动的特点:
    1、浮动的元素脱标。如果一个元素浮动了,那么,(1)将能够【无缝】并排了;(2)并且能够设置宽高了,无论它原来是个div还是个span,浮动即脱离标准流,inline、block是在标准流里用的。

    2、浮动的元素互相贴靠。左浮动就会贴左边,右浮动贴右边,贴上一个兄弟元素的边。

    3、浮动的元素有“字围”效果。

    4、收缩。不区分行内元素和块级元素了:原来的行内元素现在可以设置宽度、高度;原来的块级元素,如果不写width,现在会自动缩减为内容宽度。


    浮动的规则一


    01_浮动_理解规则一.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .box {
            height: 200px;
            background-color: #f88;
          }
    
          .inner {
            display: inline-block;
             100px;
            height: 100px;
            background-color: orange;
            /* word-break: break-all; */
          }
    
          strong {
            float: left;
            background-color: #0f0;
          }
    
          a {
            /* float: left; */
            background-color: #00f;
            color: #fff;
          }
        </style>
      </head>
      <body>
        <div class="box">
          <!-- 【可以把文字理解成行内元素。】 -->
          div元素的文字
          <!-- 【如果没给inner添加文本内容,那么除了strong,其他文字会基线对齐,否则顶线对齐。】 -->
          <div class="inner">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</div>
          <!-- <div class="inner">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</div> -->
          <span>span元素</span>
          <strong>strong元素</strong>
          <a href="#">a元素</a>
        </div>
      </body>
    </html>
    

    浮动的规则二


    02_浮动_理解规则二.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          div {
            background-color: #f66;
             300px;
            border: 1px solid #333;
          }
    
          div img {
            /* 【文字和图片的基线对齐。图片浮动后,触发BFC,意味着图片的基线对齐跟外面的元素无关。】 */
            float: left;
            margin: 8px;
          }
        </style>
      </head>
      <body>
        <div>
          大家都知道, 华为遭到了谷歌GMS的断供,
          <img src="../img/test_01.webp" alt="" />
          华为新款手机在国外是无法使用谷歌服务的,那么华为海外市场份额必定受到影响,
          但是华为突然宣布,华为手机今年全球出货量仍然能够保持在2.3亿台左右,早在10月份华为就宣布了2亿台小目标达成,提前了64天,今年最终成绩将会是2.3亿台,全球第二出货量应该是稳了,苹果今年的“浴霸”并没有很好的效果,2亿台或许都达不成。
        </div>
      </body>
    </html>
    

    浮动的规则三


    03_浮动_理解规则三.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .box {
             300px;
            background-color: #f66;
          }
    
          .box .img1 {
            float: left;
          }
    
          .box .img2 {
            float: left;
          }
    
          .inner {
            /* 浮动元素/定位元素/display三者的关系 */
            float: left;
    
             50px;
            height: 50px;
            background-color: orange;
          }
        </style>
      </head>
      <body>
        <div class="box">
          大家都知道,
          <img class="img1" src="../img/wall.png" alt="" />
          华为遭到了谷歌GMS的断供,
          华为新款手机在国外是无法使用谷歌服务的,那么华为海外市场份额必定受到影响,但是华为突然宣布,
          <img class="img2" src="../img/wall.png" alt="" />
          华为手机今年全球出货量仍然能够保持在2.3亿台左右,早在10月份华为就宣布了2亿台小目标达成,
          <div class="inner"></div>
          提前了64天,今年最终成绩将会是2.3亿台,全球第二出货量应该是稳了,苹果今年的“浴霸”并没有很好的效果,2亿台或许都达不成。
        </div>
      </body>
    </html>
    

    04_浮动_理解前面的规则.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .box {
            /* height: 300px; */
            background-color: #f66;
          }
    
          .inner1 {
            float: left;
    
             100px;
            height: 100px;
            background-color: orange;
          }
    
          .inner2 {
            float: left;
            /* display: inline-block; */
    
             150px;
            height: 150px;
            background-color: purple;
          }
        </style>
      </head>
      <body>
        <!-- 
            1>三者之间的关系:
                position:absolute/fixed和float:left/right和display之间的关系
            2>现象解释:
                1.inner2进行左浮动/右浮动的时候, 只会在当前自己行中浮动
                2.inner1进行左浮动时, inner2在没有浮动时, inner2会如何排布
                3.inner1进行左浮动时, inner2在没有浮动时, 但是里面有文本, 文本会如何排布
                4.inner1进行左浮动时, inner2设置为inline-block, inner2会在第一行, 并且被推出去
                5.inner1进行左浮动时, inner2也进行左浮动, 那么innner1和inner2以此在第一行排布
                6.inner1和inner2都进行浮动, 但是父元素没有设置高度, 那么父元素的高度会消失(高度的坍塌)
         -->
    
        <div class="box">
          <div class="inner1"></div>
          <div class="inner2">我是inner2的文本</div>
        </div>
      </body>
    </html>
    

    浮动的规则四


    浮动的规则五


    浮动的规则六


    05_浮动_理解规则四.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <style>
          .box {
             300px;
            height: 300px;
            background-color: #f66;
          }
    
          .inner {
             100px;
            height: 100px;
            background: orange;
            float: right;
          }
        </style>
      </head>
      <body>
        <div class="box">
          <div class="inner"></div>
        </div>
      </body>
    </html>
    

    06_浮动_理解规则五.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <style>
          .box {
             300px;
            height: 500px;
            background-color: #f66;
          }
    
          .inner1 {
            float: left;
    
             100px;
            height: 100px;
            background: orange;
          }
    
          .inner2 {
            float: left;
    
             150px;
            height: 150px;
            background: purple;
          }
    
          .inner3 {
            float: left;
    
             200px;
            height: 200px;
            background-color: yellowgreen;
          }
        </style>
      </head>
      <body>
        <div class="box">
          <div class="inner1"></div>
          <div class="inner2"></div>
          <div class="inner3"></div>
        </div>
      </body>
    </html>
    

    07_浮动_理解规则六.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .box {
             300px;
            height: 500px;
            background-color: #f66;
          }
    
          .inner1 {
            float: left;
    
             200px;
            height: 100px;
            background: orange;
          }
    
          .inner2 {
            float: left;
    
             150px;
            height: 150px;
            background: purple;
          }
    
          .inner3 {
            float: right;
    
             50px;
            height: 200px;
            background-color: yellowgreen;
          }
        </style>
      </head>
      <body>
        <div class="box">
          <div class="inner1"></div>
          <div class="inner2"></div>
          <div class="inner3"></div>
        </div>
      </body>
    </html>
    

    08_inline-block水平布局的缺陷.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <style>
          body {
            font-size: 50px;
          }
    
          .box {
            /* 【1、元素之间的间距很难控制。 2、vertical-align导致元素之间布局受到影响。】 */
            display: inline-block;
             100px;
            height: 100px;
          }
    
          .box1 {
            background-color: #f66;
            float: left;
            margin-right: 10px;
          }
    
          .box2 {
            background-color: #0f0;
            float: left;
          }
        </style>
      </head>
      <body>
        <div class="box box1"></div>
        <div class="box box2">fdafadfa</div>
      </body>
    </html>
    

    09_京东_布局案例01.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .container {
             990px;
            height: 500px;
            background-color: #f66;
    
            margin: 0 auto;
          }
    
          .section {
            float: left;
             490px;
            height: 300px;
          }
    
          .section1 {
            background-color: #0f0;
            margin-right: 10px;
          }
    
          .section2 {
            background-color: #00f;
          }
        </style>
      </head>
      <body>
        <div class="container">
          <div class="section section1"></div>
          <div class="section section2"></div>
        </div>
      </body>
    </html>
    

    10_京东_布局案例02.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          /* 前提: border-width和padding-width为0 */
          /* width of block = content-width + margin-left + margin-right + padding+border */
          /* 990 = content-width + 0 + -10px */
          /* content-width = 990 + 10 -> 1000 */
          .container {
             990px;
            height: 500px;
            background-color: #f66;
    
            margin: 0 auto;
          }
    
          /* 0 + 0 + 0 + width + 0 + 0 + -10 = 990 */
          /*  990+10 = 1000 */
    
          .wrap {
            margin-right: -10px;
          }
    
          .section {
            float: left;
    
            margin-top: 10px;
             190px;
            height: 100px;
            background-color: #0f0;
    
            margin-right: 10px;
          }
    
          /* div .section:nth-child(5n) {
                margin-right: 0;
            } */
    
          /* .section5, .section10 {
                margin-right: 0;
            } */
    
          /* .section1, .section2, .section3, .section4, .section5 {
                margin-right: 10px;
            } */
        </style>
      </head>
      <body>
        <div class="container">
          <!-- 【套一个外层元素,设置它的margin-right为负值,这样它的宽度就和包含块一样了。】 -->
          <div class="wrap">
            <div class="section section1"></div>
            <div class="section section2"></div>
            <div class="section section3"></div>
            <div class="section section4"></div>
            <div class="section section5"></div>
            <div class="section section6"></div>
            <div class="section section7"></div>
            <div class="section section8"></div>
            <div class="section section9"></div>
            <div class="section section10"></div>
            <div class="section section6"></div>
            <div class="section section7"></div>
            <div class="section section8"></div>
            <div class="section section9"></div>
            <div class="section section15"></div>
          </div>
        </div>
      </body>
    </html>
    

    11_块级元素的宽度计算.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <style>
          /* 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block */
    
          /* border: 0
            padding: 0 */
          /* width of block = content-width + margin-left + margin-right + padding+border */
          /* 990 = content-width + 0 + -10px */
          .box {
             1000px;
            height: 100px;
            border-left: 20px yellowgreen solid;
            border-right: 20px yellowgreen solid;
            padding-left: 50px;
            background-color: #f66;
          }
        </style>
      </head>
      <body>
        <div class="box">xxxx</div>
      </body>
    </html>
    

    12_京东_布局案例03.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .container {
             990px;
            /* height: 306px; */
            height: auto;
            background-color: #f66;
            margin: 0 auto;
          }
    
          .wrap {
            margin-right: -10px;
          }
    
          .item {
            float: left;
            margin-right: 10px;
             240px;
            background-color: orange;
          }
    
          .itema {
            height: 306px;
          }
    
          .itemb {
            height: 148px;
          }
    
          .item-last {
            margin-top: 10px;
          }
        </style>
      </head>
      <body>
        <div class="container">
          <div class="wrap">
            <div class="item itema"></div>
            <div class="item itema"></div>
    
            <div class="item itemb"></div>
            <div class="item itemb"></div>
            <div class="item itemb item-last"></div>
            <div class="item itemb item-last"></div>
          </div>
        </div>
    
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
      </body>
    </html>
    

    13_考拉_考拉案例01.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="`" />
        <title>Document</title>
    
        <style>
          /* CSS reset */
          h2 {
            margin: 0;
            padding: 0;
          }
    
          a {
            text-decoration: none;
            color: #666;
          }
    
          .f-left {
            float: left;
          }
    
          .f-right {
            float: right;
          }
    
          /* 样式相关 */
          .header {
             1100px;
            margin: 0 auto;
            /* background-color: #0f0; */
            height: 49px;
          }
    
          .header-left {
            /* float: left; */
            font-size: 14px;
          }
    
          .header-left h2,
          .header-left span,
          .header-left a {
            float: left;
            margin-right: 20px;
          }
    
          .header-left h2 {
            font-size: 22px;
          }
    
          .header-left .search {
            margin-top: 9px;
          }
    
          .header-left .search a:hover {
            text-decoration: underline;
          }
    
          .header-left .search .hot {
            color: #ff080f;
          }
    
          .header-right {
            /* float: right; */
            margin-top: 9px;
            font-size: 14px;
          }
    
          .header-right a:hover {
            text-decoration: underline;
          }
        </style>
      </head>
      <body>
        <div class="header">
          <div class="header-left f-left">
            <h2>美妆专区</h2>
            <div class="search f-left">
              <span>热搜词:</span>
              <a href="#">面膜</a>
              <a class="hot" href="#">口红</a>
              <a href="#">眼霜</a>
              <a class="hot" href="#">精华</a>
              <a href="#">卸妆</a>
            </div>
          </div>
          <div class="header-right f-right">
            <a href="#">更多好货 ></a>
          </div>
        </div>
      </body>
    </html>
    

    14_考拉_考拉案例02.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          /* css reset */
          ul {
            list-style: none;
            padding: 0;
            margin: 0;
          }
    
          /* 样式 */
          .brand {
             1100px;
            height: 180px;
            margin: 0 auto;
            background-color: #6cc;
          }
    
          .brand ul {
            margin-right: -10px;
          }
    
          .brand ul li {
            float: left;
             219px;
            height: 167px;
            background-color: yellowgreen;
            margin-right: -1px;
            border: 1px solid #eaeaea;
          }
    
          span {
            background-color: #f66;
            float: left;
    
            margin-right: -20px;
          }
    
          strong {
            background-color: #0f0;
            float: left;
          }
        </style>
      </head>
      <body>
        <div class="brand">
          <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
          </ul>
        </div>
    
        <span>span元素</span>
        <strong>strong元素</strong>
      </body>
    </html>
    

    15_浮动_考拉案例03.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <style>
          ul {
            list-style: none;
            margin: 0;
            padding: 0;
          }
    
          /* 布局样式 */
          .today {
             1100px;
            margin: 0 auto;
          }
    
          .today ul {
            margin-right: -3px;
          }
    
          .today ul li {
            float: left;
             420px;
            height: 190px;
            background-color: #f66;
    
            border: 1px solid #333;
            margin-right: -1px;
            margin-bottom: -1px;
          }
    
          .today ul .last {
            float: right;
             260px;
            height: 381px;
            background-color: #0f0;
          }
        </style>
      </head>
      <body>
        <div class="today">
          <ul>
            <li class="last"><a href="#"></a></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
          </ul>
        </div>
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
        <br /><br /><br /><br />
      </body>
    </html>
    

    浮动存在的问题


    清浮动的常见方法


    CSS属性 - clear


    定位方案对比


    16_京东_布局案例-清除浮动.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
    
        <style>
          .container {
             990px;
            background-color: #f66;
            margin: 0 auto;
          }
    
          .wrap {
            margin-right: -10px;
          }
    
          .item {
            float: left;
    
            margin-right: 10px;
             240px;
            background-color: orange;
          }
    
          .itema {
            height: 306px;
          }
    
          .itemb {
            height: 148px;
          }
    
          .item-last {
            margin-top: 10px;
          }
    
          /* .container::after {
                content: "";
                clear: both;
                display: block;
            }
    
    
            .content::after {
                content: "";
                clear: both;
                display: block;
            }
    
            .brand::after {
                content: "";
                clear: both;
                display: block;
            } */
    
          .clear-fix::after {
            content: '';
            display: block;
            clear: both;
            height: 0; /* 【有的旧浏览器的伪元素的高度不为0.】 */
            visibility: hidden; /* 【有的即使高度为0,也可以看见。】 */
          }
    
          .clear-fix {
            /* 兼容IE6和7 */
            *zoom: 1;
          }
        </style>
      </head>
      <body>
        <div class="container clear-fix">
          <div class="wrap">
            <div class="item itema"></div>
            <div class="item itema"></div>
    
            <div class="item itemb"></div>
            <div class="item itemb"></div>
            <div class="item itemb item-last"></div>
            <div class="item itemb item-last"></div>
          </div>
          <!-- <div class="clear-fix"></div> -->
        </div>
    
        <div class="brand clear-fix"></div>
    
        <!-- <div class="clear-fix"></div> -->
    
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
        <p>其他内容</p>
      </body>
    </html>
    

  • 相关阅读:
    生成指定范围的随机数
    sql
    map的使用
    基础03 JVM到底在哪里?
    Elasticsearch6.1.0 TransportClient聚合查询索引中所有数据
    Elasticsearch6.1.0 TransportClient滚动查询索引中所有数据写入文件中
    elasticsearch-java api中get() 和execute().actionGet()方法
    Elasticsearch6(Transport Client)常用操作
    Reflections反射获取注解下类
    Ambari2.6.0 安装HDP2.6.3: Python script has been killed due to timeout after waiting 300 secs
  • 原文地址:https://www.cnblogs.com/jianjie/p/15148184.html
Copyright © 2011-2022 走看看