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语言实现某年某月某日是某年的第几天
看到这个标题,想实现这样的功能其实挺简单的,用C语言的switch语句加上闰年,平年条件的判断,再加上一定的逻辑可以轻松实现这样的函数,在linux内核中,存在判断闰年平年的接口,我将它移植出来后,写 ...
- web报表工具FineReport的SQL编辑框的语法简介
感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...
- 数据结构-C语言递归实现树的前中后序遍历
#include <stdio.h> #include <stdlib.h> typedef struct tree { int number ; struct tree *l ...
- rails关于user密码hash的重构
rails应用程序中一个model名为User,其中存放了用户名和对应的密码.User模式类中建立了1个虚拟属性password用来存放用户实际输入的密码;而最终数据库的密码需要计算password的 ...
- Java + Selenium + TestNG + Maven
环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...
- Mac环境svn的使用
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...
- 自动布局Autoresizing与Autolayout
一.关于iPhone屏幕的一些基本常识 1.ios屏幕适配的尺寸 iPhone的尺寸3.5inch.4.0inch.4.7inch.5.5inch iPad的尺寸7.9inch.9.7inch 2.点 ...
- scrollWidth,clientWidth与offsetWidth的区别
scrollWidth 是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度). clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显 ...
- java学习面试精华
1.线程状态转移 (1)线程生命周期中的5种状态 新建(New).就绪(Runnable).运行(Running).阻塞(Bolocked)和死亡(Dead) 新建(New):程序使用new关键字创建 ...
- Mybatis 系列10
在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程 1. SqlSessionFactory 与 SqlSession. 通过前面的章 ...