Удаление поля на встроенном блоке после обертывания

Я надеюсь, что есть способ сделать это без JavaScript. У меня есть два элемента с встроенным блоком. Они имеют ширину и высоту 200 пикселей, поэтому оба они отображаются в одной строке, если размер браузера не очень мал (или с мобильными браузерами). Я хочу, чтобы между этими двумя элементами было 50px-пространство, поэтому на втором элементе я добавил "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>

Fiddle: http://jsfiddle.net/YRshx/

Ответ 1

Основываясь на решении 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/

Ответ 2

Здесь другой подход к проблеме. Он использует тот факт, что пробелы отбрасываются, если они находятся в начале или конце строки. Поэтому он использует пространство для разделения блоков.

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

Ответ 3

Вы можете сделать что-то похожее на:

@media screen and (max-width: 453px){
    #elem2 { margin-left:0 !important; }
}

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

Ответ 4

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

Ответ 5

Рабочая демонстрация jsFiddle

Попытайтесь добавить маржу как влево, так и вправо, и к вашим обоим элементам:

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

Однако, исходя из вашего макета реального, этот трюк, возможно, не сработает или потребует больше вещей.

Ответ 6

Просто держите встроенный контейнер в встроенный 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/

Спасибо...