左侧固定宽右侧自适应(CSS布局面试题)

左侧固定,右边自适应

这是一个很常用的css布局,尤其是在后台页面当中,使用频繁。同事也是面试当中常常问到的考点。今天,我们就来终结一下。

第一种方法:浮动布局

准备工作: 先准备2个div 随便放点东西进行填充!

<div id="aside">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore provident dolor in voluptatum tempore non, placeat obcaecati totam ut delectus libero excepturi distinctio asperiores odit nobis soluta, esse aspernatur beatae.
</div>
<div id="content">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore provident dolor in voluptatum tempore non, placeat obcaecati totam ut delectus libero excepturi distinctio asperiores odit nobis soluta, esse aspernatur beatae.
</div>
#aside{
    float: left;
    width: 200px;
    background-color: red;
}
#content{
    margin-left: 200px;
    background-color: blue;
}

关键点:
一、先让固定宽度的div浮动!使其脱离文档流。
二、margin-left的值等于固定div的宽度相等。

方法二:利用margin负值。

准备:需要三个div了。

<div id="aside">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore provident dolor in voluptatum tempore non, placeat obcaecati totam ut delectus libero excepturi distinctio asperiores odit nobis soluta, esse aspernatur beatae.
</div>
<div id="content">
    <div class="inner">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia labore facere delectus quaerat expedita, tenetur recusandae tempora eos natus suscipit voluptatum necessitatibus soluta voluptates modi ullam. Ab minima similique, illum!
    </div>
</div>
#aside{
    float: left;
    margin-right: -200px;
    width: 200px;
    background-color: red;
}
#content{
    float: right;
}
#content .inner{
    margin-left: 200px;
    background-color: blue;
}

关键点:
1. 是固定宽度的div脱离文档流。
2. 利用marin负值可以使得,后面的div可以与前面的div 保持同行显示。
3. 给包裹内容的div加margin-left 可以使得与左边的文字不重叠

第三种方法:calc()计算属性。

<div id="aside">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore provident dolor in voluptatum tempore non, placeat obcaecati totam ut delectus libero excepturi distinctio asperiores odit nobis soluta, esse aspernatur beatae.
</div>
<div id="content">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore provident dolor in voluptatum tempore non, placeat obcaecati totam ut delectus libero excepturi distinctio asperiores odit nobis soluta, esse aspernatur beatae.
</div>
#aside{
    floate: left;
    width: 200px;
}
#content{
    floate: right;
    calc(100% - 200px);
}

注意:使用calc计算属性的时候 运算符(- +等等)两边必须有空格
关键点:
1. 注意两个div必须一左一右浮动。
2. calc的宽度必须要减去的宽度要与固定宽度保持一致。

第四种方法:flex

<div id="aside">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat magnam nihil nostrum, similique dolor deserunt voluptatem pariatur alias, ipsum, error quos quo accusantium. Deleniti neque, pariatur voluptates maxime quam perferendis!
</div>
<div id="content">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur tempora sequi minima, placeat esse nulla dolor dolores praesentium illo, distinctio fugiat eligendi debitis animi ut impedit, magni vitae officiis, architecto.
</div>
body{
    display: flex;
}
#aside{
    flex: 0 0 200px;
    background-color: red;
}
#content{
    flex: 1;
    background-color:blue;
}

关键点:
1. 需要给父级div设置display: flex属性。
2. 固定宽度的div设置flex: 0 0 200px即可。
3. 内容区域的div直接写出flex: 1即可。

最后:
需要说明的是方法三和方法四的兼容性不强。慎用!面试的时候可以一提。有兴趣的同学可以看看阮一峰老师的flex教程

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值