作家
登录

DIV CSS:网页一行两列背景自适应

作者: 来源:www.28hudong.com 2012-11-19 22:54:08 阅读 我要评论

网页布局中常有的一种情况就是网页主体部分分成一行两列;而在很多种情况下,设计师们常把左右两列的背景色设计成不同色彩,以实现内容块的明显区分;但这样的设计给布局提出了一个看似简单,而实现非常难的问题;那就是左右两列怎么样实现背景高度自适应,及左边内容高于右边时,右边背景色也要和左边一样;右边内容高于左边时,左边背景色也要和右边一样; 当年为了实现这个,我在网上查过无数的文章,都没有很好的解决方案;多数人用很大的负数实现,也有人用javascript实现; 后来因为感觉这样实现不合理,所以我一直用表格来实现; 因为这样最简单; 但今天同事问起我这个问题,我中午仔细想了想;想出了一个解决办法,写出来和大家分享; 基本原则: 1、布局要合理,不能为了实现这样的效果而使html的代码变得臃肿;2、CSS部分也要简单巧妙实现,不能为了这样的效果而写大量的代码;而主要的还是浏览器兼容方面要没有问题; 以下是我实现的代码,说明一下,这样的布局还不是很理想;但这已是我暂时能想到的最好解决办法了; 实现方法一:左边用边框,右边用背景色; 这个方法是左边用200PX的边框来实现一列的背景,再用这个标签的实际背景色来实现另一列的背景,这样左右永远都是一样高的; 程序代码 <div id="box"> <div id="right">right <br /> right</div> <div id="left">left</div> <div style="clear:both"></div></div> 程序代码 <style>/*这一行可能不用看,是废话,为了好看一点*/*{ padding:0; margin:0; font-size:12px; line-height:1.8; font-family:Verdana;}/*最外边的一个盒子,左边框200PX,有背景色*/#box{ background:#FFCC00;width:700px; border-left:200px solid #FF9900;}/*让左边的一列向左移动200PX*/#left{margin-left:-200px; width:200px; position:static;}/*由于IE和FIREFOX有区别,所以对IE加了一行作处理*/* html #left{position:fixed;}/*右边的宽度,这里我为什么没有写700PX;说实话,我实在没有想明白;这里最多只能写900-200-2=698PX;但这在使用过程中,并不会有影响;*/#right{float:right; width:695px;}</style> 演示效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>http://www.zishu.cn</title> <style> *{ padding:0; margin:0; font-size:12px; line-height:1.8; font-family:Verdana;} #box{ background:#FFCC00;width:700px; border-left:200px solid #FF9900;} #left{margin-left:-200px; width:200px; position:static;} * html #left{position:fixed;} #right{float:right; width:695px;} </style> </head> <body> <div id="box"> <div id="right">right <br /> right</div> <div id="left">left</div> <div style="clear:both"></div> </div> 转载请注明出处:子鼠 </body> </html> [Ctrl A 全部选择 提示:你可先修改部分代码,再按运行] 方法一存在一个问题:就是如果左边的背景是一张图怎么办?对,如果是纯色,那么没有问题;如果是一张图,就没有办法了;所以我写了第二种解决办法;实现方法二:用嵌套实现两列背景;这个方法我个人推荐使用; 程序代码 <div id="box"> <div id="content"> <div id="right">right <br />right</div> <div id="left">left</div> </div></div> CSS部分我不用解释了吧! 程序代码 <style>*{ padding:0; margin:0; font-size:12px; line-height:1.8; font-family:Verdana;}#box{ background:#FFFF66;width:700px; padding-left:200px; float:left;}#content{ background: #FF6600; float:left;}#right{ width:695px; float:right;}#left{ width:200px; margin-left:-200px; position:static; float:left;}* html #left{position:fixed;}</style> 演示效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>http://www.zishu.cn</title> <style> *{ padding:0; margin:0; font-size:12px; line-height:1.8; font-family:Verdana;} #box{ background:#FFFF66;width:700px; padding-left:200px; float:left;} #content{ background: #FF6600; float:left;} #right{ width:695px; float:right;} #left{ width:200px; margin-left:-200px; position:static; float:left;} * html #left{position:fixed;} </style> </head> <body> <div id="box"> <div id="content"> <div id="right">right <br />right</div> <div id="left">left</div> </div> </div> 转载请注明出处:子鼠 </body> </html> [Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]

  推荐阅读

  display:inline | block |inline-block

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始;高度,行高以及顶和底边距都可控制;宽度缺省是它的容器的100%,除非设定一个宽度<div>, <p>, <h1>, <form>, <ul> 和 <li>是>>>详细阅读


本文标题:DIV CSS:网页一行两列背景自适应

地址:http://www.17bianji.com/kaifa2/CSS/17354.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)