zoukankan      html  css  js  c++  java
  • 内边距的妙用

    场景:排版任意多个图标,每一行摆放3个图标,每个图标的宽度恰好是行宽的1/3,行宽度不固定要支持缩放,每一个图标都是方形或者圆形。
    方法:由于图标高度决定于宽度,宽度又决定于容器宽度,所以指定高度的时候不好控制,这时候可以巧妙地利用块元素的内边距来设置,块元素的高度百分比是基于包含块的高度计算,但是块元素的上下内边距(还有上下外边距)百分比是基于于包含块的宽度来计算的。

    代码(css部分):

    .container {
        font-size: 0; /* 消除container内的内联空白文本所占空间  */
    }
    .container .item {
        width:33.33333333333333%; /* 根据实际业务需要调整百分比  */
        display: inline-block;
    }
    .container .icon-wrapper {
        position:relative;
        width:100%;
        padding-top:100%; /* 此处只用了padding-top,用padding-bottom也是一样的  */
    }
    .container .icon {
        width: 100%;
        height: 100%;
        border-radius: 50%;
        background-size: cover;
        background-position: center;
        position: absolute;
        left: 0;
        top: 0;
        background-color:#888;
    }

    代码(html部分):

    <div class="container">
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
        <div class="item">
            <div class="icon-wrapper">
                <i class="icon"></i>
            </div>
        </div>
    </div>

    效果图如下:

    小插曲:
    对于只有一行的图标,这种按精确百分比布局的方式最喜欢的方式还是浮动,因为浮动可以从正常流中删除,从而不受标签之间的空白文本影响。因为空白文本也会占用一小部分宽度,导致三个33.3%的图标排列下来可能并不在一行。
    但是这里可以是任意多个图标,当超过一行,并且图标下面还有些不定长的说明文本的时候,有可能导致第二行的图标向左浮动被上一行的文本卡住,而浮动不到最左边。所以这里放弃浮动布局,只用正常流,用在容器节点设置font-size为0来消除空白文本所占空间,但是这里如果内部还有文本需要显示,就需要显式设置font-size了,这是唯一遗憾的地方。

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/omega8/p/5468576.html
Copyright © 2011-2022 走看看