У меня есть div, в котором будет этот CSS:
#some_kind_of_popup
{
position: fixed;
top: 100px;
min-height: 300px;
width: 90%;
max-width: 900px;
}
Теперь, как я могу сделать этот div центрированным? Я могу использовать, margin-left: -450px; left: 50%;
но это будет работать, только если экран> 900 пикселей. После этого (когда размер окна <900 пикселей) он больше не будет центрироваться.
Я, конечно, могу сделать это с помощью какого-нибудь js, но есть ли «более правильный» способ сделать это с помощью CSS?
margin: 0 auto
вposition: fixed
div. Вы хоть вопрос читали?Ответы:
Вы можете центрировать
fixed
илиabsolute
расположенную настройку элементаright
иleft
к0
, а затемmargin-left
иmargin-right
до ,auto
как если бы вы были центрированиямиstatic
позиционируемого элемента.#example { position: fixed; /* center the element */ right: 0; left: 0; margin-right: auto; margin-left: auto; /* give it dimensions */ min-height: 10em; width: 90%; }
См. Этот пример, работающий на этой скрипке .
источник
right
иleft
для как минимум avalue >= witdth / 2
, как видно на jsfiddle.net/PvfFy/168 , но это не элегантный подход IMHO. Я для удовольствия тестировал на хроме, не знаю, будет ли работать на остальномВот еще один метод, если вы можете безопасно использовать
transform
свойство CSS3 :.fixed-horizontal-center { position: fixed; top: 100px; /* or whatever top you need */ left: 50%; width: auto; -webkit-transform: translateX(-50%); -moz-transform: translateX(-50%); -ms-transform: translateX(-50%); -o-transform: translateX(-50%); transform: translateX(-50%); }
... или если вам нужно как горизонтальное, так и вертикальное центрирование:
.fixed-center { position: fixed; top: 50%; left: 50%; width: auto; height: auto; -webkit-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%); transform: translate(-50%,-50%); }
источник
<div id="container"> <div id="some_kind_of_popup"> center me </div> </div>
Вам нужно будет завернуть его в контейнер. вот css
#container{ position: fixed; top: 100px; width: 100%; text-align: center; } #some_kind_of_popup{ display:inline-block; width: 90%; max-width: 900px; min-height: 300px; }
источник
Это работает независимо от размера его содержимого
.centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); }
источник: https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/
источник
transform: translate(-50%, -50%);
делает текст размытым (по крайней мере, на хроме)