Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Отцентровать DIV


Автор: Bangladesh 21.12.2005, 23:52
каким образом можно узнать высоту окна броузера (т.е. самого просторанства отображения разметки) и через него изменить параметр top какого-либо дива. допустим по такой функции:

h = 1024 \* Высота окна. Её нужно узнать*\
pich = 460 \* Высота дива *\
t = (1024 \ 2) - (460 \ 2)


это не на какм либо языке. просто описание алгоритма. как передать значение это в параметр top определенного дива.... ?

Автор: Ciber SLasH 22.12.2005, 00:53
Почитай внимательно скрипт в этом посте: http://forum.vingrad.ru/index.php?showtopic=61691&view=findpost&p=495265
Должно помочь...

Автор: Bangladesh 22.12.2005, 01:27
Код

<script type="text/javascript" language="JavaScript">
var bodyh = window.clientHeight;
var otop = (windows.innerHeight/2) - 230;
document.getElementById("logo").top = otop;
</script>


не помогло мне это. непонятно ничего. там как всегда массивы всяких проверок и подобной инфы. мне они не нужны, просто галимо по центру... как сделать?

Автор: Ciber SLasH 22.12.2005, 03:37
Вот так можно оцентрировать элемент в родительском элементе:
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta http-equiv="MSThemeCompatible" content='Yes'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>JavaScript :: Центрирование элемента в родителе</title>
<script type='text/javascript'>
/*** Размер родителя элемента ***/
function getParentSize(id) {
var elem = document.getElementById(id).parentNode;
var w,h;
    if (elem.tagName != "BODY") {
        if (elem.clientHeight) {
            w = elem.clientWidth;
            h = elem.clientHeight;
        } else if (elem.offsetHeight) {
            w = elem.offsetWidth;
            h = elem.offsetHeight;
        }
    } else if (self.innerHeight) {
        w = self.innerWidth;
        h = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        w = document.documentElement.clientWidth;
        h = document.documentElement.clientHeight;
    } else if (document.body) {
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    }
return (w || h) ? {width: w, height: h} : 0;
}

/*** Размер скроллинга ***/
function getScrolling(id) {
var elem = document.getElementById(id).parentNode;
var x,y;
    if (elem.tagName != "BODY" && elem.scrollTop) {
        x = elem.scrollLeft;
        y = elem.scrollTop;
    } else if (self.pageYOffset) {
        x = self.pageXOffset;
        y = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    } else if (document.body) {
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    }
return (x || y) ? {scrollX: x, scrollY: y} : 0;
}

/*** Размер элемента ***/
function getObjSize(id) {
var elem = document.getElementById(id);
var w,h;
    if (elem.offsetWidth) {
        w = elem.offsetWidth;
        h = elem.offsetHeight;
    } else if (elem.clip && elem.clip.width) {
        w = elem.clip.width;
        h = elem.clip.height;
    } else if (elem.style && elem.style.pixelWidth) {
        w = elem.style.pixelWidth;
        h = elem.style.pixelHeight;
    }
return (w || h) ? {width: parseInt(w), height: parseInt(h)} : 0;
}

onload = function () {
var parentSize = getParentSize("test");
var scrolling = getScrolling("test");
var scrollX = (scrolling) ? scrolling.scrollX : 0;
var scrollY = (scrolling) ? scrolling.scrollY : 0;
var elem = document.getElementById("test");
var elemSize = getObjSize("test");
var left = Math.round(parentSize.width/2 - elemSize.width/2 + scrollX);
var top = Math.round(parentSize.height/2 - elemSize.height/2 + scrollY);
    elem.style.left = left + "px";
    elem.style.top = top + "px";
}
</script>
<style type='text/css'>
#test {width: 100px; height: 100px; background: yellow; position: absolute}
</style>
</head>

<body>
<div id='pre' style='height: 300px; position: relative; border: 1px solid; overflow: auto'>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<div id='test'></div>
</body>
</html>

Если не нужно учитывать родителя, то так:
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta http-equiv="MSThemeCompatible" content='Yes'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>JavaScript :: Центрирование элемента по окну браузера</title>
<script type='text/javascript'>
/*** Размер родителя элемента ***/
function getParentSize() {
var w,h;
    if (self.innerHeight) {
        w = self.innerWidth;
        h = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        w = document.documentElement.clientWidth;
        h = document.documentElement.clientHeight;
    } else if (document.body) {
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    }
return (w || h) ? {width: w, height: h} : 0;
}

/*** Размер скроллинга ***/
function getScrolling() {
var x,y;
    if (self.pageYOffset) {
        x = self.pageXOffset;
        y = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    } else if (document.body) {
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    }
return (x || y) ? {scrollX: x, scrollY: y} : 0;
}

/*** Размер элемента ***/
function getObjSize(id) {
var elem = document.getElementById(id);
var w,h;
    if (elem.offsetWidth) {
        w = elem.offsetWidth;
        h = elem.offsetHeight;
    } else if (elem.clip && elem.clip.width) {
        w = elem.clip.width;
        h = elem.clip.height;
    } else if (elem.style && elem.style.pixelWidth) {
        w = elem.style.pixelWidth;
        h = elem.style.pixelHeight;
    }
return (w || h) ? {width: parseInt(w), height: parseInt(h)} : 0;
}

onload = function () {
var parentSize = getParentSize();
var scrolling = getScrolling();
var scrollX = (scrolling) ? scrolling.scrollX : 0;
var scrollY = (scrolling) ? scrolling.scrollY : 0;
var elem = document.getElementById("test");
var elemSize = getObjSize("test");
var left = Math.round(parentSize.width/2 - elemSize.width/2 + scrollX);
var top = Math.round(parentSize.height/2 - elemSize.height/2 + scrollY);
    elem.style.left = left + "px";
    elem.style.top = top + "px";
}
</script>
<style type='text/css'>
#test {width: 100px; height: 100px; background: yellow; position: absolute}
</style>
</head>

<body>
<div id='test'></div>
</body>
</html>

Автор: Sardar 22.12.2005, 19:14
Зачем скриптами, простой вёрсткой лучше: http://forum.vingrad.ru/index.php?showtopic=59216

Автор: Greendrake 2.5.2006, 15:42
Цитата(Sardar @ 22.12.2005,  19:14)
Зачем скриптами, простой вёрсткой лучше: http://forum.vingrad.ru/index.php?showtopic=59216

Потому что версткой не учтёшь скроллинг.

Ciber SLasH, спасибо, то что доктор прописал. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)