在换行后删除内联块元素上的边距

时间:2013-06-07 06:27:30

标签: html css

我希望有一种方法可以在没有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>

小提琴:http://jsfiddle.net/YRshx/

7 个答案:

答案 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>

http://jsfiddle.net/YRshx/6/

答案 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; }
}

http://jsfiddle.net/YRshx/3/

答案 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;
}