Equal Height Columns--DIV+CSS

css

翻译:forestgan

  这是一个比较典型的三行二列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,按一般的做法,大多采用背景图填充、加JS脚本的方法使列的高度相同,本文要介绍的是采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题。

先看代码:

#wrap{
 overflow: hidden;
 }

#sideleft, #sideright{
 padding-bottom: 32767px;
 margin-bottom: -32767px;
 }

  实现原理:

  块元素必须包含在一个容器里。

  应用overflow: hidden 到容器里的元素。

  应用 padding-bottom(足够大的值)到列的块元素 。

  应用margin-bottom(足够大的值)到列的块元素。

  padding-bottom将列拉长变的一样高,而负的margin-bottom又使其回到底部开始的位置,同时,溢出部分隐藏掉了。

  兼容各浏览器

  IE Mac 5

  得到高度正确,所以要过滤掉上面的代码。
 /*\*/
#sideleft, #sideright{
 padding-bottom: 32767px;
 margin-bottom: -32767px;
 }
/**/ 

  Opera

  1. Opera7.0-7.2不能正确清除溢出部分,所以要加:
 /* easy clearing */
#wrap:after
 {
 content: '[DO NOT LEAVE IT IS NOT REAL]';
 display: block;
 height: 0;
 clear: both;
 visibility: hidden;
 }
#wrap
 {
 display: inline-block;
 }
/*\*/
#wrap
 {
 display: block;
 }
/* end easy clearing */
/*\*/

  2. Opera8处理overflow: hidden有个BUG,还得加上以下代码:
 /*\*/
#sideleft, #sideright
 {
 padding-bottom: 32767px !important;
 margin-bottom: -32767px !important;
 }
@media all and (min-width: 0px) {
#sideleft, #sideright
 {
 padding-bottom: 0 !important;
 margin-bottom: 0 !important;
 }
#sideleft:before, #sideright:before
 {
 content: '[DO NOT LEAVE IT IS NOT REAL]';
 display: block;
 background: inherit;
 padding-top: 32767px !important;
 margin-bottom: -32767px !important;
 height: 0;
 }
}
/**/

  Opera9的B2在修正8的bug.

  测试环境:IE5.01、IE5.5、IE6.0、Firefox1.5、Opera8.5、Netscape 7.2通过。

  最终效果:
 <!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<ahref="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>"><html xmlns="<a href="http://www.w3.org/1999/xhtml"target="_blank">http://www.w3.org/1999/xhtml</a>"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Equal height(DIV+CSS布局中自适应高度的解决方法)</title><style type="text/css">body{ padding: 0; margin: 0; font-size: 12px; font-family: Arial,Helvetica, sans-serif; line-height: 140%; text-align: center;background:#E7DFD3;}#wrap{ width: 750px; margin: 0 auto; overflow: hidden;}#header{ background: #E8E8E8;}#sideleft{ width: 580px; float: left; background: #FFF; text-align:left;}#sideright{ width: 170px; float: left; background: #F0F0F0; text-align:left;}/* easy clearing */#wrap:after { content: '[DO NOT LEAVE IT IS NOT REAL]'; display: block;height: 0; clear: both; visibility: hidden; }#wrap { display: inline-block; }/*\*/#wrap { display: block; }/* end easy clearing *//*\*/#sideleft, #sideright { padding-bottom: 32767px !important;margin-bottom: -32767px !important; }@media all and (min-width: 0px) {#sideleft, #sideright { padding-bottom: 0 !important; margin-bottom: 0!important; }#sideleft:before, #sideright:before { content: '[DO NOT LEAVE IT IS NOTREAL]'; display: block; background: inherit; padding-top: 32767px!important; margin-bottom: -32767px !important; height: 0; }}/**/#footer{ background: #E8E8E8; width: 100%; float: left;}h1,h2,address,p{ margin: 0; padding: .8em;}h1,h2{font-size: 20px;}</style></head><body><div id="wrap"> <div id="header"> <h1>Head</h1></div> <div id="sideleft"> <h2>sideleft</h2><p>要从固定的、基于像素的设计方法转到弹性的、相对的设计方法并不容易。但是如果恰当利用,就可以成为增强亲和力和易用性的一个自然选择,同时又无须做出设计上的牺牲。 </p> <p> 像素是计算机屏幕上的不可缩放的点,而一个 h3就是一个字大小的方块。由于字体大小的变化, h3 代表用户喜欢的文字大小的相对单位。 </p> <p>采用印刷式的固定设计方案或许要容易些,因为如果尺寸不变,则考虑的东西就相对较少。可是如果采用弹性的设计方法,就可以充分利用电脑的显示器和浏览器。</p> <p>也许你想你的网站以某种特定的方式显示,但是你的用户想看到的可能不一样。任何强加于用户的东西都不利于易用性,从而对网站的成功造成损害。</p> <p>要从固定的、基于像素的设计方法转到弹性的、相对的设计方法并不容易。但是如果恰当利用,就可以成为增强亲和力和易用性的一个自然选择,同时又无须做出设计上的牺牲。 </p> <p> 像素是计算机屏幕上的不可缩放的点,而一个 h3就是一个字大小的方块。由于字体大小的变化, h3 代表用户喜欢的文字大小的相对单位。 </p> <p>采用印刷式的固定设计方案或许要容易些,因为如果尺寸不变,则考虑的东西就相对较少。可是如果采用弹性的设计方法,就可以充分利用电脑的显示器和浏览器。</p> <p>也许你想你的网站以某种特定的方式显示,但是你的用户想看到的可能不一样。任何强加于用户的东西都不利于易用性,从而对网站的成功造成损害。</p> </div> <div id="sideright"><h2>sideright</h2> <p>要从固定的、基于像素的设计方法转到弹性的、相对的设计方法并不容易。但是如果恰当利用,就可以成为增强亲和力和易用性的一个自然选择,同时又无须做出设计上的牺牲。 </p> <p> 像素是计算机屏幕上的不可缩放的点,而一个 h3就是一个字大小的方块。由于字体大小的变化, h3 代表用户喜欢的文字大小的相对单位。 </p> <p>采用印刷式的固定设计方案或许要容易些,因为如果尺寸不变,则考虑的东西就相对较少。可是如果采用弹性的设计方法,就可以充分利用电脑的显示器和浏览器。</p> <p>也许你想你的网站以某种特定的方式显示,但是你的用户想看到的可能不一样。任何强加于用户的东西都不利于易用性,从而对网站的成功造成损害。</p> </div> <div id="footer"> <address> Footer</address> <p>制作:<a href="<ahref="http://www.forest53.com"target="_blank">http://www.forest53.com</a>">forestgan</a></p></div></div></body></html>
 
原文:http://www.positioniseverything.net/articles/onetruelayout/equalheight

时间: 2024-12-30 15:44:00

Equal&nbsp;Height&nbsp;Columns--DIV+CSS的相关文章

使用 DIV+CSS 创建固定宽度的布局

css|创建 我最近的几篇专栏文章讨论了使用 XHTML 和 CSS 实现两列或三列页面布局的各个方面.到目前为止,所有例子都使用流式布局(也就是布局会自动扩展和适应浏览器窗口的宽度).现在是时候考虑另外一种主要的页面布局方法了,这种布局方法是固定宽度布局. 很多 Web 构建人员倾向于使用固定宽度的布局进行页面设计,因为它们能生成精确且可预知的结果.这种方法与打印布局非常接近,对于设计人员和访问者来说都是一个很重要的舒适因素:另外,对于包含很多大图片和其它元素的内容,由于它们在流式布局中不能很

用网页标准DIV+CSS创建固定宽度的网页布局

css|标准|创建|网页 用 XHTML 和 CSS 实现两列或三列页面布局的各个方面.到目前为止,所有例子都使用流式布局(也就是布局会自动扩展和适应浏览器窗口的宽度).现在是时候考虑另外一种主要的页面布局方法了,这种布局方法是固定宽度布局. 很多 Web 构建人员倾向于使用固定宽度的布局进行页面设计,因为它们能生成精确且可预知的结果.这种方法与打印布局非常接近,对于设计人员和访问者来说都是一个很重要的舒适因素:另外,对于包含很多大图片和其它元素的内容,由于它们在流式布局中不能很好地表现,因此固

全屏的三栏div+css布局示例

全屏的三栏div+css布局示例 以下是代码:<html> <head> <title>Nice and Free CSS Template 7</title> <style type="text/css" media="screen"><!-- /*  body and font definitions */ html { padding:0px; margin:0px; } body { back

标准三栏式div+css固定示例

标准三栏式div+css固定示例 以下是代码:<html> <head> <title>Nice and Free CSS Template 6</title> <style type="text/css" media="screen"><!-- /*  body und schrift deffinitionen */ html { padding:0px; margin:0px; } body {

div+css非常好的三栏浮动菜单示例

div+css非常好的三栏浮动菜单示例 以下是代码: <html> <head> <title>Free CSS Template 5</title> <style type="text/css" media="screen"><!-- /*  body und schrift deffinitionen */ html { padding:0px; margin:0px; } body { back

四栏标准DIV+CSS布局示例

四栏标准DIV+CSS布局示例 以下是代码:<html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Nice and Free CSS Template 4</title> <style type="text/css" media="sc

两栏DIV+CSS标准布局代码

一款两栏式DIV+CSS标准布局代码,详细如下: 代码如下:<html> <head> <title>Nice and Free CSS Template 1</title> <style type="text/css" media="screen"><!-- /*  body und schrift deffinitionen */ html, body{ padding:0px; margin:0

浅谈DIV+CSS快速布局几年心得经验

我从事网页设计行业,已经有两年光景了,浏览器对CSS的识别是让我最头疼的,我曾经彷徨了好一阵,然后不断的收集资料,不断地研究,终于有一点儿小小的经验适用到我的工作中去了.可能这点儿经验不算什么,但是我想还是有帮助的,特别是对于刚接触CSS不久,然后仍然徘徊的初学者们,希望对你们有所帮助和借鉴. 1.DIV起初布局和CSS的大方向规划 * {margin:0; padding:0;word-break:break-all;} body {background:#eeeeee url(../imag

2天驾驭DIV+CSS!第七课

平时我们在布局页面的时候,还是要以Float为主,Position为辅!这样你才能做出高质量的页面. 我们先把上节课最后总结一句话拿出来"如果用position来布局页面,父级元素的position属性必须为relative,而定位于父级内部某个位置的元素,最好用absolute,因为它不受父级元素的padding的属性影响,当然你也可以用position,不过到时候计算的时候不要忘记padding的值."如果你还是不能太明白这句话,我们就做个实例,把我们第5节页面的头部blog区域用