美文网首页前端交流圈
双飞翼布局介绍-始于淘宝UED

双飞翼布局介绍-始于淘宝UED

作者: lulu_c | 来源:发表于2016-03-16 13:31 被阅读155次

(原文链接有点问题,慎点)
仔细分析各种布局的技术实现,可以发现下面三种技术被经常使用:
浮动 float
负边距 negative margin
相对定位 relative position
这是实现布局的三个最基本的原子技术。只要巧妙组合,并加以灵活运用,就能“拼”出各种布局的实现方案。
尝试之路考虑以下DOM结构:
<code><div id="page">
<div id="hd"></div>
<div id="bd">
<div class="main"></div>
<div class="sub"></div>
<div class="extra"></div>
</div>
<div id="ft"></div></div></code>

利用浮动元素的负边距来定位:
<code>.main {
float: left;
width: 100%;
} .sub {
float: left;
width: 190px;
margin-left: -100%; } .extra {
float: left;
width: 190px;
margin-left: -190px;
}</code>

这样我们得到了第一个尝试页面 点击这里查看效果可以看出,通过简单的负边距,已经让sub和extra定位到正确的位置。剩下的问题是如何让main也定位到正确的位置。一个自然的想法是,给main的容器#bd添加padding:
<code>#bd {
padding: 0 230px 0 190px;
}</code>

点击这里查看效果这样能让main定位到正确的位置,但sub和extra的位置不对了。这是一个思考的关卡。既然sub和extra的位置不对,那就想办法调整到正确的位置。相对定位隆重登场:
<code>.sub {
float: left;
width: 190px;
margin-left: -100%;
position: relative;
left: -190px; }
.extra {
float: left;
width: 230px;
margin-left: -230px;
position: relative;
right: -230px; }</code>

点击这里查看完成页面 很明显,这就是圣杯布局!在不增加任何额外标签的假设上,我尝试了各种想法,但始终都没找到完美的布局实现(圣杯布局是我觉得所有想法中最接近完美的)。既然不添加额外标签时,完美布局的实现如此困难,那如果允许添加一个额外标签呢?在淘宝UED内部的探讨中,给main增加了一层包裹:
<code><div id="main" class="column">
<div id="main-content">#main</div>
</div></code>

里层main-content的作用就是将main定位到合适的位置,并方便设置padding等属性。想到此处,就像牛顿被苹果砸傻了一样,原来的main定位问题迎刃而解:
<code><div id="page">
<div id="bd">
<div class="main"></div>
</div>
</div></code>

CSS仅需增加一行:
<code>.main-wrap { margin: 0 230px 0 190px;}</code>

想看example4效果点这里一切如此简单!除了添加了一个额外标签,其它各方面,表现都很完美(试了下IE5.5, 也没任何问题)。目前只用到了浮动和负边距,如果再引入相对定位,还可以实现三栏布局的各种组合
<code>.extra {
float: left;
width: 230px;
margin-left: -100%;
position: relative;
left: 190px;
} .main-wrap {
margin-left: 430px;
}</code>

点击这里查看example5效果
仔细查看example5和example4的源代码,可以发现DOM结构是完全一样的,仅仅CSS稍有不同。这意味着HTML结构和CSS布局在一定程度上解耦了,我们开发HTML代码时,从内容出发即可,无需过多的考虑布局。这正是渐进增强在前端工作流程上的体现。如果把三栏布局比作一只大鸟,可以把main看成是鸟的身体,sub和extra则是鸟的翅膀。这个布局的实现思路是,先把最重要的身体部分放好,然后再将翅膀移动到适当的地方。因此请容许我给这个布局实现取名为双飞翼布局(Flying Swing Layout).就如上图中的鸟有各种姿势一样,利用双飞翼布局,我们也可以实现各种布局。这里有个尝试页面,利用双飞翼,实现了一套栅格化布局系统

优点
实现了内容与布局的分离,即Eric提到的Any-Order Columns.
main部分是自适应宽度的,很容易在定宽布局和流体布局中切换。
任何一栏都可以是最高栏,不会出问题。
需要的hack非常少(就一个针对ie6的清除浮动hack:_zoom: 1;)
在浏览器上的兼容性非常好,IE5.5以上都支持。
不足
main需要添加一个额外的包裹层。
等待你的发现与反馈。
双飞翼的布局非常灵活,只要调整css代码就可以搞定一切。最近在一个论坛项目中准备尝试使用这个布局。希望大家有更好的布局方法一定要多多分享。

原文来自:http://www.dqqd.me/flying-wing/

相关文章

  • 双飞翼布局介绍-始于淘宝UED

    (原文链接有点问题,慎点)仔细分析各种布局的技术实现,可以发现下面三种技术被经常使用:浮动 float负边距 ne...

  • CSS布局知识点

    双飞翼布局 (淘宝UED对圣杯布局的升级优化) 圣杯布局和双飞翼布局的实现(三栏布局),都是左右两栏固定宽度,中间...

  • 特殊布局方法

    关于圣杯布局和双飞翼布局:CSS布局之--淘宝双飞翼布局双飞翼布局介绍CSS控制自适应宽度两三栏布局圣杯布局的实现...

  • 常用PC排版佈局

    此篇僅供個人新手學習使用,感謝各位作者大佬:我熟知的三种三栏网页宽度自适应布局方法双飞翼布局介绍-始于淘宝UEDC...

  • CSS-布局4-双飞翼布局

    1、双飞翼布局概述 双飞翼布局同样来源淘宝,可以说是借鉴了圣杯布局,同时也解决了圣杯布局使用相对定位的缺陷。 2、...

  • CSS 经典三列布局之双飞翼布局

    双飞翼布局 双飞翼布局与圣杯布局细微区别 双飞翼布局比圣杯布局多了一个 main-inner标签 双飞翼布局不需要...

  • 几种常见的CSS布局

    本文概要 本文将介绍如下几种常见的布局: 其中实现三栏布局有多种方式,本文着重介绍圣杯布局和双飞翼布局。 一、单列...

  • 几种常见的CSS布局

    本文概要 本文将介绍如下几种常见的布局: 其中实现三栏布局有多种方式,本文着重介绍圣杯布局和双飞翼布局。另外几种可...

  • 几种常见的 CSS 布局

    本文概要 本文将介绍如下几种常见的布局: 单列布局 两列自适应布局 圣飞布局和双飞翼布局 伪等高布局 粘连布局 一...

  • 圣杯布局和双飞翼布局

    圣杯布局 双飞翼布局

网友评论

    本文标题:双飞翼布局介绍-始于淘宝UED

    本文链接:https://www.haomeiwen.com/subject/ktbqlttx.html