У меня есть:
<div>
<iframe></iframe>
</div>
div {
width: 100%;
height: 400px;
overflow: hidden;
}
iframe {
width: 940px;
height: 400px;
margin: 0 auto;
display: block;
}
IFrame переполнит div, ведущий к "недостающему разделу" справа. Мне нужен Iframe с центром, чтобы этот "недостающий раздел" был одинаковым с обеих сторон. Margin: 0 auto, похоже, не режет.
(Iframe - это видео, чтобы помещать это в контекст)
Что относительно использования отрицательного поля (как половина ширины iframe) следующим образом:
iframe {
width: 940px;
height: 400px;
margin-left: -470px /* <-- 940px / 2 */
}
Или использование position: relative;
с left: -470px;
,
margin: 0 auto
не будет работать для ребенка, который шире своего родителя. Даже если вы измените свойство display
для block
.
Из Spec (10.3.3 Блочный уровень, без замены элементов в нормальном потоке):
Если
width
не являетсяauto
аborder-left-width
+padding-left
+width
+padding-right
+border-right-width
(плюс любой изmargin-left
илиmargin-right
, которые не являютсяauto
) , больше ширины содержащий блок, то любыеauto
значения дляmargin-left
илиmargin-right
являются, по следующим правилам, рассматриваться как ноль.
Если CSS3 является опцией, вы можете установить свойство position для iframe
включая отрицательный translateX
чтобы поддерживать центр элемента при изменении размера родителя:
iframe {
width: 940px;
height: 300px;
background-color: orange;
position: relative;
left: 50%;
transform: translateX(-50%);
}
Для старых браузеров, которые не поддерживают transform
CSS3, вам необходимо добавить дополнительный элемент в качестве обертки.
В этом подходе ребенок (iframe
в вашем случае) обернут другим элементом с именем .wrapper
следующим образом:
<div class="parent">
<div class="wrapper">
<div class="child"></div>
</div>
</div>
.parent {
width: 100%;
height: 400px;
overflow: hidden;
position: relative;
}
.wrapper {
position: absolute;
left: 50%;
}
.child {
width: 940px;
height: 300px;
position: relative;
left: -50%;
}
Iframe является встроенным элементом. Добавить display: block;
разрешить margin: 0 auto;
Работа.
margin: auto
не будет работать для ребенка, который шире, чем его родитель. На самом деле, auto
рассчитывается как 0
в этом случае. Посмотрите на: jsbin.com/novizegi/1/edit