双飞翼布局的改造 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;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8

CSS判断不同分辨率浏览器(显示屏幕)显示不同宽度布局CSS3技术支持IE6到IE8。将用到css3 @media样式进行判断,但IE9以下版本不支持CSS3技...

488100
来自专栏前端知识分享

第181天:HTML5——视频、音频

11510
来自专栏跟着阿笨一起玩NET

利用vertical-align:middle实现在整个页面居中

如果想让一个div或一张图片相对于整个页面居中,用vertical-align:middle可以很简单地解决。

15210
来自专栏前端知识分享

第4天:JS入门-给div设置宽高背景色

今天学习了js入门课程,听的不多,做了个小练习,给div设置宽高、背景色。一点点都是进步。核心代码如下:

10110
来自专栏阮一峰的网络日志

Flexbox 布局的最简单表单

弹性布局(Flexbox)逐渐流行,越来越多人使用,因为它写 CSS 布局真是太方便了。

10320
来自专栏前端小叙

ul li列表元素浮动导致border没有底边解决办法

如图,当ul li,li元素浮动,并且ul元素也overflow:hidden清除浮动的时候,给li元素加了border,但是不显示底边,这时候要看是不是没有给...

30850
来自专栏分享达人秀

屏幕宽高不够,滚动视图ScrollView来凑

前面几期学习了ProgressBar系列组件、ViewAnimator系列组件、Picker系列组件和时间日期系列组件,接下来几期继续来学习常见的其他组...

23260
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何快速实现快递信息流的效果

设置NodeViewItem背景色的透明度,将该属性设置为“0”,即背景全透明,如图2;

13520
来自专栏前端技术总结

实例详解:Flex布局(二)

在之前的一篇文章:详解CSS的Flex布局中介绍了CSS的Flex布局的基本知识,包括flex-container的6个属性,以及flex-item的6个属性。...

1.4K420
来自专栏杨龙飞前端

圣杯布局,双飞翼布局,和自己独创的布局

14120

扫码关注云+社区

领取腾讯云代金券