Как выровнять div по вертикали&горизонтали по центру страницы?
Чтоб он был absolute и чтоб всегда был по центру экрана(как по вертикали так и по горизонтали), только не страницы, а именно экрана, то что видит пользователь на экране вот по центру этого, а не по центру всей страницы(она то может прокручиваться), ну и при прокрутки чтоб данные центрирования пересчитывались - так как они поменялись. Спасибо.
CSS кода не нужна реализация, именно Jquery(javascript) |
|
Цитата:
<style>
div{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 200px;
height: 50px;
background: red;
}
</style>
<p style="height: 2000px"></p>
<div></div>
|
рони, твой код делает по центру вертикали всей страницы, например высота страницы height=10000px он выставит на height=5000px, мне это не надо, мне надо по центру вертикали окна того что видит пользователь,например я могу находится в самом низу страницы этой на 10000px и она у меня будет по центру вертикали, а не на середине странице где-то останется... на 5000px, одним словом по центру того где ползунок находится так правильнее сказать, то есть если я прокручиваю страницу вниз то этот div Всегда будет по центру вертикали страницы.
danik.js, мне надо jquery, и что это за height: 2000px, у меня резиновая высота которая может меняться, мне не годиться статическая высота. |
ну если без css и absolute
top блока =прокрутка + (высота окна - высота блока) / 2 left блока =прокрутка + (ширина окна - ширина блока) / 2 учесть, что значения будут меняться при загрузке, ресайзе и прокрутке |
cha0s,
Код который написал danik.js сработает так как вы описываете с любой высотой любого контента. Обоснуйте зачем размещать блок именно js кодом? Что в этой задаче невыполнимо на css? На мой взгляд вы просто плохо знакомы с css. |
Цитата:
добавлено только реагирование на скрол и размеры окна но лучше присваивать класс элементу который содержит параметры что указал danik.js,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8" />
<style type="text/css">
<!--
body{
height: 10000px;
width: 1000px;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
jQuery.fn.center = function()
{
var w = $(window);
this.css("position","absolute");
this.css("top",(w.height()-this.height())/2+w.scrollTop() + "px");
this.css("left",(w.width()-this.width())/2+w.scrollLeft() + "px");
return this;
}
function creatOverlay(){
var docHeight = $(document).height();
$("<div id='overlay'></div>")
.appendTo("body")
.height(docHeight)
.css({
'opacity': 0.4,
'position': 'fixed',
'top': 0,
'left': 0,
'background-color': 'black',
'width': '100%',
'z-index': 5000
});
$(this).clone().appendTo("body").center().css({'z-index': 5001}).attr({'id' : 'cln'})
}
function remov()
{
$("#overlay, #cln").remove();
}
function fix()
{
$('#cln').center()
}
$(window).on({"scroll" : fix, "resize" : fix});
$(document).on({"click": creatOverlay, }, "img");
$(document).on({"click": remov}, "#overlay, #cln");
</script>
</head>
<body>
<img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" style="position: fixed">
<img src="http://javascript.ru/forum/images/smilies/write.gif" alt="" style="position: relative; left: 100px; top: 200px">
</body>
</html>
|
| Часовой пояс GMT +3, время: 18:49. |