2014-10-05 2 views
0

Интересно, как достичь стиля, как в следующем макете?Элемент, выровненный с другим центрированным элементом, который после него

mockup

Красный окно центрируется относительно родительского элемента. Синяя клетка занимает все пространство между краем левого края родительского и правого края синего квадрата. И пробел является лишь частью родительского фона. Красная коробка шириной 300 пикселей.

ответ

1

Вы могли бы добиться этого с помощью таблиц CSS:

Example Here

Просто установите родительский элемент display к table, и добавить table-layout: fixed. Установите display элементов детей на table-cell и дайте им ширину 100%. При этом они будут жидкостно заполнять оставшуюся область.

<div class="parent"> 
    <div class="child"></div> 
    <div class="child fixed"></div> 
    <div class="child"></div> 
</div> 
.parent { 
    display: table; 
    table-layout: fixed; 
    width: 100%; 
} 
.parent > .child { 
    display: table-cell; 
    height: 100px; 
    width: 100%; 
} 
.parent > .child.fixed { 
    width: 300px; 
} 

В качестве альтернативы, если вы хотите, чтобы избежать таблиц CSS, вы можете также использовать calc() установить ширину элементов. В этом случае width: calc((100% - 300px)/2) будет работать.

Example Here

.parent > .child { 
    height: 100px; 
    width: calc((100% - 300px)/2); 
    display: inline-block; 
    vertical-align: top; 
} 
.parent > .child.fixed { 
    width: 300px; 
} 

Просто browser support для calc() во внимание.

+0

@John .. почему нет? Это по какой-то причине. –

+0

Это взлом, это показывает отсутствие понимания того, как работает CSS. Авторы даже взломали несколько вещей ('vertical-alignment' и' height: 100%; 'не работают корректно большую часть времени), но то, что все работает до IE4/Opera 4, является' float', что и есть люди должны использовать, а не 'display' и' table' hacks. – John

+0

Другими словами: если вы собираетесь потратить время, чтобы помочь людям научить их делать это * правильно *, а не * любым способом. Есть куча причин, по которым я построил свою собственную платформу, но ее можно суммировать в одном: люди не правильно пишут код, особенно когда это очень легко сделать правильно. – John

Смежные вопросы