淘宝双飞翼布局,两边固定中间自适应布局。中间内容先显示。
来源:互联网 发布:易趣网与淘宝网的不同 编辑:程序博客网 时间:2024/05/17 06:15
1、淘宝双飞翼的优点:
①、重要的内容先加载;
②、兼容目前所有的主流浏览器,包括IE6。
③、方便整体样式修改,不同的布局框,可以通过调整.col-sub、.col-extra、.col-main、.col-main .main-wrap的相关CSS属性即可实现。
2、实现:
淘宝的页面布局中,最经典的应该是它的 【子列】 【主列】 【附加列】这三个概念。通过查看淘宝店铺页面的DOM结构及其CSS可以发现:淘宝使用的左中右三列布局采用的方式与我们平常有很大差别。一般我们是下面这种做法:
<div class="sub">子列</div>
<div class="main">主列</div>
<div class="extra">附加列</div>
然后,对于sub main extra 分别设置宽度为190 550 190及float:left,并调好边距。这种做法,我相信会一点CSS的都已经知道了。它的特点是:页面在被浏览器解析时,按照子 主 附加的顺序进行加载。
如果仔细看淘宝店铺的DOM结构发现,淘宝在DOM中是按主列 子列 扩展列的顺序书写的,此时网页被浏览器解析时,按照主 子 附加的顺序进行加载 —— 也就是我们常说的”重要的内容先加载”。这种结构会更好一些。它的结构大概如下:
<div class="grid-s5m0e5">
<div class="col-main">我是主列</div>
<div class="col-sub">我是子列</div>
<div class="col-extra">我是附加列</div>
</div>
以上DOM,grid-s5m0e5是一个布局框,然后其中分包含了col-main col-sub col-extra,即主列 子列 附加列三栏,它们分别所占的位置是页面的“左 中 右”部分。现在的问题是“在不改变DOM结构的情况下如何让col-main展示在中间呢?”。接下来,轮到CSS上场了。。。
.grid-s5m0e5 { width:100%;}
.grid-s5m0e5 .col-main { float:left; width:100%; min-height:30px; background:#000; }
.col-sub { float:left; width:190px; min-height:30px; background:#f00; margin-left:-100%; }
.col-extra { float:left; width:190px; min-height:30px; background:#00f; margin-left:-190px; }
下面逐行分析一下:
第1行.grid-s5m0e5 是一个布局框的名称,我们为其定义了宽度100%(在IE6一不定义100%时,有点小问题,亲们自己可以一试)
第2行.col-main 【主列】:浮动左侧,宽度100%(宽度全让它给占了,左右两侧的层该怎么办?)
第3行.col-sub 【子列】:浮动左侧,宽度190,左边界为-100%(此处是关键:浮动情况下,负边界值会导致DIV上移,而使用-100%可以确实它移动到最左侧。)
第4行.col-extra 【附加列】:左浮动,宽度190,左边界为-190px(道理同上,注意的是,负左边界一定要大于或等于该DIV的宽度,才能靠到上一行去)
能过上面的CSS设置之后,网页的呈现基本上已经是【子】【主】【附加】的排列了。貌似完成了,可是别高兴得太早,,,DOM中有一个“我是主列”的文字怎么没有了?再次经过DOM的分析发现,原来被.col-sub给挡住了。那么,现在的问题是:【子列】【附加列】的位置对了,但是【主列】会被子列和附加列给挡住,如何正确的给【主列】定位呢?下面是淘宝的做法:
1、DOM结构的改变:在.col-main下再次添加一个 .main-wrap【这就是淘宝的布局中col-main下有一个main-wrap,而col-sub下却没有sub-wrap的原因,我猜的^_^】
2、利用CSS调整.main-wrap的位置。【这里很简单,就是把左右被挡住的部分,设置为main-wrap的左 右边界即可】
经过以上两步骤后,DOM结构如下:
<div class="grid-s5m0e5">
<div class="col-main">
<div class="main-wrap">
我是主列,出来吧!
</div>
</div>
<div class="col-sub">我是子列</div>
<div class="col-extra">我是附加列</div>
</div>
CSS如下:
.grid-s5m0e5 { width:100%; margin-right:auto; margin-left:auto; }
.grid-s5m0e5 .col-main { float:left; width:100%; min-height:30px; background:#000; }
.grid-s5m0e5 .col-main .main-wrap {
margin-left:200px; /*与col-sub产生10像素距离*/
margin-right:200px; /*与col-extra产生10像素距离*/
background:#0f0;
min-height:30px;
}
.col-sub { float:left; width:190px; min-height:30px; background:#f00; margin-left:-100%; }
.col-extra { float:left; width:190px; min-height:30px; background:#00f; margin-left:-190px; }
3、效果:左右190,中间自动伸缩并与左右保持10个像素的距离,中间内容先显示!
- 淘宝双飞翼布局,两边固定中间自适应布局。中间内容先显示。
- 淘宝双飞翼布局,左右固定中间自适应宽度。
- 三栏布局:浮动布局、绝对布局、(相对)圣杯布局、双飞翼布局、中间固定两边自适应总结
- CSS布局-两边固定,中间自适应
- css布局两边固定中间自适应
- 纯CSS实现三列布局(两边固定,中间自适应)
- 三栏布局(两边固定,中间自适应)
- html--三栏布局(两边固定宽度,中间自适应)
- Android布局:两边控件长度固定,中间控件长度自适应
- 如何实现两边固定,中间自适应的三栏布局?
- 三栏布局(两边固定,中间自适应)
- 自适应布局,完美解决左右两边固定大小,中间内容适应大小。
- 中间固定,两边自适应的三列布局、两边固定,中间自适应的三列布局、左侧栏固定,右侧自适应的两列布局
- 使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)
- 使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)
- 多种方式实现自适应布局(以两边固定中间自适应为例)
- 两边宽度固定 中间自适应
- CSS两边固定,中间自适应
- 用80x86汇编语言读写系统时间
- 用80x86汇编语言编程:输入后反序显示
- 用80x86汇编语言编程:键盘输入与显示输出
- 51单片机2个外部中断的应用
- 数码管显示 0000-9999计数器
- 淘宝双飞翼布局,两边固定中间自适应布局。中间内容先显示。
- 51单片机汇编语言编程:开关控制计时
- 读取xml文件的值 字符串的截取
- 数码管显示 0-9999计数器
- 用51单片机汇编语言设计程序,实现一个4位秒表
- java基础篇--06<java泛型>
- 用51单片机汇编语言,写一个60s倒计时的程序
- 用51单片机汇编语言,编写“键控加减一”的程序
- iOS集成环信昵称和头像(自己服务器)