针对现代CSS进行更新:
如果您只在一个维度上工作,例如手机视图(其中所有内容基本上都是垂直的)或导航栏(其中所有内容基本上都是水平的),请使用Flexible Box模块。
将容器设置为显示:flex;和flex-flow: row;或column;取决于您的方向。
Justify-content:space-around;将会使子项平均分隔,每两个子项之间的空间与第一个和最后一个子项之间的空间大致相同。如果您想让第一个和最后一个项目紧贴着容器,请改用justify-content:space-between;。
如果你正在沿列流动,请使用Align-items:flex-start;将为您提供左边距。如果您在横向流动,则可以在顶部边距上排列项目。 Align-items:center;将居中您的列或行。 Align-items:flex-end;将在右侧对齐列,如果您使用希伯来语或阿拉伯语等RTL语言进行编写,则这正是您想要的,或者将所有行项目放置在底线上。
如果您正在制作一个文本项目的水平菜单,则可以尝试align-items:baseline;并使所有类型都排在您使用的字体的实际基线上。
如果您要在两个维度上工作怎么办?
那就使用CSS-Grid吧!
Rachel Andrew是Smashing Magazine的编辑,Jen Simmons现在在苹果公司工作,之前是Mozilla的开发者倡导者,他们一起或分别发布了大量资源(然后我从他们那里学到的内容给多个WordCamp演讲)。
我无法告诉你我有多高兴能够抛弃浮动布局,这篇将近八年前的回答已经被扬弃到历史的垃圾桶里了,除非我需要围绕形状排列文本。但这是另一个话题……
--------------2013年的回答---------
我通常偏爱的方法是将我想要并排排列的所有元素放入一个容器中,然后将它们全部向左浮动。因此,我将在你的样式中添加一个容器类(我不是大ID的拥趸,它们非常有限制性),并进行一些编辑:
.container {
float: left;
width: 800px;
}
#wrap {
float: left;
width:550px;
background-color:#fff;
margin:0 auto;
padding:0;
border-right:1px solid #ccc;
border-left:1px solid #ccc;
}
#container {
width: 500px;
margin:0 auto;
padding: 25px;
font-size:.85em;
background-color: #fff;
}
.xyz {
float: left;
margin: 0 0 0 20px;
width: 200px;
}
这段代码将在 .container 类中使 .wrap div 在左侧,.xyz 类在右侧,并在它们之间留下 20px 的边距。
根据您想要将 .xyz 定位到 .wrap 旁边的说法,我不确定您想要对 #container ID 进行什么操作。
如果您真的想将 #container 与其他元素放在同一行中,请也将其向左浮动。
.container {
float: left;
overflow: auto;
width: 1330px;
}
#container {
float: left;
width: 500px;
margin:0 0 0 20px;
padding: 25px;
font-size:.85em;
background-color: #fff;
}
.xyz {
float: left;
margin: 0 0 0 20px;
width: 200px;
}
容器ID和xyz类现在都有20像素的左边距,而大容器、类比所有div的总和都要宽。
这是一种方法,自2007年我开始编写正确的标记以来,在构建静态站点和WordPress子主题(主要基于Genesis框架)方面一直奏效。