面试相关

一.实现左侧固定,右侧自适应的方法

基本样式
html

  <div class="container">
    <div class="left">
    </div>
    <div class="right">
    </div>
  </div>

css

    .container {
      width: 100%;
      height: 800px;
      border: 1px solid black;
    }

    .container .left {
      width: 200px;
      height: 800px;
      border: 1px solid black;
    }

    .container .right {
      height: 800px;
      margin-left: 200px;
      background-color: rebeccapurple;
    }

1.使用float+margin-left

实现:左边元素浮动,右侧元素设置margin-left调整与左侧元素的间距,代码如下

 .container  {
      overflow: hidden; /* 清除浮动 */
    }
 .container .left {
      float: left;
    }
 .container .right {
      margin-left: 200px;
    }

思路:右侧块级元素未规定宽度时,其宽度随父元素宽度大小而发生变化,再将左侧盒子浮动使其脱离文档流使左右两元素并排排列,这时右侧盒子可以实现自适应但左右两盒子重叠,这时增加右侧盒子的margin-left,使两盒子分离,从而实现需求.
缺点:
a.因为左侧盒子浮动,有些情况需要清除浮动
b.右侧盒子的margin-left计算时需要考虑左侧盒子的宽度

2.使用absolute+margin-left

实现:与上诉方法基本一致,左侧盒子由浮动变为绝对定位,代码如下

 .container .left {
      position: absolute;
    }
 .container .right {
      margin-left: 200px;
    }

思路:同上
缺点:a.需设置父盒子position属性为relative
b.没有清除浮动的方法,只能设置右侧盒子的min-height来防止父盒子坍塌

3.使用float+BFC

实现:左侧浮动,右侧变为一个BFC,代码如下

 .container  {
      overflow: hidden;  /* 清除浮动 */
    }
 .container .left {
      float: left;
      margin-right: 200px;
    }
 .container .right {
      overflow: hidden;
    }

思路:利用BFC规则:'BFC元素与浮动元素不重叠',使右边的盒子变为一个BFC,我们用到的方法是设置overflow: hidden,左侧盒子浮动,此时两盒子分离,在设置左侧盒子的右边距.
缺点:父盒子需要清除浮动

4.flex布局

实现:使用flex布局,代码如下

 .container  {
      display: flex;
      align-items: flex-start;  /* flex容器中的项目从头开始排列(并不拉伸) */
    }
 .container .left {
      flex: 0 1 auto;
    }
 .container .right {
      flex: 1 1 auto;
    }

思路:flex: 0 1 auto;是flex-grow, flex-shrink 和 flex-basis的缩写,代码项目的放大,缩小,项目占剩余空间的大小.
缺点:兼容性不好.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,626评论 1 45
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,508评论 0 5
  • 琴雪_山人阅读 414评论 3 7
  • 我们生活中的大多数问题,都可以归结到“说话”的问题。 有时候,我们努力着,真的想好好说话,但在现实生活里,把话说好...
    果愉018阅读 460评论 0 0