CSS高级技巧:网页布局

2016-02-19 23:29 9 1 收藏

下面,图老师小编带您去了解一下CSS高级技巧:网页布局,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - Web开发 】

上一篇CSS教程 文章:CSS高级技巧:文字环绕图片

布局

CSS至关重要的作用, CSS的设计初衷.

CSS布局和几年前table横行时的布局又不太一样, 在结构化语义化的HTML文档后面, CSS在格式化文档的渲染效果, 把结构化文档用表现化语言来描述. 简而言之, 就是CSS不需要表现性标签!

CSS布局技术依赖于三个基本概念: 定位, 浮动, margin操纵. 布局技术之间没有本质的区别, 相同一种布局让100个前端开发工程师来做, 可能就有100种方法.

居中

在table时代, align和Valign相当的好用, 而在CSS中却没有简单实现的方法,所以在标准化刚刚开始推广的时候, 很多重构项目中居中问题变成了阻碍标准化进步的绊脚石.

1. 自动外补丁水平居中

一般情况下水平居中比较容易实现, 只需要给要居中的容器设定宽度, 以及自动水平外补丁就可以了.

比如HTML如下:

body
    div class="wrapper"
    /div
/body

CSS如下:

body{}
.wrapper{width:760px;margin:0 auto;}

很简单不是吗? 但是有点小问题... 我们亲爱的IE家族里, IE5.x和IE 6不支持自动外补丁, 但是同样幸运的是, IE将 text-align:center 理解为所有东西居中, 而不只是文本. 哈哈, 可以利用这个Bug.

将CSS改为:

body{}
.wrapper{width:760px;margin:0 auto;text-align:left;}

这里就用到了一种Hack,不过不会影响其他浏览器的Hack就是好Hack,呵呵, 就先这么用着吧~

等等, 好像Netscape那边也出问题了, 用Netscape 6将窗口缩小到小于容器宽度时, 容器的左边就会跑到屏幕外边去了, 而且还不会有滚动条...万恶的浏览器大战啊...

再来改改我们的CSS:

body{text-align:center;}
.wrapper{width:760px;margin:0 auto;text-align:left;}

这样就基本上ok了.

2. 定位法水平居中

我们也可以稍稍复杂的用定位法来完成这个工作. 所谓的定位法是用 position 属性来定义容器位置.

同样用上面一例的HTML代码,

我们用定位法的CSS如下:

body{margin:0;padding:0;}
.wrapper{position:relative;left:50%;width:760px;margin-left:-380px;}

为什么用相对定位( relative )呢? 能用绝对定位( absolute )吗?

绝对定位当然也可以, 但是绝对定位会将容器提出文档流, 让后面的文档流到定位容器的位置去了, 稍不注意就会被定为的容器遮盖住后面的内容, 而relative不会将容器提出文档流, 后面的文档流会给定位的容器留下它应有的空间.

3. 垂直居中

CSS中比较大的问题出现了, CSS较难使用简单的方法来完成垂直居中.

在容器中要使文字垂直居中, 那可以将容器的line-height设置的和height一样来完成这个工作,

但是要使容器垂直居中的话, 那就比较复杂了.

HTML如下:

body
    div class="wrapper"
        div id="box"123/div
    /div
/body

CSS如下:

body{margin:0;padding:0;height:100%;}
.wrapper{display:table-cell;vertical-align:middle;width:600px;height:400px;border:solid 1px red;}
#box{width:200px;margin:auto;vertical-align:middle;border:solid 1px blue;}

按理说这样就可以了呀, 但是IE下面一点效果都没有...那是因为IE的display属性只接收:block, inline, inline-block, none, inherit, 不接收table, table-cell, table-row, 那就头痛了呀.

唔, 其实思路有很多, 我提供其中一种:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

CSS如下:

body{margin:0;padding:0;height:100%;}
.wrapper{width:600px;height:400px;border:solid 1px red;}
#box{width:200px;height:200px;position:relative;top:50%;left:50%;margin-top:-100px;margin-left:-100px;border:solid 1px green;}

局限性非常大, 必须要已知高度...

更可以对IE浏览器进行filter之后hack它. 使用ie独有的expression, 虽然在大型脚本上expression表现的相当差, 但是简单的计算offsetHeight还是不太会影响性能, 再怎么说M$也针对expression进行过优化.

所以垂直居中还是要看场合自行挑选合适的方案来解决.


 浮动布局

现在大家都熟知浮动布局了, 不多说, 这个是CSS布局的基础...主要是float和margin的合理应用.

Faux Columns:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

伟大的Dan的另一项发明, 呵呵, 其实很简单, 用垂直平铺背景图来做出视觉上多栏布局等高的效果. 但是很实用, 不是吗?

Equal height boxes with CSS:

在标准推行过程中比较有名的文章之一, 介绍像table一样进行CSS布局, 但是不适用于IE...唉

弹性布局

很不错的理念, 原理其实也不难, 就是用em来标注尺寸, 这样就可以让浏览器自行放大或缩小任何的容器或是元素了.

下一篇CSS教程 文章:CSS高级技巧:阴影效果

来源:http://www.tulaoshi.com/n/20160219/1630026.html

延伸阅读
标签: Web开发
网页设计中CSS布局是很重要的部分,下面介绍几种检查调试CSS布局的有效方法。 1. 检查HTML元素是否有拼写错误、是否忘记结束标记 即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。 2. 检查CSS是否书写正确 检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CS...
标签: Web开发
你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习: 第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义、结构添加CSS。这篇文章将告诉你应该怎样把HTML结构化。 另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、...
标签: Web开发
针对五个模块的不同类型布局demo,基本上概括了所有需求,很有代表性。注意dtd为strict模式,编码是已改为utf。 个人觉得虽然实用有限,但作为技术参考,一定程度上总结了很多解决方案。 固定代码架构,分为五个部分 eader, content, navigation, other stuff and footer HTML 代码: div id="container" div id="header&quo...
标签: Web开发
1、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值。  2、同一个的class选择符可以在一个文档中重复出现,而id选择符却只能出现一次;对一个标签同时使用class和id进行CSS定义,如果定义有重复,id选择符做的定义有效,是因为ID的权值要比CLASS大。 3、一个兼容性调整(IE和Mozilla)的笨办法:初学可能会碰到这...
标签: Web开发
CSS网页布局中文排版有别于国外所介绍的英文排版,由于汉字的特殊性,所以有一些地方是需要大家注意的。今天webjx.com的这个文章或许对大家对排版的控制有所帮助。 一、如何设定文字字体、颜色、大小  使用font  font-style设定斜体,比如font-style: italic;  font-weight设定文字粗细,比如font-we...

经验教程

352

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部