CSS布局-圣杯布局
圣杯布局
圣杯布局很完美(兼容所有浏览器,包括IE6),但是使用了相对定位,布局有局限性,宽度控制要改的地方也多。
第一种方法公用部分:
.lgyz, .lzrg, .lrzcg, .lcgrz, .lzcrg {margin:10px 0; min-width:400px;text-align: center;color:#ffffff; }
.left {background-color: #4DBCB0; padding:20px 0;}
.aside, .center, .right {background-color: #E35881;padding:20px 0; }
第二种方法都不考虑兼容IE8及以下。
左侧栏固定宽度,右侧自适应 :

第一种写法:
<div class="lgyz">
<div class="left">主内容栏自适应宽度</div>
<div class="aside">侧边栏固定宽度</div>
</div>
.lgyz{zoom:;overflow:hidden;padding-left:210px;}
.lgyz .aside{float:left;width:200px;margin-left:-100%;position:relative;left:-210px;_left:;}
.lgyz .left{float:left;width:100%;}
第二种写法:
<div class="layout">
<aside class="layout__aside">侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
</div>
.layout:after {clear: both;content: " "; display: table;}
.layout__aside, .layout__main {float: left;}
.layout {padding-left: 210px;}
.layout__main {width: 100%;}
.layout__aside {width: 200px;margin-left: -210px;}
右侧栏固定宽度,左侧自适应 :

第一种写法:
<div class="lzrg">
<div class="left">主内容栏自适应宽度</div>
<div class="aside">侧边栏固定宽度</div>
</div>
.lzrg{zoom:;overflow:hidden;padding-right:210px;}
.lzrg .aside{float:left;width:200px;margin-left:-200px;position:relative;right:-210px;}
.lzrg .left{float:left;width:100%;}
第二种写法:
<div class="layout">
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside">侧边栏宽度固定</aside>
</div>
.layout:after{clear:both;content:" ";display:table;}
.layout{padding-right:210px;}
.layout__main{width:100%;float:left;}
.layout__aside{float:right;width:200px;margin-right:-210px;}
左右固定 中间自适应

第一种:
<div class="lrzcg">
<div class="left">主内容栏自适应宽度</div>
<div class="center">侧边栏1固定宽度</div>
<div class="right">侧边栏2固定宽度</div>
</div>
.lrzcg{zoom:;overflow:hidden;padding-left:210px;padding-right:210px;}
.lrzcg .left{float:left;width:100%;}
.lrzcg .center{float:left;width:200px;margin-left:-100%;position:relative;left:-210px;_left:210px;}
.lrzcg .right{float:left;width:200px;margin-left:-200px;position:relative;right:-210px;}
第二种:
<div class="layout">
<aside class="layout__aside layout__aside--left">左侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside layout__aside--right">右侧边栏宽度固定</aside>
</div>
.layout:after{clear:both;content:" ";display:table;}
.layout__aside,.layout__main{float:left;}
.layout{padding:0 210px;}
.layout__main{width:100%;}
.layout__aside{width:200px;}
.layout__aside--left{margin-left:-210px;}
.layout__aside--right{margin-right:-210px;float:right;}
第三种:
<div class="layout__main-wrapper">
<div class="layout__main">主内容栏宽度自适应</div>
</div>
<aside class="layout__aside layout__aside--left">左侧边栏宽度固定</aside>
<aside class="layout__aside layout__aside--right">右侧边栏宽度固定</aside>
<footer class="clear">底部</footer>
.clear{clear:both;}
.layout__main-wrapper,.layout__aside{float:left;}
.layout__main-wrapper{width:100%;}
.layout__main{margin:0 210px;}
.layout__aside{width:200px;}
.layout__aside--left{margin-left:-100%;}
.layout__aside--right{margin-left:-200px;}
都在左边,右侧自适应

第一种:
<div class="lcgrz">
<div class="left">主内容栏自适应宽度</div>
<div class="center">侧边栏1固定宽度</div>
<div class="right">侧边栏2固定宽度</div>
</div>
.lcgrz{zoom:;overflow:hidden;padding-left:420px;}
.lcgrz .left{float:left;width:100%;}
.lcgrz .center{float:left;width:200px;margin-left:-100%;position:relative;left:-420px;_left:0px;}
.lcgrz .right{float:left;width:200px;margin-left:-100%;position:relative;left:-210px;_left:210px;}
第二种:
<div class="layout">
<aside class="layout__aside layout__aside--first">第1个侧边栏宽度固定</aside>
<aside class="layout__aside layout__aside--second">第2个侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
</div>
.layout:after{clear:both;content:" ";display:table;}
.layout__aside,.layout__main{float:left;}
.layout{padding-left:420px;}
.layout__main{width:100%;}
.layout__aside{width:200px;}
.layout__aside--first{margin-left:-420px;}
.layout__aside--second{margin-left:-210px;}
都在右边,左侧自适应

第一种:
<div class="lzcrg">
<div class="left">主内容栏自适应宽度</div>
<div class="center">侧边栏1固定宽度</div>
<div class="right">侧边栏2固定宽度</div>
</div>
.lzcrg{zoom:;overflow:hidden;padding-right:420px;}
.lzcrg .left{float:left;width:100%;}
.lzcrg .center{float:left;width:200px;margin-left:-200px;position:relative;right:-210px;}
.lzcrg .right{float:left;width:200px;margin-left:-200px;position:relative;right:-420px;}
第二种:
<div class="layout">
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside layout__aside--first">第1个侧边栏宽度固定</aside>
<aside class="layout__aside layout__aside--second">第2个侧边栏宽度固定</aside>
</div>
.layout:after{clear:both;content:" ";display:table;}
.layout{padding-right:420px;}
.layout__main{width:100%;float:left;}
.layout__aside{width:200px;float:right;}
.layout__aside--first{margin-right:-210px;}
.layout__aside--second{margin-right:-420px;}
使用flex方法圣杯布局,每种布局做法的结果同上面一模一样,但是代码减少了很多,而且适用的场景更多
<div class="layout">
<aside class="layout__aside">侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
</div>
<div class="layout">
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside">侧边栏宽度固定</aside>
</div>
<div class="layout">
<aside class="layout__aside">左侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside">右侧边栏宽度固定</aside>
</div>
<div class="layout">
<aside class="layout__aside">第1个侧边栏宽度固定</aside>
<aside class="layout__aside">第2个侧边栏宽度固定</aside>
<div class="layout__main">主内容栏宽度自适应</div>
</div>
<div class="layout">
<div class="layout__main">主内容栏宽度自适应</div>
<aside class="layout__aside">第1个侧边栏宽度固定</aside>
<aside class="layout__aside">第2个侧边栏宽度固定</aside>
</div>
.layout {margin:10px 0; min-width:400px;text-align: center;color:#ffffff; }
.layout__main {background-color: #4DBCB0; padding:20px 0;}
.layout__aside {background-color: #E35881;padding:20px 0; }
.layout { display: flex;}
.layout__main { flex:;}
.layout__aside {width: 200px; }
.layout > .layout__aside:not(:first-child),
.layout > .layout__main:not(:first-child){ margin-left: 10px;}
CSS布局-圣杯布局的更多相关文章
- css3布局-圣杯布局
圣杯布局he双飞翼布局都是解决两边固定款中间自适应的三栏布局 圣杯布局为了中间div内容不被别的内容覆盖,将中间div设置了左右的内边距后,将左右两个div用相对布局position: relativ ...
- CSS布局 -- 圣杯布局 & 双飞翼布局
按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应. 但在这里实现起来还是有一些区别的 [圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中 ...
- CSS之圣杯布局与双飞翼布局
圣杯布局 三行等高 HTML: <!DOCTYPE html><html><head> <meta charset="utf-8"& ...
- CSS经典布局-圣杯布局、双飞翼布局
圣杯布局的来历是2006年发在a list part上的这篇文章:In Search of the Holy Grail · An A List Apart Article圣杯是西方表达“渴求之物&q ...
- 前端css:“圣杯布局”
昨天面试前端,一面危险通过,面试官建议我看看“圣杯布局”,听起来很玄妙的名字,花了一晚上弄明白怎么回事,惊讶于前端工作的细节和技巧! 我先看几个基础,在后面要用到的: 1.CSS right/left ...
- CSS布局 — 圣杯布局与双飞翼布局
圣杯布局 实现原理 html代码中,middle部分首先要放在container的最前部分,然后是left,right 将三者都设置 float:left, position:relative (因为 ...
- CSS 之 圣杯布局&双飞翼布局
圣杯布局 和 双飞翼布局 是重要布局方式.两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局. 遵循了以下要点: 两侧宽度固定,中间宽度自适应 中间部分在DOM结构上优先,以便先行 ...
- css的圣杯布局
圣杯布局和双飞翼布局实现的效果是一样的. 代码解析: 1.四个section,container,main,left,right.其中那个container为父容器. 2.main,left,righ ...
- css布局 -双飞翼布局&圣杯布局
一,双飞翼布局 左右两边固定,中间可以随着浏览器放大和缩小 <!DOCTYPE html> <html lang="en"> <head> &l ...
随机推荐
- C语言在linux内核中do while(0)妙用之法
为什么说do while(0) 妙?因为它的确就是妙,而且在linux内核中实现是相当的妙,我们来看看内核中的相关代码: #define db_error(fmt, ...) \ do { \ fpr ...
- 个人Source Insight使用设置笔记
1.打开SourceInsight, 在菜单栏中点击Options-->Document Options 在显示的对话框中,点击Screen Fonts...., 可改变这个项目的字体,我选的是 ...
- .Net C# 串口 Serialort safe handle has been closed 问题的解决
最近在一个平台上使用SerialPort类开发程序时,发现程序在使用SerialPort类时会异常退出,而且诡异的是,就算把所有操作串口的代码都放在try{}catch{}块中也无法捕获这个异常.最终 ...
- java 中 printf()语句的理解
对print和println的理解很简单,今天突然接触到printf(),有点懵,整理了下也帮自己理一理 printf是格式化输出的形式 下在举个例子: package other; public c ...
- 学习Spring Boot
Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别 ...
- Airbnb/Apache Superset – the open source dashboards and visualization tool – first impressions and link to a demo
https://assemblinganalytics.com/post/airbnbapache-superset-first-impressions-and-link-to-a-demo/ Tod ...
- A million requests per second with Python
https://medium.freecodecamp.com/million-requests-per-second-with-Python-95c137af319 Is it possible t ...
- SOFA 源码分析 — 扩展机制
前言 我们在之前的文章中已经稍微了解过 SOFA 的扩展机制,我们也说过,一个好的框架,必然是易于扩展的.那么 SOFA 具体是怎么实现的呢? 一起来看看. 如何使用? 看官方的 demo: 1.定义 ...
- UE4中创建第一、第三人称角色,并进行角色间的切换
在游戏中经常会出现第一人称和第三人称的视角切换场景,笔者在这里简单介绍如何进行这步操作. 1.创建角色 在内容浏览器中添加2个Character蓝图,分别命名为FirstPersonalCharact ...
- mysql-高级操作
主键冲突 主键冲突的时候,可以选择更新或者替换进行处理 更新 主键冲突,更新操作. Insert into 表名[(字段列表:包含主键)] values(值列表) on duplicate key u ...