Как поместить div в центр экрана?
На самом деле в центре текущего вида, прежде всего других объектов.
Кросс-браузер и без сторонних плагинов и т.д.
Через CSS или Javascript
UPDATE:
Я попытался использовать Javascript Sys.UI.DomElement.setLocation(), но этот объект позиционирования не находится в абсолютном местоположении, а относительно его родителя.
Есть ли функция, чтобы установить абсолютное местоположение?
Ответы
Ответ 1
Чтобы иметь центр в браузере, независимо от прокрутки страницы (что, вероятно, вы хотите), позиция: исправлено будет более надежным. Изменение кода mike108:
<style type="text/css">
.centered {
position:fixed;
z-index: 100;
top:50%;
left:50%;
margin:-100px 0 0 -100px;
width:200px;
height:200px;
}
</style>
Предполагается, что у вас есть поле фиксированного размера, которое вы показываете. Если у вас нет фиксированного размера, вам нужно будет использовать Javascript для измерения окна и div и поместить его явно (опять же, исправлено, вероятно, путь).
Проведите тестирование во всех браузерах. Возможно, мы не об этом думаем.
Я бы рекомендовал вам взглянуть на один из плагинов Javascript, который делает это, по крайней мере, для начальной точки. Они поняли это, даже если вы не хотите использовать свой код. Я думаю, что я использовал jqModal в качестве отправной точки.
Ответ 2
<style type="text/css">
.Div1 {
position:absolute;
top:50%;
left:50%;
margin:-100px 0 0 -100px;
width:200px;
height:200px;
border:1px solid #9999FF;
}
</style>
<div class="Div1">
</div>
Ответ 3
Он должен иметь назначенную ширину (т.е. width: 500px;), а затем margin: auto; должен сделать это.
Ответ 4
Я использую этот блок кода js;
//функция вызова для центра высоты и ширины
setToCenterOfParent( $('#myDiv'), document.body, false, false);
//функция вызова только для центра высоты
setToCenterOfParent( $('#myDiv'), document.body, false, true);
//функция вызова только для центра ширины
setToCenterOfParent( $('#myDiv'), document.body, true, false);
//определение функции
function setToCenterOfParent(element, parent, ignoreWidth, ignoreHeight){
parentWidth = $(parent).width();
parentHeight = $(parent).height();
elementWidth = $(element).width();
elementHeight = $(element).height();
if(!ignoreWidth)
$(element).css('left', parentWidth/2 - elementWidth/2);
if(!ignoreHeight)
$(element).css('top', parentHeight/2 - elementHeight/2);
}
Ответ 5
Это может быть легко достигнуто сейчас с помощью flex. Microsoft больше не поддерживает старые версии Windows. Кроме того, Mozilla и Chrome постоянно обновляют свои движки, поэтому flexbox прочно укоренился во всех современных браузерах.
#container{
display: flex;
justify-content: center;
align-items: center;
}
Все, что установлено как непосредственный дочерний элемент этого элемента #container, будет отцентрировано.
Этот короткий кусочек кода идеально подходит для таких вещей, как меню входа или центрирование текста поверх фонового изображения.
РЕДАКТИРОВАТЬ - КОД НИЖЕ УСТАРЕЛ, СМОТРЕТЬ ОБНОВЛЕННЫЙ КОД ВЫШЕ
Если вы хотите что-то вертикально и горизонтально, попробуйте это...
#shell{
width:100%;
height:100%
position:absolute;
z-index:100;
background: rgba(255,255,255,.8);
display:table;
}
#inner{
margin:0 auto;
display:table-cell;
vertically-align:middle;
width: /* input width here */
}
#overlay_container{
width: /* input width here again */
height: /* input height here */
additional-styles: /* self explanatory */
}
Ответ 6
Пожалуйста, проверьте это решение. Нет необходимости определять ширину или высоту поля div. Он будет всегда находиться в середине/центре экрана. Надеюсь, мое решение будет полезно для всех.
<style type="text/css">
.mask{
position:fixed;
z-index:100;
width:100%;
height:100%;
text-align: center;
color: white;
background-color: rgba(0,0,0,0.75);
overflow:hidden;
}
.contener{
height:100%;
display:inline-table;
}
.contener .content{
vertical-align: middle;
display:table-cell;
}
.contener .content p{
padding:2em;
border:1px solid #3d3d3d;
background-color: #1d1d1d;
border-radius: 10px;
-moz-box-shadow: 0px 10px 10px black;
-webkit-box-shadow: 0px 10px 10px black;
box-shadow: 0px 10px 10px black;
}
</style>
<div class="mask">
<div class="contener">
<div class="content">
<p>Test string</p>
</div>
</div>
</div>