Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: блок по центру
 
 автор: sl1p   (10.06.2010 в 18:53)   письмо автору
 
 

подскажите формулу цетровки блока по центру?

окно может быть любой ширины, любой высоты
произвольно заскролено кудато

блок тоже имеет произв. ширину и высоту.

т.е. прошу просто псевдокода:)
например
ширина окна - скрол по ширине + ширина блока / 2


заранее благодарен :)

  Ответить  
 
 автор: Lelik   (10.06.2010 в 19:05)   письмо автору
 
   для: sl1p   (10.06.2010 в 18:53)
 


left = (ширина окна - скрол по ширине - ширина блока) / 2;
top = (высота окна - скрол по высоте - высота блока) / 2;


ну это в случае если высота и ширина меньше размера окна :)

  Ответить  
 
 автор: sl1p   (10.06.2010 в 19:56)   письмо автору
 
   для: Lelik   (10.06.2010 в 19:05)
 

спасибо но оно не покатило..
тыком получилось вот так:

        var sT = document.documentElement.scrollTop;
        var sL = document.documentElement.scrollLeft;
        
        var wH = document.documentElement.clientHeight;
        var wW = document.documentElement.clientWidth;
        
        var box = container.lastChild;
        var bH = box.clientHeight;
        var bW = box.clientWidth;
        
        box.style.top = (
            bH > wH
                ? sT
                : sT + (wH-bH)/2
        ) + 'px';
        box.style.left = (
            bW > wW
                ? sL
                : sL + (wW-bW)/2
        ) + 'px';

  Ответить  
 
 автор: Lelik   (10.06.2010 в 20:25)   письмо автору
 
   для: sl1p   (10.06.2010 в 19:56)
 


var iBrowserHeight = isIe() ? document.documentElement.clientHeight*1 : document.body.clientHeight*1;

var iScroll = isIe() ? document.body.parentElement.scrollTop*1 : window.scrollY*1;

var iTop = (iBrowserHeight <= iH) ? iScroll : (iBrowserHeight - iH) / 2 + iScroll;


где
iH - высота центрируемого блока (вместо box.clientHeight лучше использовать box.offsetHeight)
isIe() - функция которая поределяет браузер ИЕ или нет.

function isIe() {
    if( document.all && !self.opera )
        return true;
    else
        return false;
}


но это центрирование по центру от верха, я не использую центрирование от левого карая, так как делаю это с помощью margin: 0px auto;

  Ответить  
 
 автор: sl1p   (10.06.2010 в 20:40)   письмо автору
 
   для: Lelik   (10.06.2010 в 20:25)
 

ну вопервых мне ие не нужен, т.к. делаю только под ФФ и Оперу(админка).

margin: 0px auto; не подойдёт - размеры блока динамические.

за попытку помочь, спасибо :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования