gentlecoder

欲买桂花同载酒,终不似,少年游

  • 主页
  • 随笔
所有文章 友情链接 关于我

gentlecoder

欲买桂花同载酒,终不似,少年游

  • 主页
  • 随笔

三栏布局-圣杯、双飞翼以及其他

2019-04-02

本文所指三栏布局为两侧宽度固定,中间宽度自适应的情况。

圣杯布局

圣杯布局通过父元素padding,子元素margin-left以及相对定位来实现。

情况1

html如下

1
2
3
4
5
<div class="content">
<div class="left"></div>
<div class="right"></div>
<div class="main"></div>
</div>

css


查看代码

.content {
padding: 0 200px;
overflow: hidden;
}
.left,
.right,
.main {
float: left;
min-height: 100px;
position: relative;
}
.left,
.right {
width: 200px;
}
.left {
background-color: blue;
margin-left: -100%;
left: -200px;
}
.right {
background-color: red;
margin-left: -200px;
left: 200px;
}
.main {
background-color: green;
width: 100%;
}

情况2

html

1
2
3
4
5
<div class="content">
<div class="main"></div>
<div class="left"></div>
<div class="right"></div>
</div>

css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.content {
padding: 0 200px;
overflow: hidden;
}

.left,
.right,
.main {
float: left;
min-height: 100px;
position: relative;
}

.left,
.right {
width: 200px;
}

.left {
background-color: blue;
margin-left: -100%;
left: -200px;
}

.right {
background-color: red;
margin-left: -200px;
left: 200px;
}

.main {
background-color: green;
width: 100%;
}

Flex布局

情况3

HTML和情况2相同

css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.content {
display: flex;
overflow: hidden;
}

.left,
.right,
.main {
min-height: 100px;
}

.left,
.right {
flex: 0 0 200px;
}

.left {
background-color: blue;
order: 0;
}

.right {
background-color: red;
order: 2;
}

.main {
background-color: green;
width: 100%;
flex: 1;
order: 1;
}

利用order来确定次序。

Grid布局

情况4

HTML和情况2相同

css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.content {
display: grid;
overflow: hidden;
grid-template-columns: 200px auto 200px;
grid-template-rows: auto;
grid-template-areas: "left main right";
}

.left,
.right,
.main {
min-height: 100px;
}

.left,
.right {
}

.left {
grid-area: left;
background-color: blue;
}

.right {
grid-area: right;
background-color: red;
}

.main {
grid-area: main;
background-color: green;
}

双飞翼

情况5

html

1
2
3
4
5
6
7
<div class="content">
<div class="main">
<div class="main-content"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</div>

css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.content {
overflow: hidden;
}

.left,
.right,
.main {
float: left;
min-height: 100px;
position: relative;
}

.left,
.right {
width: 200px;
}

.left {
background-color: blue;
margin-left: -100%;
}

.right {
background-color: red;
margin-left: -200px;
}

.main {
width: 100%;
}

.main-content{
min-height: 100px;
margin:0 200px;
background-color: green;
}

利用中间的margin预留出左右两边的空间,再通过margin负值将左右两栏移到上方空处。

赏

谢谢你请我吃糖果

支付宝
微信
  • css

扫一扫,分享到微信

微信分享二维码
关于CSS优化需要知道的事
你知道快排吗
© 2021 gentlecoder
Hexo Theme Yilia by Litten
  • 所有文章
  • 友情链接
  • 关于我

tag:

  • JavaScript
  • 前端
  • vue
  • bootstrap
  • css
  • git
  • html
  • 算法
  • leetcode
  • 正则
  • es6
  • SegmentFault
  • npm
  • nodejs
  • threejs
  • vscode
  • vue-cli
  • vuejs
  • CSS
  • WebAssembly
  • 函数式编程
  • 前端基础

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 浏览器的渲染机制

    2021-01-03

    #前端基础

  • Intersection Observer详解

    2021-01-02

    #JavaScript

  • 初探WebAssembly

    2020-05-25

    #JavaScript#WebAssembly

  • css-虚线边框滚动效果

    2019-05-05

    #css

  • css-字体文本相关

    2019-05-05

    #css

  • git subtree的使用

    2019-04-28

    #git

  • vscode一些配置

    2019-04-24

    #vscode

  • 关于伪元素

    2019-04-21

    #CSS

  • css中的百分比值到底是相对于谁

    2019-04-20

    #css

  • css渐变了解一下

    2019-04-20

  • 原生css中的变量

    2019-04-20

  • es6实现一个sleep函数

    2019-04-18

    #JavaScript

  • segmentfault答题汇总

    2019-04-15

    #SegmentFault

  • JS中this的软绑定

    2019-04-14

    #JavaScript

  • MouseEvent了解一下

    2019-04-13

    #JavaScript

  • 模拟vdom提取dom树中关键信息入json字符串

    2019-04-13

  • 切换页面主题样式研究及less教程

    2019-04-13

    #JavaScript#css#html

  • h5自带拖拽简单教程

    2019-04-13

    #JavaScript#html

  • 日常问题总结

    2019-04-13

    #JavaScript

  • 你不知道的js

    2019-04-13

    #JavaScript

  • setInterval实现打字机效果

    2019-04-10

    #JavaScript

  • 由一道题引申出的事件循环、let ar用法、iife、块级作用域

    2019-04-10

    #JavaScript

  • 你真的了解proxy和defineProperties吗

    2019-04-10

    #JavaScript

  • 关于BFC

    2019-04-10

    #css

  • 手写instance

    2019-04-07

    #JavaScript

  • 实现一个宽高自适应的正方形

    2019-04-07

    #css

  • 位运算符的使用

    2019-04-07

    #JavaScript#算法

  • string方法之padStart、padEnd

    2019-04-07

  • string方法之charAt,charCodeAt和charPointAt

    2019-04-07

  • vdom作用

    2019-04-07

    #JavaScript

  • background熟练掌握了,那么mask呢

    2019-04-07

  • clip-path剪裁出你想要的图形

    2019-04-07

    #css

  • 手写promise,promise.all,promise.race

    2019-04-07

    #JavaScript

  • 如何实现可以使用for...of遍历对象

    2019-04-07

    #JavaScript

  • 手写generator函数自动执行器

    2019-04-07

    #JavaScript

  • 深拷贝了解一下吗

    2019-04-07

    #JavaScript

  • 两种数组去重方法

    2019-04-07

    #JavaScript

  • 少年,函数式编程之reduce了解一下

    2019-04-04

    #JavaScript#函数式编程

  • 少年,函数式编程之管道函数了解一下

    2019-04-02

    #JavaScript#函数式编程

  • 少年,函数式编程之柯里化了解一下

    2019-04-02

    #JavaScript#函数式编程

  • 关于CSS优化需要知道的事

    2019-04-02

    #css

  • 三栏布局-圣杯、双飞翼以及其他

    2019-04-02

    #css

  • 你知道快排吗

    2019-04-01

    #算法

  • js正则相关

    2019-04-01

    #正则

  • 关于防抖debounce和截流throttle

    2019-04-01

    #JavaScript

  • 在我水了11种水平垂直居中方法之后,我终于明白了

    2019-03-31

    #css

  • 关于原型、原型链、和继承

    2019-03-31

    #JavaScript

  • 选择排序

    2019-03-31

    #算法

  • 冒泡排序

    2019-03-31

    #算法

  • leetcode算法 214

    2019-03-30

    #算法#leetcode

  • leetcode算法 5

    2019-03-30

    #算法#leetcode

  • leetcode算法 140

    2019-03-30

    #算法#leetcode

  • leetcode算法 88

    2019-03-29

    #算法#leetcode

  • git删除远程仓库的提交

    2019-03-28

    #git

  • 使用css画一条0.5px的线

    2018-09-28

    #前端#css

  • vue-cli生成的build及config文件夹中文件解读(4)build.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(3)webpack.dev.conf.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(2)webpack.prod.conf.js

    2018-04-02

    #前端#vue#vue-cli

  • vue-cli生成的build及config文件夹中文件解读(1)webpack.base.conf.js

    2018-03-30

    #前端#vue#vue-cli

  • 'nodejs以及npm使用指南'

    2018-03-30

    #前端#npm#nodejs

  • js三种模块化方式对比以及编译打包机制介绍

    2018-03-21

    #JavaScript#前端#es6

  • js object篇-Object.defineProperty()

    2018-03-20

    #JavaScript#前端

  • 'bootstrap-vue使用'

    2018-03-07

    #前端#vue#bootstrap

  • 页面展示html标签和JavaScript代码

    2018-03-06

    #前端#html

  • 'vue简单教程'

    2018-03-02

    #前端#vuejs

  • 'threejs简单教程'

    2018-02-28

    #前端#threejs

gentlecoder,
寻找世界的真相

热爱读书和游戏,
目前是一枚前端

想做一个温柔的人,想做一桌好吃的饭
欲买桂花同载酒,终不似,少年游。