最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 你需要知道的css布局

    正文概述 掘金(water)   2020-12-15   348

    背景

    布局是我们前端开发中不可避免的,简单回忆一下 css 的布局方案,供大家参考以及自己参阅。

    居中布局

    这里的居中布局是不定宽度为前提,固定宽度情况也包含其中。

    水平居中

    1. inline-block + text-align
    .parent {
        text-align: center;
    }

    .child {
        display: inline-block;
    }

    这个方案的兼容性比较好,可兼容到 IE8,对于 IE567 不支持inline-block,需要使用 css hack 进行兼容。

    1. table + margin
    .child {
        display: table;
        margin: 0 auto;
    }

    这个方案兼容到 IE8,可以使用

    代替 css 写法,兼容性更好。

    1. absolute + transform
    .parent {
        position:relative;
        height:1.5em;
    }
    .child {
        position:absolute;
        left:50%;
        transform:translateX(-50%);
    }

    这个方案兼容到 IE9,因为transform兼容性导致,如果.child为定宽元素,可以使用以下写法,提高兼容性。

    .parent {
        position: relative;
        height:1.5em;
    }
    .child {
        position: absolute;
        width:100px;
        left:50%;
        margin-left:-50%;
    }
    1. flex + justify-content
    .parent {
        display:flex;
        justify-content;
    }
    .child {
        margin:0 auto;
    }

    flex 布局很强大,但是受到兼容的限制。不考虑兼容可以大胆使用。

    垂直居中布局

    1. table-cell + vertial-align
    .parent {
        display: table-cell;
        vertical-align: middle;
    }

    此方案可以用

    替换,提高兼容性。

    1. absolute + transform
    .parent {
        position: relative;
    }
    .child {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
    }

    css3 新属性兼容性不是很好。

    1. flex + align-items
    .parent {
        display: flex;
        align-items: center;
    }

    兼容性不是很好,不考虑低版本浏览器。

    水平垂直居中

    1. inline-block + table-cell + text-align + vertical-align
    .parent{
     text-align: center;
     display: table-cell;
     vertical-align: middle;
    }
    .child{
     display: inline-block;
    }

    兼容到 IE8.

    1. absolute + transform
    .parent{
     position: relative;
    }
    .child{
     position: absolute;
     left: 50%;
     top: 50%;
     transform: translate(-50%,-50%);
    }

    兼容性差,兼容 IE10 以上

    1. flex
    .parent{
     display: flex;
     justify-content: center;
     align-items: center;
    }

    兼容差

    多列布局

    一列定宽,一列自适应

    1. float + margin
    .left{
     float: left;
     width: 100px;
    }
    .right{
     margin-left: 120px;
    }

    此方案对于定宽布局比较好,不定宽布局推荐下面方法 2.

    1. float + overflow
    .left{
     float: left;
     width: 100px;
     margin-right: 20px;
    }
    .right{
     overflow: hidden;
    }

    此方案不管是多列定宽或是不定宽,都可以完美实现,同时可以实现等高布局。

    1. table
    .parent{
     display: table; width: 100%;
     table-layout: fixed;
    }
    .left,.right{
     display: table-cell;
    }
    .left{
     width: 100px;
     padding-right: 20px;
    }
    1. flex
    .parent{
     display: flex;
    }
    .left{
     width: 100px;
     padding-right: 20px;
    }
    .right{
     flex: 1;
    }

    多列定宽,一列自适应

    1. float + overflow
    .left,.center{
     float: left;
     width: 100px;
     margin-right: 20px;
    }
    .right{
     overflow: hidden;
    }
    1. table
    .parent{
     display: table; width: 100%;
     table-layout: fixed;
    }
    .left,.center,.right{
     display: table-cell;
    }
    .right{
     width: 100px;
     padding-right: 20px;
    }
    1. flex
    .parent{
     display: flex;
    }
    .left,.center{
     width: 100px;
     padding-right: 20px;
    }
    .right{
     flex: 1;
    }

    一列不定宽,一列自适应

    1. float + overflow
    .left{
     float: left;
     margin-right: 20px;
    }
    .right{
     overflow: hidden;
    }
    .left p{width: 200px;}
    1. table
    .parent{
     display: table; width: 100%;
    }
    .left,.right{
     display: table-cell;
    }
    .left{
     width: 0.1%;
     padding-right: 20px;
    }
    .left p{width:200px;}
    1. flex
    .parent{
     display: flex;
    }
    .left{
     margin-right: 20px;
    }
    .right{
     flex: 1;
    }
    .left p{width: 200px;}

    多列不定宽,一列自适应

    1. float + overflow
    .left,.center{
     float: left;
     margin-right: 20px;
    }
    .right{
     overflow: hidden;
    }
    .left p,.center p{
     width: 100px;
    }

    等分

    1. float + margin
    .parent{
     margin-left: -20px;
    }
    .column{
     float: left;
     width: 25%;
     padding-left: 20px;
     box-sizing: border-box;
    }
    1. table + margin
    .parent-fix{
     margin-left: -20px;
    }
    .parent{
     display: table;
     width:100%;
     table-layout: fixed;
    }
    .column{
     display: table-cell;
     padding-left: 20px;
    }
    1. flex
    .parent{
     display: flex;
    }
    .column{
     flex: 1;
    }
    .column+.column{
     margin-left:20px;
    }

    等高

    1. float + overflow
    .parent{
     overflow: hidden;
    }
    .left,.right{
     padding-bottom: 9999px;
     margin-bottom: -9999px;
    }
    .left{
     float: left; width: 100px;
    }
    .right{
     overflow: hidden;
    }
    1. table
    .parent{
     display: table;
     width: 100%;
    }
    .left{
     display:table-cell;
     width: 100px;
     margin-right: 20px;
    }
    .right{
     display:table-cell;
    }
    1. flex
    .parent{
     display:flex;
     width: 100%;
    }
    .left{
     width: 100px;
    }
    .right{
     flex:1;
    }

    并排等分,单排对齐靠左布局

    flex

    .main {
        display: flex;
        flex-flow: row wrap;
        justify-content: space-between;
    }
    .item {
        display: inline-block;
    }
    .empty{
        height: 0;
        visibility: hidden;
    }

    圣杯布局&双飞翼布局

    圣杯布局

    <div class="container">
        <div class="header">header</div>
        <div class="wrapper clearfix">
            <div class="main col">main</div>
            <div class="left col">left</div>
            <div class="right col">right</div>
        </div>
        <div class="footer">footer</div>
    </div>



    .container {width: 500px; margin: 50px auto;}
    .wrapper {padding: 0 100px 0 100px;}
    .col {position: relative; float: left;}
    .header,.footer {height: 50px;}
    .main {width: 100%;height: 200px;}
    .left {width: 100px; height: 200px; margin-left: -100%;left: -100px;}
    .right {width: 100px; height: 200px; margin-left: -100px; right: -100px;}
    .clearfix::after {content: ""; display: block; clear: both; visibility: hidden; height: 0; overflow: hidden;}

    双飞翼布局

    <div class="container">
        <div class="header">header</div>
        <div class="wrapper clearfix">
            <div class="main col">
                <div class="main-wrap">main</div>
            </div>
            <div class="left col">left</div>
            <div class="right col">right</div>
        </div>
        <div class="footer">footer</div>
    </div>




    .col {float: left;}
    .header {height: 50px;}
    .main {width: 100%;}
    .main-wrap {margin: 0 100px 0 100px;height: 200px;}
    .left {width: 100px; height: 200px; margin-left: -100%;}
    .right {width: 100px; height: 200px; margin-left: -100px;}
    .footer {height: 50px;}
    .clearfix::after {content: ""; display: block; clear: both; visibility: hidden; height: 0; overflow: hidden;}

    定位布局

    <div class="header">header</div>
    <div class="wrapper">
        <div class="main col">
            main
        </div>
        <div class="left col">
            left
        </div>
        <div class="right col">
            right
        </div>
    </div>
    <div class="footer">footer</div>



    .wrapper { position: relative; }
    .main { margin:0 100px;}
    .left { position: absolute; left: 0; top: 0;}
    .right { position: absolute; right: 0; top: 0;}

    起源地下载网 » 你需要知道的css布局

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元