S3.Blog

20 Апреля 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

JavaScript: Скрытые блоки

Дата последнего изменения: 8 Сентября 2009
Метки статьи: Готовые решения, HTML, JavaScript, © Авторское
На многих сайта, особенно на форумах, вы, наверное, не раз видели скрытые блоки, которые раскрываются при клике на них.
Практически все они построены по одному принципу: внутри общего DIV находятся два других - один, это панель для нажатия, во-втором скрытый текст.


Похожие материалы:




Илья (гость) • ответить
<script>
function openBlock(el) {
var kids = el.parentNode.childNodes;
for (var k = 0; k < kids.length; k++) {
var child = kids[k];
if (child && child.className == "this_block_is_hidden" || child && child.className == "this_block_is_hidden-1" || child && child.className == "this_block_is_hidden-2" {
if (child.style.display != 'block') {
child.style.display = 'block';
} else {
child.style.display = 'none';
}
}
}
}
</script>

как сделать, что бы плавно открывался? Помоги те плиз. Уже 2 день мучаюсь...
Александрответить
ну, как-то так:
1. в стили для "DIV.this_block_is_hidden" добавьте это:
	overflow: hidden;


2. вот это:
	if (child.style.display != 'block') {
child.style.display = 'block';
} else {
child.style.display = 'none';
}

замените на это:
	if (child.style.display != 'block') {
openBlock_open(child, 1);
child.style.display = 'block';
child.style.height = '1px';
} else {
openBlock_close(child, 20); // <-- МАКС. ВЫСОТА БЛОКА
child.style.height = '20px'; // <-- МАКС. ВЫСОТА БЛОКА
}


3. добавьте это:
function openBlock_open(el, height) {
height += 1;
el.style.height = height + 'px';
if (height<20) { // <-- ДО КАКОЙ ВЫСОТЫ РАСКРЫВАТЬСЯ
setTimeout(function(){ openBlock_open(el, height); }, 10); // 10 - СКОРОСТЬ РАСКРЫТИЯ
}
}
function openBlock_close(el, height) {
height -= 1;
el.style.height = height + 'px';
if (height>1) {
setTimeout(function(){ openBlock_close(el, height); }, 10); // 10 - СКОРОСТЬ ЗАКРЫТИЯ
} else {
el.style.display = 'none';
}
}

Илья (гость) • ответить
Огромное тебе спасибо Саш. Реально, спасибо. Выручил.
Александрответить
пожалуйста
там наверняка нужно еще обработать напильником, но, надеюсъ сам дальше справишься
Ариан (гость) • ответить
Подскажите пожалуйста - как сделать на ява такое событие:
хтмл блок со ссылкой через заданное время скрывается от посетителя страницы и более не доступен ему?
В идеале, хотелось бы, чтобы при обновлении страницы блок уже не показывался.
Спасибо!
Александрответить
вам алгоритм или готовый код надо?
если алгоритм, то так:
1. проверяем наличие cookie "mmm", если есть - выполняем п.4, иначе п.2
2. запускаем setTimeout по истечению заданного времени выполняем п.3
3. устанавливаем куку "mmm"
4. устанавливаем нужному html-блоку style=display: none
Ариан (гость) • ответить
Александр, спасибо!
Забыл написать, что я на ява не программирую
Мне хотелось бы получить готовый код. Я думаю, что он и другим пригодится.
Ариан (гость) • ответить
И да, чуть не забыл - нужно какой-нибудь таймер рядом, показывать обратный отсчёт (счёт на минуты)
Александрответить
вместо setTimeout используем setInterval и переменную nnn=5
при каждой итерации setInterval уменьшаем nnn на 1 и отображаем значение nnn в хтмл
при достижении nnn = 0 делаем clearInterval, записываем куку и прячем нужный хтмл-блок
Евгения (гость) • ответить
Добрый день! А как сделать чтобы при нажатии на "Нажмите, чтобы раскрыть блок" - эта надпись менялась, например на "Нажмите, чтобы скрыть". А вообще лучше чтобы менялся вид кнопки.До нажатия - один вид, после - другой.

 
 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.