У меня есть система уведомления, которую я создаю в jquery, и я пытаюсь горизонтально центрировать div контейнера уведомлений.
Я пробовал left:50%;
, margin:0 auto;
, и 'left: 50%; и право: 50%; ни одна из которых не работает.
Поэтому я прибегал к оценке центра с чем-то вроде left:40%;
, но это будет работать только для одного из небольшого диапазона видовых экранов, и мне нужно, чтобы это работало как можно больше видовых экранов.
Поэтому я решил использовать медиа-запросы, чтобы дать разные left
значения на основе ширины видового экрана. Однако при тестировании я заметил даже в небольших видовых экранах, медиа-запрос не работает, и он берет стиль на самой большой точке останова.
Почему это? И как я могу правильно горизонтально настроить уведомление так же, как и больше видовых экранов.
Вот сценарий JS с стилем и кодом для запуска уведомления, просто щелкните в любом месте, чтобы вызвать уведомление: http://jsfiddle.net/Q6TUr/
И вот страница, на которой я пытаюсь заставить все это работать, щелкнуть в любом месте серого фона и запустить уведомление: http://goo.gl/Dalkqh
Я был бы очень признателен, если бы кто-то помог мне, как правильно разобраться, как правильно настроить уведомление по горизонтали во всех видовых экранах.
element.style.marginLeft = -element.offsetWidth/2+'px';
Более гибкий метод.
Не удалось показать результат на основе вашего JS Fiddle. Вы не предоставляете оригинальный сценарий... извините, я не могу это прочитать.
Если вы хотите работать с верхними, левыми, правыми, нижними атрибутами, вам нужно установить позицию элемента как относительную, так и абсолютную.
Я думаю, что в вашем случае вы можете использовать абсолютный. Возможно, вам также понадобится установить z-index.
Вы можете поместить его в обертку, затем центрировать обертку, или вы можете центрировать ее с помощью ширины:
Упаковочный:
HTML:
<div class='wrapper'>
<div class='fixed'>Hello</div>
</div>
CSS:
.wrapper {
width: 500px;
text-align: center;
margin: 0 auto;
}
.fixed {
position: fixed;
}
Или:
HTML:
<div class='wrapper'>
<div class='fixed'>Hello</div>
</div>
CSS:
.fixed {
width: 500px;
position: fixed;
left: 50%;
margin-left: -250px;
}
style='display: none'
@gomangomango
Вот один трюк, который я могу предложить вам использовать: полагаться на 2D-преобразование CSS. Он поддерживается примерно у 81% пользователей сети, поэтому стоит попробовать.
То, что этот трюк делает, что он все еще устанавливает сообщение уведомления 50% по ширине страницы (что, конечно, визуально выключено). Затем мы подталкиваем элемент обратно к истинному центру, переведя его на 50% от собственной расчетной ширины.
.notification-board.center{
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
$('.notification').css('marginLeft', -$(this).offsetWidth/2); alert($('.notification').offsetWidth);
Оповещения оповещения не определены.