美文网首页
常见的布局

常见的布局

作者: 指尖轻敲 | 来源:发表于2018-06-20 19:14 被阅读0次

    同一行最后一个元素靠右显示

    buju.png

    比如想实现如图所示的浮层布局,左侧两个元素,右侧一个元素:父元素变成弹性盒模型,中间子元素设置margin-right: auto。这样就是自动填充满剩余空间的全部。

    #foot{
        display: flex;
        align-items: center;
    }
    #foot img{
        margin: 0 10px;
    }
    #foot #btn_down{
        display: inline-block;
        margin-right: 10px;
    }
    #foot div{
        margin-right: auto;
    }
    <div id="foot">
        <img src="http://s1.static.shediao.com/d22813cb6aef4d248a23680907601349.png">
        <div>
             <h4>乐赢斗地主</h4>
             <p>0秒下载,顶级手感</p>
        </div>
        <a href="#" id="btn_down">立即下载</a>
    </div>
    

    每行n个元素,最后一行不够靠左显示

    jiugongge.png

    1、目前我能想到的只有通过浮动实现,每行的子元素向左浮动,并设置右边距,每行最后一个不设置。如果不考虑低版本浏览器不支持CSS3的情况,可以直接使用nth-of-type(3n)

    <ul>
        <li>
            <div></div>
            <div></div>
            <div></div>
        </li>   
        <li>
            <div></div>
            <div></div>
        </li>   
    </ul>
    li{
        margin-bottom: 20px;
        background-color: #ccc;
        height: 200px;
    }
    div:nth-of-type(3n){
        margin-right: 0;
    }
    div{
        width: 30%;
        margin-right: 5%;
        float: left;
        height: 200px;
        background-color: red;
    }
    

    2、但是如果我就是要兼容低版本浏览器怎么办?看了《CSS世界》学到一招,可以给父元素设置margin-right的值为负,增加了容器的可用宽度(此时相当于100%+10px)。

    image.png
    div{
        margin-right: -10px;
    }
    p{
        float: left;
        margin-right: 10px;
        background: blue;
        width: 100px;
        height: 50px; 
        margin-bottom: 20px;
    }
    <div>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
    </div>
    

    注意用了此方法子元素就不要用百分比。

    lable标签两端对齐

    默认情况下,我们敲半角的空格宽度并不够,但是多个空格如果不做单独的设置又会合并成一个空格。那么怎么办呢?其实直接打空格是可以实现的,但是注意需要输入全角的空格,而且全角可以识别多个。

    label.png

    商品价格

    我们很常见的一种样式是商品的现价格后面跟着一个之前的价格,之前的价格被划掉了。如图

    价格.png

    之前我是这样实现的,把现价格的200放在两个元素中,分别设置大小,后面划掉的价格是一个元素,设置text-decoration: line-through。其实这里有更简洁的实现。

    span{
        color: red;
        display: inline-block;
        margin-right: 5px;
    }
    span:first-letter{
        font-size: 14px;
    }
    del{
        color: #ccc;
        font-size: 14px;
    }
    <p>
        <span>¥200</span>
        <del>¥250</del>
    <p>
    

    现价格可以放在一个元素中,然后给该元素添加一个伪元素:first-letter单独设置第一个字符的样式(注意:行内元素无效)。划掉的价格直接方法在del标签就会直接有中划线的效果。

    相关文章

      网友评论

          本文标题:常见的布局

          本文链接:https://www.haomeiwen.com/subject/cdcdeftx.html