Не работает выравнивание margin auto в inline-block элементе
В приведенном коде кнопка должна поставиться по центру, но остается все равно слева
.promo .promo_btn{
width:259px;
margin:118px auto 0 auto;
height: 63px;
border: solid 3px rgba(0, 0, 0, 0.07);
background-image: linear-gradient(to top, #1eacc7, #4ce2ff);
text-align: center;
color: #ffffff;
border-radius: 5px;
}
Но если поменять display на block, всё начинает работать.
.promo .promo_btn{
display: block;
width:259px;
margin:118px auto 0 auto;
height: 63px;
border: solid 3px rgba(0, 0, 0, 0.07);
background-image: linear-gradient(to top, #1eacc7, #4ce2ff);
text-align: center;
color: #ffffff;
border-radius: 5px;
}
Почему такое противоречие? Если строчно-блочный элемент, то должны margin работать, а тут не хочет , display : block ему подавай. Двойные стандарты какие то.
Ответы (1 шт):
В спецификации для CSS2 написано так:
10.3.9 'Inline-block', non-replaced elements in normal flow
A computed value of 'auto' for 'margin-left' or 'margin-right' becomes a used value of '0'.
То есть для inline-block значение margin: auto будет просто считаться нулём.
Стандарты не двойные, а просто разные для каждого случая. Такое повсеместно. У margin их много разных, например можно сказать что для вертикального центрирования подавай display: flex или display: grid у родителя.

