2019-02-26左右布局和左中右布局

左右布局

一列固定宽度,另外自适应宽度
一般情况下,最简单的方式时浮动元素+普通元素margin


image.png

aside需要一个固定宽度,高度由里面元素自动撑开,布局方式从左到右。所以必须要有浮动,如果没有浮动,这两个都是块级元素,content在aside下方。
给aside加上浮动以后,给content加上一个margin-left,把左侧空间腾出来.content必须清除浮动加上clear:both等等。否则的话footer就会上扬(没有伪类占空间)
对于浮动元素的渲染,需要模拟浏览器的渲染方式


image.png

如果先读取main,因为是块级元素,会把整行占满,aside自然到下一行开始往右浮动,所以渲染顺序不一样,导致结果不一样

圣杯布局


原理大致是这样的:采用负边距使得浮动元素达到预设的位置后,再使用padding使得两侧留出空白区域待左、右边距占用,然后再使用相对定位使得左、右边距能够流向预定的位置。

第一步:先写出html代码

    <div class="bd-3-lr">
        <div class="main">
            <p>主内容栏自适应宽度</p>
        </div>

        <div class="aside-1">
            <p>侧边栏1固定宽度</p>
        </div>

        <div class="aside-2">
            <p>侧边栏2固定宽度</p>
        </div>
    </div>

注意的是,父元素的三栏务必先写中间盒子。因为中间盒子是要被优先渲染。并且设置其自适应为width:100%。
第二步 写css样式
(1)main ,左 ,右三个区块都设置左浮动,父元素清除浮动,main区块设置100%,左右两区块需要定宽,比如200px;
(2)左区块设置margin-left :-100%,使其覆盖main区块的左边区域。这个-100%是以mian的宽度砍掉两边的padding值后的宽度
(3)右区块设置margin-left :负自身宽度,使其覆盖main区块的右边区域。负边距起始位置也是main砍掉右边的padding的位置起算。
(4)main自身加padding 。.main{ padding: 0 200px;} ,让父容器的3个区块往中间挤。
(5)用相对定位position:relative,leftright.让左右两个区块在不脱离文档流的情况下偏移位置,拉出自身宽度,覆盖到父元素的padding上。同时保证左右两区块移动时候不遮挡中间。

Paste_Image.png

双飞翼布局


双飞翼和圣杯也是先设置三栏元素全部float,左右两栏添加负边框让其和中间元素挤在一行。圣杯用的是padding和相对定位,双飞翼的不同是,比如双飞翼的main中多了一层div嵌套,把margin拿到内层上去,在内部嵌套中设置左右margin,然后另外两个模块分别用负边距拉到指定位置。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,827评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,824评论 1 45
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,644评论 0 6
  • 一、负边距在让元素产生偏移时和position: relative有什么区别? 负边距在让元素产生偏移的时候其自身...
    dengpan阅读 327评论 0 0
  • 是我吵醒了你么 还是你惊扰了我 对不起 是你太安静了 才窥探到了我的心声 只是 不想说 是因为思念还是因为习惯 ...
    零度出走阅读 277评论 0 1