#menu {
position: fixed;
width: 800px;
background: rgb(255, 255, 255); /* The Fallback */
background: rgba(255, 255, 255, 0.8);
margin-top: 30px;
}
Я знаю, что этот вопрос миллион раз, но я не могу найти решение для моего случая. У меня есть div, который должен быть исправлен на экране, даже если страница прокручивается, она всегда должна оставаться в центре экрана!
Элемент div должен иметь 500px
ширину, должен располагаться 30px
вдали от верхней части (margin-top), должен быть горизонтально центрирован по центру страницы для всех размеров браузера и не должен перемещаться при прокрутке остальной части страницы.
Это возможно?
Ответы:
источник
-400
связано с шириной div, установленной на800
.Ответы здесь устарели. Теперь вы можете легко использовать CSS3-преобразование без жесткого кодирования поля . Это работает для всех элементов, включая элементы без ширины или динамической ширины.
Горизонтальный центр:
Вертикальный центр:
Горизонтальное и вертикальное:
Совместимость не является проблемой: http://caniuse.com/#feat=transforms2d
источник
Если использование inline-блоков является вариантом, я бы рекомендовал этот подход:
Я написал небольшой пост по этому вопросу здесь: http://salomvary.github.com/position-fixed-horizontally-centered.html
источник
width
или чего-то еще - в отличие от ответаРедактировать сентябрь 2016 года. Хотя неплохо все же время от времени получать за это повышенное голосование, поскольку мир движется дальше, теперь я бы пошел с ответом, в котором используется преобразование (и которое имеет массу голосов). Я бы так больше не делал.
Другой способ - не рассчитывать маржу и не использовать субконтейнер:
источник
bottom:0
будет гарантировать, что меню всегда центрировано по вертикали, но теперь я вижу, что это не то, о чем просил ОП. :)Можно центрировать div по горизонтали следующим образом:
HTML:
CSS:
Используя этот способ, вы всегда будете центрировать свой внутренний блок, кроме того, его можно легко превратить в истинно отзывчивый (в примере он будет просто плавным на меньших экранах), поэтому нет ограничений как в примере вопроса, так и в выбранном ответе. ,
источник
... или вы можете обернуть ваше меню div в другое:
источник
Вот еще одно решение для двух делений. Старался быть кратким и не жестко закодированным. Во-первых, ожидаемый HTML:
Принцип, лежащий в основе следующего CSS, состоит в том, чтобы расположить некоторую сторону «внешней», а затем использовать тот факт, что он принимает размер «внутренней», чтобы относительно сместить последнюю.
Этот подход похож на подход Квентина, но внутренний может иметь переменный размер.
источник
Вот решение flexbox при использовании полноэкранного упаковщика div. justify-content centres это дочерний div горизонтально, а align-items центрирует его вертикально.
источник