我希望有一种方法可以在没有JavaScript的情况下实现这一目标。我有两个元素显示内联块。它们的宽度和高度均为200像素,因此它们都出现在同一行,除非浏览器的大小非常小(或使用移动浏览器)。我希望两个元素之间有50px的空间,所以在第二个元素上我添加了#34; margin-left:50px",它工作正常。当浏览器的大小调整为两个元素都不能放在同一行上的大小时,第二个元素将换行到下一行,这就是我想要它做的。问题是第二个元素的左边距仍然是50px,因此元素不会出现居中。我可以添加JavaScript来检测容器高度何时发生变化(即包裹到下一行的元素)并删除左边距,但有没有办法在没有JavaScript的情况下完成此操作?
这是我的代码,简化:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="wrapper" style="text-align: center;">
<div id="elem1" style="display: inline-block; background-color: #f00; width: 200px; height: 200px;"></div>
<div id="elem2" style="display: inline-block; background-color: #00f; width: 200px; height: 200px; margin-left: 50px;"></div>
</div>
</body>
</html>
答案 0 :(得分:12)
根据bastianonm的解决方案,试试这个:
<div id="wrapper" style="text-align: center; margin:0 -25px;">
<div id="elem1" style="display: inline-block; background-color: #f00; width: 200px; height: 200px; margin:0 25px;"></div>
<div id="elem2" style="display: inline-block; background-color: #00f; width: 200px; height: 200px; margin:0 25px;"></div>
</div>
答案 1 :(得分:5)
这里是解决问题的另一种方法。它利用了这样一个事实,即如果它们位于一条线的起点或终点,则会丢弃它。所以它使用空格来分隔块。
Fidlle:http://jsfiddle.net/xKVG3/
<div id="wrapper">
<div><div id="elem1"></div></div>
<div><div id="elem2"></div></div>
</div>
#wrapper { text-align:center; }
#wrapper > div > div {
display: inline-block;
width: 200px;
height: 200px;
vertical-align:top;
}
#elem1 {
background-color: #f00;
}
#elem2 {
background-color: #00f;
}
#wrapper > div {
display:inline;
}
#wrapper > div:after {
content: ' ';
font-size:12.5em;
line-height:0px;
}
答案 2 :(得分:2)
你可以做类似的事情:
@media screen and (max-width: 453px){
#elem2 { margin-left:0 !important; }
}
答案 3 :(得分:1)
<div id="wrapper" style="text-align: center;">
<div id="elem1" style="float:left; display: inline-block; background-color: #f00; width: 200px; height: 200px; margin:0 25px;"></div>
<div id="elem2" style="float:left; display: inline-block; background-color: #00f; width: 200px; height: 200px; margin:0 25px;"></div>
</div>
答案 4 :(得分:0)
<强> Working jsFiddle Demo 强>
尝试向左右两侧添加边距:
<div id="wrapper" style="text-align: center;">
<div id="elem1" style="margin: 0 25px; display: inline-block; background-color: #f00; width: 200px; height: 200px;"></div>
<div id="elem2" style="margin: 0 25px; display: inline-block; background-color: #00f; width: 200px; height: 200px;"></div>
</div>
然而,根据您的真实布局,这个技巧可能会失败,或者需要更多的东西。
答案 5 :(得分:0)
只需将内联容器保留在内联div中并浮动它们......
代码: -
<div id="wrapper" style="text-align: center;">
<div id="outer" style="display: inline-block;">
<div id="elem1" style="float:left; background-color: #f00; width: 200px; height: 200px;"></div>
<div id="elem2" style="float:left; background-color: #00f; width: 200px; height: 200px; margin-left: 50px;"></div>
</div>
</div>
演示: - http://jsfiddle.net/YRshx/2/
...谢谢
答案 6 :(得分:0)
如果您在一个容器中包含更多元素,并使用下面的代码均匀地包装它们,那么它将非常完美。
我正在使用UL,LI和最小的CSS
https://jsfiddle.net/mkpasala/ayw8szcn/
<h1>Wrap children evenly</h1>
<ul class="skillscont-list">
<li>TestSkill</li>
<li>TestSkill1</li>
<li>TestSkill2</li>
<li>Test - Skill</li>
<li>Chat-Skill</li>
<li>testing disposition</li>
<li>Narender</li>
<li>Inya</li>
<li>Chat_Inya</li>
<li>Agent1</li>
<li>agenttwo</li>
<li>mahender</li>
<li>naresh</li>
<li>venkat-skill</li>
<li>English</li>
<li>French</li>
<li>testpoc</li>
<li>mahender1</li>
<li>devskill</li>
<li>praveen</li>
</ul>
.skillscont-list{
margin: 0px;
padding: 0px;
overflow: overlay;
list-style-type:none;
}
.skillscont-list li{
border:1px solid black;
float: left;
widht: auto;
padding: 5px 10px;
margin: 5px;
color:white;
font-weight:bold;
background-color:gray;
}