最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • css实现三列布局(圣杯布局)的几种方式

    正文概述 掘金(FallenAngle)   2021-01-03   722

    前端非常经典的三列布局(圣杯布局),有多种实现方式,这里简单总结下实现方式

    圣杯布局简单来说就是把页面分为三列,左右两列固定宽度,中间自适应宽度,假设每列高度为屏幕高度,左右两列宽度为200px,中间自适应宽度

    float实现三列布局

    • HTML结构
         <div class="container">
             <div class="left"></div>
             <div class="right"></div>
             <div class="center"></div>    
         </div>
    
    • CSS代码
          .container{
          	height: 100%;
          }
          .left{
              float: left;
              width: 200px;
              height: 100%;
              background-color: pink;
          }
          .center{
              height: 100%;
              background-color: powderblue;
              margin: 0 200px;
              height: 300px;
          }
          .right{
              float: right;
              width: 200px;
              height: 100%;
              background-color: pink;
           }
    

    这里会奇怪为什么center元素要写在最后面,left,right元素使用浮动布局,纷纷都脱离了文档流,碰到父元素或者另外一个浮动元素就会浮动停止,浮动元素后面的元素会围绕着它;center元素没有设置浮动,则在常规文档中,left和right看起来像是漂浮在了常规流中;如果center写在中间,右边的元素碰到了center就停止了,不会飘在center的上方。(绝对定位实现三列布局,与float原理类似,position:absolute使得元素脱离文档流,下面就不详细说明position的实现方式了)

    flex实现三列布局

    flex实现三列布局有多种代码表示方式,可以使用flex-basis与flex-grow搭配着实现,也可以用width和flex:1(flex-grow,flex-shrink,flex-basis的缩写)实现等等,原理都是一样,只是代码的组织方式不一样,这里总结flex-basis和flex-grow的实现方式

    • HTML代码
       
       <div class="container">
            <div class="left"></div>
    	     <div class="center"></div>
    	     <div class="right"></div>
    	</div>
    
    • CSS代码
          .container{
              display: flex;
              height: 100%;
          }
          .left{
              flex-basis: 200px;
              height: 100%;
              background-color: pink;
          }
          .center{
              flex-grow: 1;
              height: 100%;
              background-color: powderblue;
          }
          .right{
              flex-basis: 200px;
              height: 100%;
              background-color: pink;
          }
    

    flex-basis设置左右两边定宽,中间元素flex-grow实现元素填满剩余空间

    calc计算属性实现三列布局

        .container{
            height: 100%;
        }
        .left{
            display: inline-block;
            width: 200px;
            height: 100%;
            background-color: pink;
        }
        .center{
            display: inline-block;
            height: 100%;
            width: calc(100% - 400px);
            background-color: powderblue;
        }
        .right{
            display: inline-block;
            width: 200px;
            height: 100%;
            background-color: pink;
        }
    

    calc结合着display:inline-block来实现,让三个div水平分布,设置左右两边固定200px.中间center元素利用计算属性计算剩余宽度

    table和table-cell实现三列布局

    		.container{
                display: table;
                height: 100%;
                width: 100%;
            }
            .left{
                display: table-cell;
                width: 200px;
                height: 100%;
                background-color: pink;
            }
            .center{
                width: auto;
                height: 100%;
                display: table-cell;
                background-color: powderblue;
            }
            .right{
                display: table-cell;
                width: 200px;
                height: 100%;
                background-color: pink;
            }
    

    table实现的时候,一定要给 父元素设置宽度,display:table默认宽度不是100%


    起源地下载网 » css实现三列布局(圣杯布局)的几种方式

    常见问题FAQ

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

    发表评论

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

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

    联系作者

    请选择支付方式

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