Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » JS: высота блока div

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, вот есть код
 

Код:
<html>
<head>
<title>test</title>
<style>.collapse {position: relative; overflow: hidden;}</style>
<script type="text/javascript">
function opens(id) {
    var h = document.getElementById(id).offsetHeight;
    alert('innerHeight: ' + h);
    return false;
 
}
</script>
</head>
 
<body>
<a onclick="return opens(15);" href="">Menu</a>
 
<div id="15" class="collapse" style="height: 0;">
<ul>
<li><a href="?f=243">Даллас</a></li>
<li><a href=?f=146">Дамыр</a></li>
<li><a href="?f=248">Два</a></li>
<li><a href="?f=202">Двойник</a></li>
<li><a href="?f=215">Хлои Кинг </a></li>
<li><a href="?f=117">Декстер</a></li>
<li><a href="?f=143">Дело</a></li>
</ul>
</div>
 
</body>
</html>

 
в нем указанно что height = 0.
можно как-то через JS узнать какая будет высота блока, если изменить height = auto... т.е. не менять высоту блока на auto а просто узнать высоту с таким значением?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:21 11-08-2014
Nodo56

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На jquery можно $('#15').height();
 
А на js:
var height = document.getElementById('15').style.height;

Всего записей: 4 | Зарегистр. 11-08-2014 | Отправлено: 11:37 12-08-2014
fqs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nodo56, не style.height, a offsetHeight
 
Но в любом случае все эти методы вернут 0 пока ноль явно прописан в стиле элемента.

Всего записей: 70 | Зарегистр. 21-06-2014 | Отправлено: 13:55 12-08-2014 | Исправлено: fqs, 13:57 12-08-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fqs
а как тогда сделать раздвижное меню?)
может можно с transition?
я пробовал сделать так
 

Код:
<html>
<head>
<title>test</title>
<style>
 
.collapse {
position: relative;
overflow: hidden;
height: 0px;
-webkit-transition: height 0.35s ease;
-moz-transition: height 0.35s ease;
-o-transition: height 0.35s ease;
transition: height 0.35s ease;
background: #000000;
}
</style>
<script type="text/javascript">
 
var act = 0;
function opens() {
    var h = document.getElementById('sdsa15');
    if(act == 0)
    {
        h.style.height = "172px";
        act = 1;
    }
    else
    {
        h.style.height = "0px";
        act = 0;
    }
    return false;
}
</script>
</head>
 
<body>
<a onclick="return opens();" href="">Menu</a>
 
<div id="sdsa15" class="collapse" style="">
<ul>
<li><a href="?f=243">Даллас</a></li>  
<li><a href=?f=146">Дамыр</a></li>  
<li><a href="?f=248">Два</a></li>  
<li><a href="?f=202">Двойник</a></li>  
<li><a href="?f=215">Хлои Кинг </a></li>  
<li><a href="?f=117">Декстер</a></li>  
<li><a href="?f=143">Дело</a></li>  
</ul>
</div>
 
</body>
</html>

 
открывается и закрывается хорошо. Но нужно узнавать оригинальную высоту блока по строкам, она может изменятся... но я указал её как 172px
 
может в первом и втором случае, лучше будет взять в ещё один <div></div> через который будем получать общею высоту блока?
 
Добавлено:
но указать "auto" в этом случае нельзя( или может можно как-то?
я указываю h.style.height = auto, и открывается мгновенно...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:40 12-08-2014
fqs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не понял. Зачем нужно знать высоту блока для раздвижного меню?
Чтобы div раздвинулся, достаточно ведь просто убрать принудительно установленный height:0
Или вообще не трогать height, а менять display:none,block

Всего записей: 70 | Зарегистр. 21-06-2014 | Отправлено: 20:43 12-08-2014 | Исправлено: fqs, 20:46 12-08-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fqs
хочу сделать меню как на этом сайте
важно чтоб раскрывание меню было плавным...
 

Цитата:
Зачем нужно знать высоту блока для раздвижного меню

код который я дал вторым, раскрывает меню от 0 до X (в нашем случае 172px) с помощью transition....
но нужно раскрывать от 0 до height: auto;...
но с auto не работает... открывает мгновенно.... (без анимации)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:58 12-08-2014
fqs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так у них же наоборот - раскрывается мгновенно, а закрывается плавно.
Для этого ведь высоту знать вроде  не требуется.

Всего записей: 70 | Зарегистр. 21-06-2014 | Отправлено: 21:12 12-08-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fqs

Цитата:
 раскрывается мгновенно

нет, плавно.... возможно ваш браузер плохо поддерживает их функции...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:46 12-08-2014
Xrobak

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Меню из примера называется аккордион, если нужно появление с анимацией, то гугл в помощь по запросу "css3 transition accordion menu" и сделать можно без JS.

Всего записей: 939 | Зарегистр. 16-08-2004 | Отправлено: 23:33 16-08-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » JS: высота блока div


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru