Я пытаюсь получить div с position:fixed
выровненным центром на моей странице.
Мне всегда удавалось делать это с абсолютно позиционированными div, используя этот "прием"
left: 50%; width: 400px; margin-left:-200px
... где значение для margin-left составляет половину ширины div.
Похоже, это не работает для div с фиксированной позицией, вместо этого он просто помещает их в самый левый угол на 50% и игнорирует объявление margin-left.
Есть идеи, как это исправить, чтобы я мог выровнять фиксированные элементы по центру?
И я добавлю бонус M&M, если вы подскажете мне лучший способ центрирования абсолютно позиционированных элементов, чем тот, который я описал выше.
html
center
alignment
css-position
рукав моря
источник
источник
Ответы:
Ответ Коэна точно не центрирует элемент.
Правильный способ - использовать
CCS3 transform
собственность. Хотя это не поддерживается в некоторых старых браузерах . И нам даже не нужно устанавливать фиксированное или относительноеwidth
.Сравнение рабочего jsfiddle здесь .
источник
left: 50%
перемещает div на 50% страницы. Но вы должны иметь в виду, что он перемещает его, начиная с левой стороны div, поэтому div еще не центрирован.translate(-50%, 0)
который в основномtranslateX(-50%)
учитывает текущую ширину div и перемещает его на -50% от его ширины влево от фактического места.Для тех, у кого такая же проблема, но с адаптивным дизайном, вы также можете использовать:
Это всегда будет держать вас в
div
центре экрана, даже с адаптивным дизайном.источник
-(75/2)
в данном случае)Вы также можете использовать для этого flexbox.
источник
<center>
которое было объявлено устаревшим, и использовал современный метод, такой какdisplay: flex
и некоторые связанные свойства.Из сообщения выше я думаю, что лучший способ -
width: 100%
margin-left: auto
иmargin-right: auto
или для таблицыalign="center"
.Надеюсь, это поможет.
источник
max-width
s для элементов с фиксированным положением. Вам нужна фиксированная боковая панель, которая занимает 30% вашейmax-width: 1200px
веб-страницы? Это доставит вас туда.Обычные div должны использовать
margin-left: auto
иmargin-right: auto
, но это не работает для фиксированных div. Способ обойти это похоже на ответ Эндрю , но не использует устаревшую<center>
вещь. По сути, просто дайте фиксированному div оболочку.Это центрирует фиксированный div внутри div, позволяя div взаимодействовать с браузером. т.е. div будет центрирован, если места достаточно, но будет сталкиваться с краем браузера, если его нет; аналогично тому, как реагирует обычный центрированный div.
источник
Если вы хотите центрировать выравнивание фиксированного положения div как по вертикали, так и по горизонтали, используйте это
источник
Это должно сделать то же самое.
источник
Если вы знаете, что ширина 400 пикселей, я думаю, это будет самый простой способ сделать это.
источник
Это работает, если вы хотите, чтобы элемент занимал всю страницу, как другую панель навигации.
width: calc (width: 100% - ширина всего, что не по центру)
Например, если размер боковой панели навигации составляет 200 пикселей:
ширина: calc (100% - 200 пикселей);
источник
Использовать ширину довольно просто: 70%; слева: 15%;
Устанавливает ширину элемента 70% от окна и оставляет 15% с обеих сторон
источник
Я использовал следующее с Twitter Bootstrap (v3)
Т.е. создайте элемент полной ширины, который находится в фиксированном положении, и просто засуньте в него контейнер, контейнер центрируется относительно полной ширины. Должен вести себя нормально и отзывчиво.
источник
Решение с использованием гибкого бокса; полностью отзывчивый:
источник
если вы не хотите использовать метод оболочки. тогда вы можете сделать это:
источник