美文网首页
高度已知,三栏布局,左右宽度300,中间自适应

高度已知,三栏布局,左右宽度300,中间自适应

作者: 李贵功 | 来源:发表于2019-06-03 22:40 被阅读0次

float解决方案,DOM顺序与视觉顺序相符

一个左浮动一个右浮动, 中间的元素,利用calc给一个固定的宽度,并设置成行内块元素,即可

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <style>
    body {
      width: 100%;
      height: 100%;
      /*background: chocolate;*/
    }
    .box1 {
      height: 500px;
      width: 300px;
      float: left;
      background: cadetblue;
    }
    .box2 {
      width: calc(100% - 600px);
      height: 500px;
      display: inline-block;
      background: cornflowerblue;
    }
    .box3 {
      height: 500px;
      width: 300px;
      float: right;
      background: chocolate;
    }
  </style>
</head>
<body>
<div class="box">
  <div class="box1">123</div>
  <div class="box2">456</div>
  <div class="box3">789</div>
</div>
</body>
</html>
效果图

float解决方案,DOM顺序与视觉顺序不符

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <style>
    body {
      width: 100%;
      height: 100%;
      /*background: chocolate;*/
    }
    .container {
      /*height: 300px;*/
    }
    .left {
      width: 300px;
      float: left;
      height: 100px;
      background: #FF79BC;
    }
    .center {
      height: 200px;
      /*text-align: center;*/
      font-size: 30px;
      color: #fff;
      background: #666;
      margin: 0 300px;
    }
    .right {
      width: 300px;
      height: 100px;
      float: right;
      background: #CA8EFF;
    }
  </style>
</head>
<body>
<div class="container">
  <div class="left"></div>
  <div class="right"></div>
  <div class="center">float解决方案,DOM顺序与视觉顺序不符</div>
</div>
</body>
</html>
效果图

position解决方案

<div class="box">
  <div class="box1">123</div>
  <div class="box2">456</div>
  <div class="box3">789</div>
</div>
* {
      padding: 0;
      margin: 0;
    }
    html, body{
      width: 100%;
      height: 100%;
      /*background: chocolate;*/
    }
    .box {
      height: 100%;
      position: relative;
    }
    .box1{
      position: absolute;
      top: 0;
      left: 0;
      width: 300px;
      height: 100%;
      background: cadetblue;
    }
    .box3{
      position: absolute;
      top: 0;
      right: 0;
      width: 300px;
      background: cornflowerblue;
      height: 100%;
    }
    .box2{
      margin: 0 300px;
      background: cornsilk;
      height: 100%;
    }
image

圣杯布局(margin负值解决方案),DOM顺序与视觉顺序不符

<div>
  <div class="inner">
    <div class="center">圣杯布局(margin负值解决方案),DOM顺序与视觉顺序不符</div>
  </div>
  <div class="left">左</div>
  <div class="right">右</div>
</div>
<style>
    .inner {
      width: 100%;
      float: left;
    }
    .center {
      margin: 0 300px;
      background: cornsilk;
    }
    .left {
      width: 300px;
      float: left;
      margin-left: -100%;
      background: cadetblue;
    }
    .right {
      width: 300px;
      float: left;
      margin-left: -300px;
      background: cornflowerblue;
    }
  </style>
image

弹性盒子flex解决方案

<div class="box">
  <div class="left">左</div>
  <div class="center">居中</div>
  <div class="right">右</div>
</div>
<style>
    .box {
      display: flex;
    }
    .left {
      flex: 0 0 300px;
      background: cornflowerblue;
    }
    .center {
      flex: 1;
      background: cadetblue;
    }
    .right {
      flex: 0 0 300px;
      background: cornsilk;
    }
</style>
image

表格布局(等高)

<div class="container ct4">
  <div class="left l4">左</div>
  <div class="center c4">表格布局(等高)</div>
  <div class="right r4">右</div>
</div>
.ct4 {
      display: table;
      width: 100%;
      margin-bottom: 100px;
    }
    .ct4 > div {
      display: table-cell;
      height: 500px;
    }
    .l4 {
      width: 300px;
      background: cornsilk;
    }
    .r4 {
      background: cadetblue;
      width: 300px;
    }
image

网格Grid解决方案

<div class="container ct6">
  <div class="left l6"></div>
  <div class="center c6">网格Grid解决方案</div>
  <div class="right r6"></div>
</div>
<style>
    .ct6 {
      display: grid;
      grid-template-columns: 300px auto 300px;
    }
    .left {
      background: cadetblue;
    }
    .right {
      background: chocolate;
    }
    .center {
      background: cornsilk;
      height: 200px;
    }
</style>

总结

建议用前几种方案,因为后面几种的方案,有兼容性

相关文章

  • css 事件

    布局: 高度已知,左边宽度300,右边300,中间宽度自适应布局 浮动、绝对定位、flex、display:tab...

  • css布局

    简单的布局问题 高度已知,三栏布局,要求左右宽度固定,中间自适应,怎么实现?

  • CSS三栏自适应布局、二栏自适应布局

    三栏自适应布局:左右宽度300px,中间宽度自适应,整体高度自适应 1)绝对定位法 左右两边使用absolute定...

  • 五大布局总结

    1、高度已知,做三栏布局,左右宽300px,中间自适应 问题1:当中间内容高度超出本身的高度,纯float布局会出...

  • | 三栏布局

    三栏布局特点:整体高度已知,左右两边宽度固定,中间内容宽度自适应。 浮动布局方案 这里使用了 less 语法,所以...

  • 前端面试准备--1.页面布局类

    页面布局 题目:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应 1、float 绝对定...

  • 前端面试系列:页面布局之三栏布局

    假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px;中间自适应。 浮动 绝对定位 flex布局 表格布...

  • CSS 布局

    实现三栏布局:高度固定,中间自适应,左右宽度是 300px。(div 标签的位置) 布局一:圣杯布局 圣杯布局和双...

  • CSS布局面试题

    页面布局 题目:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应 页面布局的变通 两栏布...

  • 看慕课网面经总结(全)

    页面布局 假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应 5种不同方法,float,p...

网友评论

      本文标题:高度已知,三栏布局,左右宽度300,中间自适应

      本文链接:https://www.haomeiwen.com/subject/eaxkxctx.html