zoukankan      html  css  js  c++  java
  • css属性之float

    0.float与margin

    两个相邻的浮动元素,当第一个浮动元素(不论是左浮动还是右浮动)的宽度为100%时,第二个浮动元素会被挤到下面,通过添加负margin-right值(绝对值最少等于它自身的宽度),可以使它回到第一行。

    在书写html代码时,我们通常的习惯根据UI样式,从左往右来写代码,但有时候右侧的内容比较重要,所以它的html结构需要放在左侧内容上面,让它更早的加载,比如:

    左侧定宽流式布局

      <div class="comment">
        <!-- 右侧重要内容 -->
        <div class="content">
          <div class="author">
            <span class="name">哇哈哈</span>
            <span class="date">2016-78-55</span>
          </div>
          <p class="text">吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!</p>
          <div class="meta">
            <span class="msg-tag"></span>
            <span class="msg-tag">回复</span>
          </div>
        </div>
        <!-- 左侧内容 -->
        <a href="#" class="avatar"><img src="images/header.jpg" alt="头像"></a>
      </div>
    * {margin:0; padding:0;}
    li {list-style: none;}
    a {text-decoration: none;}
    body {font-family: '微软雅黑';}
    
    .wrap {
      width: 800px;
      margin: 50px auto;
    }
    .content {
      float: right;
      margin-left: 100px;
    }
    .date {
      font-size: 14px;
      color: #666;
    }
    .text {
      margin: 20px 0;
    }
    .avatar {
      float: left;
      margin-right: -80px;
    }
    .avatar img {
      width: 80px;
      height: 80px;
      border-radius: 50%;
    }

    如上面图的效果,尽管在UI上,.content元素在.avatar右边,但我们在html结构中,仍然需要把.content元素放到.avatar元素前面,这个时候就可以通过给.content元素设置为右浮动,然后给.avatar元素设置左或者右浮动,再添加负margin-right值,让它回到上面。

    1.左右两侧都不定宽

    效果图:

    html代码:

      <div class="comment">
        <a href="#" class="avatar"><img src="images/header.jpg" alt="头像"></a>
        <div class="content">
          <div class="author">
            <span class="name">哇哈哈</span>
            <span class="date">2016-78-55</span>
          </div>
          <p class="text">吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!吃的再多也不长胖,好愁人啊,怎么能快速长胖呢,在线等,急!</p>
          <div class="meta">
            <span class="msg-tag"></span>
            <span class="msg-tag">回复</span>
          </div>
        </div>
      </div>

    核心点:

    .avatar元素左浮动.content元素的display属性设为table-cell,其实这里的.content元素不一定非要设置display为table-cell才行,只要是能触发BFC/haslayout的就行,比如:

    float:left/right
    position:absolute/fixed
    overflow:hidden/scroll(IE7+)
    display:inline-block/table-cell(IE8+)

    不过因为这里的.content元素是自适应的,不能定宽,而且里面包含块级元素,所以只能设置overflow属性。

    css代码:

    * {margin:0; padding:0;}
    li {list-style: none;}
    a {text-decoration: none;}
    body {font-family: '微软雅黑';}
    
    .wrap {
      width: 800px;
      margin: 50px auto;
    }
    .avatar {
      float: left;
      margin-right: 20px;
    }
    .avatar img {
      width: 80px;
      height: 80px;
      border-radius: 50%;
    }
    .content {
      display: table-cell;
    }
    .date {
      font-size: 14px;
      color: #666;
    }
    .text {
      margin: 20px 0;
    }

    2.右侧定宽流式布局

    效果图:

    html代码:

    <div class="wrap">
      <ul class="list">
        <li class="item">
          <div class="content-wrap">
            <div class="content">
              <div class="author">
                <a href="#" class="avatar"><img src="images/header.jpg" alt="头像"></a>
                <span class="name">李荣浩</span>
                <span class="date">2016-01-22</span>
              </div>
              <a href="#" class="title">不将就</a>
              <p>互相折磨到白头 悲伤坚决不放手 开始纠缠之后 才又被人放大了自由 你的暴烈太温柔 感情又痛又享受 如果我说不吻你不罢休 谁能逼我将就</p>
              <div class="meta">
                <span class="category-tag">歌曲</span>
                <span class="msg-tag">喜欢·5000</span>
              </div>               
            </div>
          </div>
       
          <a href="#" class="thumbnail"><img src="images/pic.jpg" alt="图片"></a>   
        </li>
      </ul> 
    </div>

     

    核心点:

    1:当第一个浮动元素的宽度为100%时,第二个元素会自动换行,紧挨着第一个元素,这时可以给第二个浮动元素添加负margin值,使它上去

    2:第一个浮动元素.content外面有一个包裹元素,方便给.content元素添加padding-right值,让左边的内容和右边图片之间留出空隙

    其实双飞翼布局的思想也是包含上面两点。

    css代码:

    * {margin:0; padding:0;}
    li {list-style: none;}
    a {text-decoration: none;}
    body {font-family: '微软雅黑';}
    
    .wrap {
      width: 800px;
      margin: 50px auto;
    }
    .item {
      padding-bottom: 15px;
      border-bottom: 1px solid #ccc;
      overflow: hidden;
    }
    .content {
      float: left;
      padding-right: 180px;
    }
    .avatar {
      display: inline-block;
      width: 32px;
      height: 32px;
      border-radius: 50%;
      vertical-align: middle;
      overflow: hidden;
    }
    .avatar img {
      width: 100%;
      height: 100%;
    }
    .name {
      vertical-align: middle;
    }
    .date {
      font-size: 14px;
      color: #666;
      vertical-align: middle;
    }
    .title {
      display: block;
      padding: 10px 0;
      font-size: 18px;
      font-weight: bold;
      line-height: 1.5;
      color: #333;
    }
    .thumbnail {
      float: left;
      margin-left: -120px;
    }
    .thumbnail img {
      width: 120px;
      height: 120px;
    }
    .meta {
      margin-top: 15px;
      font-size: 14px;
    }
    .category-tag {
      display: inline-block;
      padding: 0 8px;
      margin-right: 10px;
      border: 1px solid #ea6f5a;
      border-radius: 3px;
      color: #ea6f5a
    }
    .msg-tag {
      color: #999;
    }

    3.两侧固定,中间自适应的三栏布局

    现在三栏布局很少了,如果要用到,请直接百度双飞翼布局或者圣杯布局。

  • 相关阅读:
    基于Token的WEB后台认证机制
    MySQL主键设计
    .NET学习笔记 -- 那堆名词到底是啥(CLR、CLI、CTS、CLS、IL、JIT)
    C#学习笔记 -- Attribute
    Log4Net指南
    Windows进程通信 -- 共享内存(1)
    windows进程通信 -- WM_COPYDATA消息
    C语言再学习之内存对齐
    找工作中……
    做了一个vue的同步tree 的npm组件包
  • 原文地址:https://www.cnblogs.com/mcbai/p/6262925.html
Copyright © 2011-2022 走看看