前端css布局两边定宽中间自适应

1、双飞翼布局

双飞翼布局的存在其实主要是因为可以加快主内容的渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .main{
            float: left;
            width: 100%;
            height: 300px;

        }
        .main-1{
            height: 100%;
            margin: 0 110px 0 210px;
            background-color: blueviolet;
        }
        .left{
            float: left;
            height: 300px;
            width: 200px;
            margin-left: -100%;
            background-color: cornflowerblue;
        }
        .right{
            float: left;
            height: 300px;
            width: 100px;
            margin-left: -100px;
            background-color: #ff0097;
        }
    </style>
</head>
<body>
<p>实现两边定宽中间自适应并且优化浏览器渲染主要内容</p>
<div  class="main">
    <div class="main-1">主要内容</div>
</div>
<div class="left">左边侧栏</div>
<div class="right">右边侧栏</div>
</body>
</html>

这样就形成了中间自适应两边定宽布局,并且这样把main-1放结构前面可以使主要内容优先加载。

对于实现原理我说一下个人的见解,首先这个布局是采用了float+margin负边距

三个兄弟元素main,left,right全部使用左浮动,这样保证了可以紧跟着排列。然后main设置了100%宽度width表明了铺满了父元素所以宽度,自然而然的left和right就跳到了第二行,此时利用margin-left属性将left和right固定回去。

对于margin的负值我的理解

margin-left原本是left左边框对于main元素右边框在右侧的距离,然后增加了负值,就是变成了left左边框与main右边框在左侧的距离,而这个margin-left:100%;是相对于父元素的,也就相当于将左边框定位在了最右侧的地方。同理right要想定位在一行上就是margin-left:-自身width;这样就能在上一行右方留出自身宽度的长度。

main-1还需要设置一下margin值以用来留间隔,左右是左右两个侧栏宽度加上边距宽度




2、bfc模式形成的布局

哪些元素会产生BFC?

  • 根元素
  • float属性不为none
  • position为absolute或fixed
  • display为inline-block, table-cell, table-caption, flex, inline-flex
  • overflow不为visible
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .parent{
            height: 75px;
            font-size: 14px;
            color: #fff8f8;
        }
        .left{
            float: left;
            width: 100px;
            height: 100%;
            margin-right: 10px;
            background-color: #e51400;


        }
        .center{
            height: 100%;
            overflow: hidden;
            background-color: #ff0097;
        }
        .right{
            float: right;
            width: 100px;
            height: 100%;
            margin-left: 10px;
            background-color: #4eb3b9;
        }
    </style>
</head>
<body>
<div class="parent">
    <div class="left">
        <p>左侧定宽</p>
    </div>
    <div class="right">
        <p> 右侧定宽</p>
    </div>
    <div class="center">
        <p>中间自适应</p>
    </div>
</div>
</body>
</html>

该布局主要实现的原理就是由float进行左右环绕,中间设置overflow:hidden;以防止容器塌陷,float元素经常容易引起塌陷所以很多时候都需要进行清除浮动,这样设置了中间自适应就不会进行环绕会自动对齐。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值