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

怼烎@ 2022-06-14 03:51 293阅读 0赞

左侧固定,右边自适应

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

第一种方法:浮动布局

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

  1. <div id="aside">
  2. 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.
  3. </div>
  4. <div id="content">
  5. 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.
  6. </div>
  7. #aside{ float: left; width: 200px; background-color: red; }
  8. #content{ margin-left: 200px; background-color: blue; }

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

方法二:利用margin负值。

准备:需要三个div了。

  1. <div id="aside">
  2. 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.
  3. </div>
  4. <div id="content">
  5. <div class="inner">
  6. 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!
  7. </div>
  8. </div>
  9. #aside{ float: left; margin-right: -200px; width: 200px; background-color: red; }
  10. #content{ float: right; }
  11. #content .inner{ margin-left: 200px; background-color: blue; }

关键点:

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

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

  1. <div id="aside">
  2. 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.
  3. </div>
  4. <div id="content">
  5. 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.
  6. </div>
  7. #aside{ floate: left; width: 200px; }
  8. #content{ floate: right; calc(100% - 200px); }

注意:使用calc计算属性的时候 运算符(- +等等)两边必须有空格
关键点:

  1. 注意两个div必须一左一右浮动。
  2. calc的宽度必须要减去的宽度要与固定宽度保持一致。

第四种方法:flex

  1. <div id="aside">
  2. 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!
  3. </div>
  4. <div id="content">
  5. 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.
  6. </div>
  7. body{ display: flex; }
  8. #aside{ flex: 0 0 200px; background-color: red; }
  9. #content{ flex: 1; background-color:blue; }

关键点:

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

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

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读