面试题CSS盒子模型,左右固定宽度,中间自适应的五种死法

百眼魔君
• 阅读 2725

面试题目 假设高度已知,请写出三栏布局,左右300px,中间自适应

面试题CSS盒子模型,左右固定宽度,中间自适应的五种死法
有几种方法呢?

  1. 最容易的应该想到利用float来写,代码如下

css样式代码,以下五种都是用一个样式代码

<section>
  <article>
    <div class="container">
      <div class="main left"></div>
      <div class="main right"></div>
      <div class="main center">
        <h1>float </h1>
        <p>float浮动划分左中右</p>
      </div>
    </div>
  </article>
</section>

css代码

.main {
      height: 100px;
    }

    .left {
      float: left;
      width: 300px;
      background-color: green;
    }

    .right {
      float: right;
      width: 300px;
      background-color: gray;
    }

    .center {
      background-color: gold;
    }
  </style>

面试题CSS盒子模型,左右固定宽度,中间自适应的五种死法

总结 优缺点,要理解优缺点,首先要明白什么是浮动
浮动布局的原理:对元素设置float:left或者right,使元素脱离文档流,同时显示为类似display:inline-block的形式(可以定义宽高,但是又不会换行)。
优点 相比之前table布局更具有灵活性
缺点 脱离文档流,下面的元素都受影响。并且要使用clear:both 清除浮动 父类添加clearfix类。
.clearfix:after{content:"";height:0;display:block;clear:both}
.clearfix{*display:inline-block}
.clearfix{*display:block;}

2 . position 定位方法实现
代码格式如下

.position-left {
      width: 300px;
      background-color: green;
      position: absolute;
      left: 0;
    }
    .position-right {
      width: 300px;
      background-color: gray;
      position: absolute;
      right: 0;
    }
    .position-center {
      background-color: gold;
      position: absolute;
      left: 300px;
      right: 300px;
    }
position 定位优缺点
优点: 每个元素的显示位置相对独立,方便每个元素的控制,使用定位属性,结合边偏移属性,可以将元素放置在任何需要的位置,这样做的好处在于,无需考虑元素本身的显示方式和页面代码中所处的位置,直接将元素分离出来进行定位。
缺点:每个元素独立控制,很难预测元素之间的相互影响,同时也可能发生元素重叠的情况,导致部分内容无法正常显示.

3.flex布局实现方法代码如下

.flex {
      margin-top: 160px;
      display: flex;
    }
    .flex-left {
      width: 300px;
      background-color: green;
    }
    .flex-right {
      width: 300px;
      background-color: gray;
    }
    .flex-center {
      flex: 1;
      background-color: gold;
    }

样式有稍微的改动代码如下

<article>
    <div class="flex">
      <div class="main flex-left"></div>
      <div class="main flex-center">
        <h1>flex </h1>
        <p>flex浮动划分左中右</p>
      </div>
      <div class="main flex-right"></div>
    </div>
  </article>

flex 布局的优缺点
优点:Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 现在是主流响应式布局开发的主力,任何一个容器都可以指定为 Flex 布局。
缺点:不支持IE8及以下的浏览器

4、表格布局代码如下

    .table {
      width: 100%;
      display: table;
      margin-top: 30px;
    }
    .table-left {
      display: table-cell;
      width: 300px;
      background-color: green;
    }
    .table-right {
      display: table-cell;
      width: 300px;
      background-color: gray;
    }
    .table-center {
      display: table-cell;
      background-color: gold;
    }

优点 表格布局的兼容性很好,在flex布局不兼容的时候,可以尝试表格布局
缺点 一个单元格高度超出的时候,两侧的单元格也是会跟着一起变高,有时候这种效果不是我们想要的
5、网格布局
代码如下

  .gird {
      display: grid;
      grid-template-rows: 100px;
      grid-template-columns: 300px auto 300px;
      margin-top: 30px;
    }
    .gird-left {
      background-color: green;
    }
    .gird-right {
      background-color: gray;
    }
    .gird-center {
      background-color: gold;
    }

优点
1 能大大的提高网页的规范性和可重用性。在栅格系统下,将页面模块的尺寸标准化,这对于大型网站的开发和维护来说,能节约不少成本;
2  基于栅格进行设计,可以让整个网站各个页面的布局保持一致。这能增加页面的相似度,提升用户体验;
3  对于设计师们来说,灵活的运用栅格系统,能做出很多优秀和独特的设计。
缺点 css新技术浏览器还没有全面支持。

延伸问题

高度已知换为高度未知呢?
块内内容超出会是怎样的效果?
如果是上下高度已知,中间自适应呢?
如果是两栏布局呢?
如果是上下左右混合布局呢?

顺便打个广告 自学的前端快3个月了想找一份工作,地点北京。

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
如何优雅的写 css 代码
CSS(全称CascadingStyleSheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS非常易于学习,但其知识点广泛且分散,很难做到精通,在我们日常开发中,常常忽视了CSS代码的质量,很容易写出杂乱无章的CSS文件。
菜园前端 菜园前端
2年前
什么是 CSS?
原文链接:什么是CSS?CSS指层叠样式表(CascadingStyleSheets),理解为CSS样式就可以了。CSS样式有什么作用呢?比如我们在页面中添加了一个div,我想给这个div设置宽度、高度、背景色、阴影、内容字体样式等等,就是通过CSS样式来
菜园前端 菜园前端
2年前
你真的了解的CSS3盒模型和CSS3特性知识吗
原文链接:什么是CSS3?CSS3是CSS一个新的标准,直接理解为是CSS的升级版,里面新增了很多样式(特性)。CSS3盒子模型:::warningCSS3盒子模型必须要掌握,否则你在实际开发中遇到样式错乱很难排查问题。:::旧版的IE浏览器与其它浏览器解
Wesley13 Wesley13
3年前
CSS 右侧固定宽度 左侧自适应 或者 三列布局 左右固定 中间自适应的问题
一: 右侧固定宽度左侧自适应  第一种方法:左侧用marginright,右侧float:right 就可以实现。    HTML代码可以如下写:   <div      <ahref""target"_blank"我是龙恩</a   </div <div
Wesley13 Wesley13
3年前
2020 全球 CSS 报告,大家都在用什么样的技术?
本文来源与公众号「秋风的笔记」介绍CSS从1994年10月首次被提出,到目前为止已经20余年,但是CSS早已发生了天翻地覆的变化,2020的CSS 又是如何的呢?我们现在可以使用CSSGrid轻松制作动态或响应式的布局,以更少的代码来进行自适应布局。CSSinJS无需依赖全局样式表,我们可以将样式与组件写在一起
Wesley13 Wesley13
3年前
CSS3的基础知识学习(二)
前言:CSS主要是用来修饰标签的样式、使得网页更加美观,其实css的引用有三种方式,但主要是使用链接引用,意思就是我们写一个.css的文件,将样式修饰的控制代码写在这里面,这样控制起来方便快捷。对于CSS的学习,知识点中最重要的部分就是属性和选择器,其次还有页面布局和盒子模型,下面进行学习以及代码效果演示。一、CSS的三种引入
Wesley13 Wesley13
3年前
CSS基本语法及页面引用
css基本语法及页面引用(1)css基本语法css的定义方法是:选择器{属性:值;属性:值;属性:值;}选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值。代码示例:/css注释ctrlshift"/"/d
Stella981 Stella981
3年前
Python+Selenium练习篇之5
前面介绍了,XPath,id,class,linktext,partiallinktext,tagname,name七大元素定位方法,本文介绍webdriver支持的最后一个方法:by\_css。css和XPath类似,也需要掌握一些语法,才能写出正确的,完整的css选择表达式。相关脚本代码如下:codingu
Stella981 Stella981
3年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Wesley13 Wesley13
3年前
JS和CSS加载(渲染)机制不同
一、结论CSS可以在页面加载完成后随时渲染。举个例子:通过js给某个元素加一个id或者css,只要这个id或者css有对应的样式,此元素的样式就会自动生效。JS不可以在页面加载完成后生效。最明显的例子就是使用EasyUI的时候,iframe中哪些样式无效(EasyUi是依靠JS进行样式处理的,所以无法运行JS,那么样式也就无法设置。简单点说