CSS+DIV布局,一个列宽影响另一个列宽,使总宽度自适应(CSS+DIV Layout, one column's width depend on the other's)
2008-08-26 18:47
751 查看
一个客户说要用DIV+CSS布局,两列,其中导航列宽度不确定(由里面的TreeView控件确定),而与它并列的内容列宽度要做到自适应,也就是
内容列宽度+导航列宽==固定值(总宽度)
但是,内容列宽度 和 导航列宽 都没有一个定值,而网上的大多自适应列宽代码都是基于一个定值的
![](http://www.cnblogs.com/Emoticons/qface/055611455.gif)
无奈,我写Winform出身的对CSS+DIV知之甚少,只能通过JavaScript来完成了,效果还可以,IE7.0和Firefox2.0测试通过
下面的代码中,导航列没有定义宽度,其实际宽度要靠里面的内容而确定:
效果图,右边为导航列(不习惯吧,呵呵,客户阿拉伯的):
![](http://byfiles.storage.live.com/y1pQfLVgm3W3sYDcCo8QE8qz_NI5avN61r_Joew_cf-9XCnRpAultma4qenqUTqAkB7)
![](http://byfiles.storage.live.com/y1pwowAYWoXotycmmNTcUj8L9iPsPMZFJ-3iCk2-rD1i0m7NpjgUZY_9PI2zViOynf0)
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function(){
document.getElementById("left").style.width=(773-(document.getElementById("right").clientWidth))+"px";
}
</script>
<style type="text/css">
body
{
background: #999;
text-align: center;
color: #333;
font-family: Verdana, Arial, Helvetica, sans-serif;
margin: 0px;
}
#header
{
margin-right: auto;
margin-left: auto;
padding: 0px;
width: 776px;
background: #EEE;
height: 60px;
text-align: left;
}
#contain
{
margin-left: auto;
margin-right: auto;
width: 776px;
}
#mainbg
{
float: left;
padding: 0px;
width: 776px;
background: #60A179;
}
#right
{
float: right;
margin: 2px 0px 2px 0px;
padding: 0px;
background: #ccd2de;
min-height:300px;
_height:300px;
text-align: left;
}
#left
{
float: right;
margin: 2px 2px 0px 0px;
padding: 0px;
background: #F2F3F7;
width: 574px;
min-height:600px;
_height:600px;
text-align: left;
}
#footer
{
clear: both;
margin-right: auto;
margin-left: auto;
padding: 0px;
width: 776px;
background: #EEE;
height: 60px;
}
.text
{
margin: 0px;
padding: 20px;
}
</style>
</head>
<body>
<div id="header">
header with height of 60px
</div>
<div id="contain">
<div id="mainbg">
<div id="right">
<div class="text">
<p>
put your tree here</p>
</div>
</div>
<div id="left">
<div class="text">
the width of this div is dependent on the right div
left<br />
left<br />
left<br />
left<br />
</div>
</div>
</div>
</div>
<div id="footer">
footer
</div>
</body>
</html>
另外,修改之前的原始代码是我收藏的,好像网上copy很多,也不知道哪里才是原始出处了,尽管做了扩充和修改,但还是应该注明一下,如是您是原作者,请联系我blodfox777@hotmal.com
内容列宽度+导航列宽==固定值(总宽度)
但是,内容列宽度 和 导航列宽 都没有一个定值,而网上的大多自适应列宽代码都是基于一个定值的
![](http://www.cnblogs.com/Emoticons/qface/055611455.gif)
无奈,我写Winform出身的对CSS+DIV知之甚少,只能通过JavaScript来完成了,效果还可以,IE7.0和Firefox2.0测试通过
下面的代码中,导航列没有定义宽度,其实际宽度要靠里面的内容而确定:
效果图,右边为导航列(不习惯吧,呵呵,客户阿拉伯的):
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function(){
document.getElementById("left").style.width=(773-(document.getElementById("right").clientWidth))+"px";
}
</script>
<style type="text/css">
body
{
background: #999;
text-align: center;
color: #333;
font-family: Verdana, Arial, Helvetica, sans-serif;
margin: 0px;
}
#header
{
margin-right: auto;
margin-left: auto;
padding: 0px;
width: 776px;
background: #EEE;
height: 60px;
text-align: left;
}
#contain
{
margin-left: auto;
margin-right: auto;
width: 776px;
}
#mainbg
{
float: left;
padding: 0px;
width: 776px;
background: #60A179;
}
#right
{
float: right;
margin: 2px 0px 2px 0px;
padding: 0px;
background: #ccd2de;
min-height:300px;
_height:300px;
text-align: left;
}
#left
{
float: right;
margin: 2px 2px 0px 0px;
padding: 0px;
background: #F2F3F7;
width: 574px;
min-height:600px;
_height:600px;
text-align: left;
}
#footer
{
clear: both;
margin-right: auto;
margin-left: auto;
padding: 0px;
width: 776px;
background: #EEE;
height: 60px;
}
.text
{
margin: 0px;
padding: 20px;
}
</style>
</head>
<body>
<div id="header">
header with height of 60px
</div>
<div id="contain">
<div id="mainbg">
<div id="right">
<div class="text">
<p>
put your tree here</p>
</div>
</div>
<div id="left">
<div class="text">
the width of this div is dependent on the right div
left<br />
left<br />
left<br />
left<br />
</div>
</div>
</div>
</div>
<div id="footer">
footer
</div>
</body>
</html>
另外,修改之前的原始代码是我收藏的,好像网上copy很多,也不知道哪里才是原始出处了,尽管做了扩充和修改,但还是应该注明一下,如是您是原作者,请联系我blodfox777@hotmal.com
相关文章推荐
- CSS+DIV 布局 (Two-Column floated fixed width layout &amp; three columns fixed width layout)
- div + css宽度自适应(液态布局)
- DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度,窗口小的时候显示滚动条.
- css三列布局,中间div固定,两侧div宽度自适应
- DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度,窗口小的时候显示滚动条.
- DIV+CSS布局两列右列宽度自适应布局的不同实现方法
- 一个不错的CSS DIV布局,DIV高度自适应
- DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度
- css三列布局,左边两个div固定,最右边宽度自适应
- DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度,窗口小的时候显示滚动条.
- 独行DIV自适应宽度布局CSS实例与应用范围
- 一个不错的CSS DIV布局,DIV高度自适应
- Div + CSS 创建自适应宽度布局(液态布局)
- 【CSS】三列布局(左右div固定宽度,中间div随浏览器窗口自适应变化宽度)
- DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度
- CSS布局-DIV宽度自适应
- 一个CSS+div高度自适应布局模型
- CSS 圣杯布局升级版---多个固定宽度一个自适应宽度
- css实现左右布局,左侧div固定不变,右侧div宽度自适应
- 一个CSS+div高度自适应布局模型