博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS 三栏布局之圣杯布局和双飞翼布局
阅读量:6238 次
发布时间:2019-06-22

本文共 2319 字,大约阅读时间需要 7 分钟。

CSS 三栏布局之圣杯布局和双飞翼布局

主要介绍两种, 圣杯布局和双飞翼布局

两者都是实现左右两栏固定宽度, 中间自适应的三栏布局. 写了两个Demo, 实现了两种布局的效果, 点击可以预览

1. 圣杯布局

圣杯布局来源于文章 首先给出固定HTML样式, 注意中间的盒子要定义在前面先渲染

这是中间的盒子

这是左边的盒子

这是右边的盒子

复制代码

1.1 首先给cotainer设置padding 撑开两边, 为两栏留出空间

.container {    padding-left: 200px;    padding-right: 150px;}复制代码

得到下图

1.2. 给三个盒子都设置浮动, 给左右盒子定死宽度, 中间自适应, 同时清除浮动

/*清除浮动*/.container::after {    content: "";    display: block;    clear: both;}.left, .right, .middle {    float: left;}.left {    width: 200px;}.right {    width: 150px;}.middle {    width: 100%;}复制代码

如此可以得到下图, 中间盒子占了100%, 因此占据了整行, 左右两个盒子被挤到了下面

接下来的工作就是将左右两个盒子放到预留的位置上

1.3 利用负margin将左右盒子放置预留位置

还需要使用position: relative;, 来辅助定位

.left, .right {    position: relative;}.left {    margin-left: -100%;    left: -200px;}.right {    margin-left: -150px;    right: -150px;}复制代码

最终效果图

总样式

/* 公共样式 */.container {    width: 800px;    border: 1px dashed #dedede;}.container::after {    content: "";    display: block;    clear: both;}.left {    width: 200px;    background: #2DB3E4;}.right {    width: 150px;    background: #F37EC1;}.middle {    width: 100%;    background: #81B6AE;}.left, .right, .middle {    float: left;}复制代码

布局样式

.container {    padding-left: 200px;    padding-right: 150px;}.left, .right {    position: relative;}.left {    margin-left: -100%;    left: -200px;}.right {    margin-left: -150px;    right: -150px;}复制代码

2. 双飞翼布局

双飞翼布局, 源于淘宝UED 双飞翼布局需要更改DOM结构

这是中间的盒子

这是左边的盒子

这是右边的盒子

复制代码

在圣杯布局中, 是通过给父容器设置padding, 用以给左右盒子留出空间 而在双飞翼布局中, 通过给中间的盒子中额外新增的div设置margin,

布局样式

.main {    margin-left: 200px;    margin-right: 150px;}.left {    margin-left: -100%;}.right {    margin-left: -150px;}复制代码

布局样式相对于圣杯布局简洁了不少, 不需要设置position: relative;来辅助定位

公共样式

p {    margin: 0;    padding-bottom: 20px;}.container {    width: 800px;    border: 1px dashed #dedede;}.container::after {    content: "";    display: block;    clear: both;}.left {    width: 200px;    background: #2DB3E4;}.right {    width: 150px;    background: #F37EC1;}.middle {    width: 100%;    background: #81B6AE;}.left, .right, .middle {    float: left;}复制代码

转载于:https://juejin.im/post/5c7620656fb9a049d236b958

你可能感兴趣的文章
css 兼容性写法,CSS hack写法
查看>>
剑指offer 之 C/C++基础知识1
查看>>
(KMP 暴力)Corporate Identity -- hdu -- 2328
查看>>
Silverlight程序中访问配置文件
查看>>
Linux下利用rsync实现多服务器文件同步
查看>>
2.3 Rust函数
查看>>
1.3 IDAE 中使用GO开发项目
查看>>
Activity、Fragment、ViewPage
查看>>
《信息安全系统设计基础》课程总结
查看>>
衣码对照表
查看>>
Vue-Router导航守卫
查看>>
tool
查看>>
hdu2087 剪花布条
查看>>
获取现阶段选中的tab的标题(easyui)
查看>>
tty的核心位置,与运行调用过程
查看>>
Python全栈学习_day011作业
查看>>
20172304 实验三报告
查看>>
[转载]项目风险管理七种武器-霸王枪
查看>>
正则实例
查看>>
Hash与Map
查看>>