双飞翼布局的改造 box-sizing和margin负值的应用

box-sizing + margin负值 升级双飞翼布局

一、box-sizing属性

.content-size, .border-size{
    width: 200px;
    height: 100px;
    padding: 10px;
    border: 5px solid red;
    margin: 20px;
}
.content-size{
    box-sizing: content-box;
}
.border-size{
    box-sizing: border-box;
}
  1. context-size、border-size两个类的的width、height、padding、border、margin值都是一致。
  2. box-sizing: content-box时,div的宽度和高度为width和height的值
  3. box-sizing:border-box时,div的宽度和高度为 padding + border + width(内容高度)

二、border-box属性的应用

对双飞翼布局的改造,传统的双飞高度是自适应的。本次通过box-sizing属性的border-box值对双飞翼布局的高度进行定高,从而实现head与footer固定,而中间内容部分自动出现滚动条的能力。

代码如下:

<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div, body{
            margin: 0px;
        }
      .head{
          height: 60px;
          background: red;
      }
      .main {
          height: 100%;
          clear: both;
          box-sizing: border-box;
          padding: 60px 0px 100px 0px;
          margin: -60px 0px -100px 0px;
      }
      .main-main{
          clear: both;
      }
      .main-main:after{
          content: ‘‘;
          display: block;
          overflow: hidden;
          clear: both;
      }
      .cont-main{
          margin: 0px 300px 0px 200px;
          overflow: hidden;
          overflow-y: auto;
          height: inherit;
      }
      .main .cont, .main .left, .main .right{
          float: left;
          height: 100%;
      }
      .main .cont{
          width: 100%;
      }
      .main .left{
        width: 200px;
        margin-left: -100%;
      }
      .main .right{
        width: 300px;
        margin-left: -300px;
      }
      .footer{
          height: 100px;
          background: gray;
      }
    </style>
</head>
<body>
    <div class="head">head</div>
    <div class="main">
        <div class="main-main">
            <div class="cont">
                <div class="cont-main">
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont<br/>
                    cont最后一条<br/>
                </div>
            </div>
            <div class="left">left</div>
            <div class="right">right</div>
        </div>
    </div>
    <div class="footer">footer</div>
</body>
</html>

效果图:

重点代码解析

  1. 实现传统的双飞翼布局,此处不在赘述。
  2. 根据box-sizing属性的介绍,可以知道设置为border-box时,他的高度=padding + border的值,其中还需要利用margin的负值。
    1. padding缩小内容本身的高度
    2. margin负值拉近head、footer与内容的距离
.main {
      height: 100%;
      clear: both;
      box-sizing: border-box;
      padding: 60px 0px 100px 0px;
      margin: -60px 0px -100px 0px;
  }
  1. 内容部分滚动条的实现 由于我们的main(中间部分的最外层div,如.main)必须要设置height:100%,让其高度满屏。所以内容布局外层还需要增加一个div(如.main-main)。此时.main-main的高度就是我们想要的了。如下中间主体部分了css代码:
.cont-main{
  margin: 0px 300px 0px 200px;
  overflow: hidden;
  overflow-y: auto;
  height: inherit;
}
时间: 2025-01-01 08:40:48

双飞翼布局的改造 box-sizing和margin负值的应用的相关文章

几个常见的布局的多种实现方式及margin负值总结

第一部分:几个常见的布局实现方式 一.左右两边固定, center中间自适应未知 html代码中 center 部分首先要放在box的最前部分.然后是left,right 圣杯布局: <div class="box"> <div class="center"></div> <div class="left"></div> <div class="right"&g

CSS布局 -- 圣杯布局 &amp; 双飞翼布局

按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应. 但在这里实现起来还是有一些区别的 [圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致. DEMO 稍微说明一下: html代码中  middle部分首先要放在container的最前部分.然后是left,right 1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到) 2.mid

css中的圣杯布局和双飞翼布局

圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩小到指定的700px的时候,页面内容宽度不再随着浏览器缩小.是为了电脑的正常浏览效果 2.注意到container设置的值0 220px  0 200px,上 右 下 左,所以left 设置widh:200px,right设置width:220px 3.设置min-height:300px,是让三列

css-圣杯布局和双飞翼布局

[圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致. DEMO 稍微说明一下: html代码中  middle部分首先要放在container的最前部分.然后是left,right 1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到) 2.middle部分 width:100%占满 3.此时middle占满了,所以要把left拉到最左边,使用margin-left:-

网页布局——双飞翼布局

圣杯布局与双飞翼布局的区别: 圣杯布局(两边定宽,中间自适应的另一种实现方式,这两种方式在结构的书写上还是有不一样的),主要是用相对定位与浮动和padding实现. 实现两边定宽,中间自适应,主要是通过浮动与margin实现,代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>双飞翼布局&

圣杯 双飞翼布局 多栏自适应布局BFC

七种实现左侧固定,右侧自适应两栏布局的方法 圣杯布局 双飞翼布局 圣杯布局和双飞翼布局 CSS深入理解流体特性和BFC特性下多栏自适应布局 块状元素的流体特性. 图片宽度一直width:100%,结果随着margin, padding, border的出现,其可用宽度自动跟着减小,形成了自适应效果.就像放在容器中的水流一样,内容区域会随着margin, padding, border的出现自动填满剩余空间(box-sizing:border box;感觉) 然而,利用块状元素流体特性实现的自适应

关于圣杯、双飞翼布局

<!DOCTYPE html><html><head> <title>附加案例</title> <style type="text/css"> body{ background: #ccc; margin: 0; padding: 0; } .container{ --width: 400px; width:calc(var(--width) * 2); height: var(--width); margin:

CSS3之圣杯布局和双飞翼布局

圣杯布局: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>圣杯布局</title> <!--圣杯布局:--> <!--1 搞一个容器,里面放三个盒子--> <!--2 设置两侧盒子的宽度 固定--> <!--3 设置中间盒子的宽度等于容器的宽度(100%)--&

css两栏布局、圣杯布局、双飞翼布局

最近几个月一直用vue在写手机端的项目,主要写业务逻辑,在js方面投入的时间和精力也比较多.这两天写页面明显感觉css布局方面的知识有不足,所以复习一下布局方法. 两栏布局 1.浮动 .box1 .left { float: left; width: 100px; height: 100px; background-color: red; } .box1 .right { margin-left: 100px; height: 100px; background-color: green; }