шесть способов снять кожу с этой кошки:
Кнопка одна: что-либо типа display: block
будет принимать полную ширину родителей. (если не объединено с float
или display: flex
родителем). Правда. Плохой пример.
Кнопка 2: для display: inline-block
приведет к автоматической (а не полной) ширине. Затем вы можете центрировать, используя text-align: center
на оберточном блоке . Вероятно, самый простой и наиболее совместимый, даже с "винтажными" браузерами ...
.wrapTwo
text-align: center;
.two
display: inline-block; // instantly shrinks width
Кнопка 3:
Не нужно ничего класть на пленку. Так что, возможно, это самое элегантное решение. Также работает вертикально. (Поддержка браузером для transstlate достаточно (≥IE9) в наши дни ...).
position: relative;
display: inline-block; // instantly shrinks width
left: 50%;
transform: translateX(-50%);
Кстати: также отличный способ для вертикально центрирующих блоков неизвестной высоты (в связи с абсолютным позиционированием).
Кнопка 4:
Абсолютное позиционирование. Просто убедитесь, что в обертке зарезервировано достаточно высоты, так как никто другой не будет (ни clearfix, ни неявный ...)
.four
position absolute
top 0
left 50%
transform translateX(-50%)
.wrapFour
position relative // otherwise, absolute positioning will be relative to page!
height 50px // ensure height
background lightgreen // just a marker
Кнопка 5:
float (который приводит также элементы блочного уровня к динамической ширине) и относительное смещение. Хотя я никогда не видел этого в дикой природе. Возможно, есть и недостатки ...
.wrapFive
&:after // aka 'clearfix'
content ''
display table
clear both
.five
float left
position relative
left 50%
transform translateX(-50%)
Обновление: Кнопка 6:
И в наши дни вы также можете использовать flex-box. Обратите внимание, что стили применяются к оболочке центрированного объекта.
.wrapSix
display: flex
justify-content: center