现代网页设计中的一件棘手的事情是创建一个两列(或更多)列的布局,其中所有列的高度相同。我开始寻求在纯 CSS 中找到一种方法来做到这一点。
您可以通过在包含两个列(或页面背景)的 wrap-div 中使用背景图像来最简单地完成此操作。
您也可以使用 CSS 表格单元格来做到这一点,但不幸的是,浏览器对此的支持仍然很糟糕,因此它不是首选解决方案。继续阅读,有更好的方法。
我从网上的两个页面中找到了灵感,虽然我更喜欢我的解决方案,因为它让我可以更自由地使用圆角和精确的宽度或百分比布局,并且更容易编辑,你的最终布局持有 div 不会强迫你做负数运算。
==诀窍:==
首先创建背景设计列,然后放置一个可以容纳常规内容的全宽 div。诀窍在于列中的浮动列,当内容长度延长时,对所有父列产生推动效果,无论哪一列最长。
在这个例子中,我将在一个带圆角的居中 wrap-div 中使用一个 2 列网格。我试图保持绒毛,以便于复制粘贴。
== 第 1 步 ==
创建您的基本网页。
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
</body>
</html>
== 第 2 步 ==
在另一个浮动 div 中创建一个浮动 div。然后在内部 div 上应用负边距,以直观地将其弹出框架。为了说明目的,我添加了虚线边框。要知道,如果您将外部 div 向左浮动并给内部 div 向左负边距,则内部 div 将位于页面边缘下方,而不会给您滚动条。
<!DOCTYPE HTML>
<html>
<head>
<style>
#rightsideBG{
float:right;
background:silver;
width:300px;
border: 3px dotted silver; /*temporary css*/
}
#leftsideBG{
float:left;
background:gold;
width:100px;
margin-left:-100px;
border: 3px dotted gold; /*temporary css*/
}
</style>
</head>
<body>
<div id="rightsideBG">
<div id="leftsideBG">
this content obviously only fits the left column for now.
</div>
</div>
</body>
</html>
== 第 3 步 ==
在内部 div 中:创建一个没有背景的 div,其中包含所有列的组合。它将推过内部 div 的边缘。我添加了一个虚线边框用于说明目的。这将是您内容的画布。
<!DOCTYPE HTML>
<html>
<head>
<style>
#rightsideBG{
float:right;
background:silver;
width:300px;
border: 3px dotted silver; /*temporary css*/
}
#leftsideBG{
float:left;
background:gold;
width:100px;
margin-left:-100px;
border: 3px dotted gold; /*temporary css*/
}
#overbothsides{
float:left;
width:400px;
border: 3px dotted black; /*temporary css*/
}
</style>
</head>
<body>
<div id="rightsideBG">
<div id="leftsideBG">
<div id="overbothsides">
this content spans over both columns now.
</div>
</div>
</div>
</body>
</html>
== 第 4 步 ==
添加您的内容。在此示例中,我放置了两个位于布局上方的 div。我还去掉了虚线边框。普雷斯托,就是这样。如果您愿意,可以使用此代码。
<!DOCTYPE HTML>
<html>
<head>
<style>
#rightsideBG{
float:right;
background:silver;
width:300px;
}
#leftsideBG{
float:left;
background:gold;
width:100px;
margin-left:-100px;
}
#overbothsides{
float:left;
width:400px;
}
#leftcol{
float:left;
width:80px;
padding: 10px;
}
#rightcol{
float:left;
width:280px;
padding: 10px;
}
</style>
</head>
<body>
<div id="rightsideBG">
<div id="leftsideBG">
<div id="overbothsides">
<div id="leftcol">left column content</div>
<div id="rightcol">right column content</div>
</div>
</div>
</div>
</body>
</html>
== 第 5 步 ==
为了使它更好,你可以将整个设计集中在一个 wrap div 中,并给它圆角。除非您为此使用特殊修复,否则圆角不会在旧 IE 中显示。
<!DOCTYPE HTML>
<html>
<head>
<style>
#wrap{
position:relative;
width:500px;
margin:20px auto;
-webkit-border-bottom-right-radius: 20px;
-moz-border-radius-bottomright: 20px;
border-bottom-right-radius: 20px;
}
#rightsideBG{
float:right;
background:silver;
width:300px;
}
#leftsideBG{
float:left;
background:gold;
width:100px;
margin-left:-100px;
}
#overbothsides{
float:left;
width:400px;
}
#leftcol{
float:left;
width:80px;
padding: 10px;
}
#rightcol{
float:left;
width:280px;
padding: 10px;
}
</style>
</head>
<body>
<div id="wrap">
<div id="rightsideBG">
<div id="leftsideBG">
<div id="overbothsides">
<div id="leftcol">left column content</div>
<div id="rightcol">right column content</div>
</div>
</div>
</div>
</div>
</body>
</html>
== 灵感来源 ==