С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70

Плавное увеличение высоты div

09.03.2013, 16:02. Показов 4374. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На странице есть 4 ссылки в строчку нужно чтобы при нажатии на ссылку плавно под ней открывался div с контентом (текст + картинки) определенной высоты и шириной в страницу, так при нажатие на каждую из сылок должен открываться такой div а предыдущий открытый должен закрываться (width:0; height:0;).
Помогите пожалуйста!

Заранее спс
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2013, 16:02
Ответы с готовыми решениями:

Плавное увеличение высоты div
Надо что-бы по нажатию на ссылку div блок плавно увеличивался в высоте и также уменьшался при клике на любую другую часть страницы кроме...

Плавное увеличение высоты
как сделать плавное увеличение высоты блока и при этом чтобы функция работала так сказать отдельно (тоесть блок увеличивался в высоте...

Плавное увеличение ширины div (preloader на сайт)
Здравствуйте! Пытаюсь сделать предзагрузчик на сайт. Идея такова: имеется div с нужным background. Изначально ширина его 0, и в зависимости...

9
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
10.03.2013, 06:30
только непонятно зачем ссылка, а не простой элемент
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<div id="contLinks">
<a href="#">link1</a>
<a href="#">link2</a>
<a href="#">link3</a>
<a href="#">link4</a>
 
<div class="contDiv">for link1<br>ww</div>
<div class="contDiv">for link2<br><br>w</div>
<div class="contDiv">for link3<br>w<br>w</div>
<div class="contDiv">for link4<br><br><br><br>w</div>
 
</div>
CSS
1
2
.contDiv {display:none; border:1px solid red; background:silver;}
.contDiv {overflow:hidden;}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function nextLoad(){
 
 };
 
(function(){
var Q, d;
Q={};
Q.elem=[];
Q.ind=null;//индекс открытого
Q.hei=0;//текущая высота
Q.step=2;//скорость
Q.tim=33;//скорость
d=document;
 
onload=function(){
init();
nextLoad();
 };
 
function init(){
var m1, m2, k1, k2;
m1=d.getElementsByTagName("a");
m2=d.getElementsByTagName("div");
k1=Q.len=m1.length;
k2=m2.length;
while(k2--){
if(m2[k2].className=="contDiv"){//только дивы-контейнеры
k1--;
m2[k2].style.display="block";
m1[k1].onclick=clikLink;
Q.elem.push([m1[k1], m2[k2], m2[k2].offsetHeight]);
m2[k2].style.display="none";}};
 
 };
 
function clikLink(){
var k=Q.len;//сколько всего ссылок/кнопок
while(k--){
if(Q.elem[k][0]===this){//ищем в массиве кликнутый элемент
if(Q.ind!==null){Q.elem[Q.ind][1].style.display="none";};//закрыть открытый
Q.ind=k;
Q.hei=0;
Q.elem[k][1].style.height=0;
Q.elem[k][1].style.display="block";
showDiv();
return false;}};
 };
 
function showDiv(){//разворачиваем
Q.hei+=Q.step;
if(Q.hei<Q.elem[Q.ind][2]){
Q.elem[Q.ind][1].style.height=Q.hei+'px';
setTimeout(showDiv, Q.tim);}
else{Q.elem[Q.ind][1].style.height=Q.elem[Q.ind][2]+'px';};
 
 };
 
 })();
1
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
10.03.2013, 21:01  [ТС]
Спасибо большое!! Мажно сделать чтоб перед тем как откроется следующий div пред идущий закрывался (плавно уползая вверх) и только после этого открывался следующий
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
11.03.2013, 08:22
html тот же
CSS
1
2
.contDiv {border:1px solid red; background:silver;}
.contDiv {overflow:hidden;}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function nextLoad(){
 
 };
 
(function(){
var Q, d;
Q={};
Q.elem=[];
Q.ind=null;//по кому кликнули
Q.indC;//текущий индекс
Q.hei=0;//текущая высота
Q.stepS=2;//скорость
Q.timS=33;//скорость
Q.stepH=3;//скорость
Q.timH=22;//скорость
d=document;
 
onload=function(){
init();
nextLoad();
 };
 
function init(){
var m1, m2, k1, k2;
m1=d.getElementsByTagName("a");
m2=d.getElementsByTagName("div");
k1=Q.len=m1.length;
k2=m2.length;
while(k2--){
if(m2[k2].className=="contDiv"){//только дивы-контейнеры
k1--;
m1[k1].onclick=clikLink;
Q.elem.push([m1[k1], m2[k2].style, m2[k2].offsetHeight]);
m2[k2].style.display="none";}};
 
 };
 
function clikLink(){
var k=Q.len;//сколько всего ссылок/кнопок
while(k--){
if(Q.elem[k][0]===this){//ищем в массиве кликнутый элемент
if(Q.ind===null){//первый раз, пока всё закрыто
Q.ind=Q.indC=k;
Q.hei=0;
Q.elem[k][1].height=0;
Q.elem[k][1].display="block";
showDiv();}
else{
Q.ind=k;
hideDiv();};
return false;}};
 };
 
function hideDiv(){//сворачиваем
Q.hei-=Q.stepH;
if(Q.hei>0){
Q.elem[Q.indC][1].height=Q.hei+'px';
setTimeout(hideDiv, Q.timH);}
else{
Q.elem[Q.indC][1].height=0;
Q.elem[Q.indC][1].display="none";
Q.indC=Q.ind;//подставляем индекс кликнутого
Q.hei=0;
Q.elem[Q.indC][1].height=0;
Q.elem[Q.indC][1].display="block";
showDiv();};//разворачиваем свежекликнутый
 
 };
 
function showDiv(){//разворачиваем
Q.hei+=Q.stepS;
if(Q.hei<Q.elem[Q.indC][2]){
Q.elem[Q.indC][1].height=Q.hei+'px';
setTimeout(showDiv, Q.timS);}
else{Q.elem[Q.indC][1].height=Q.elem[Q.indC][2]+'px';};
 
 };
 
 
 })();
1
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
13.03.2013, 23:59  [ТС]
Спосибо! но в Web-kit не робит
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
14.03.2013, 07:04
Все работает во всех браузерах, ие6, ие8, опера, лиса, гуглоподобные.
Методом научного тыка удалось предположить, что css остался от предыдущей версии, а они разные.
1
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
18.03.2013, 21:38  [ТС]
Ещё раз спасибо вам огромное!

Но я никак не могу разобраться:
Если после или перед ссылками в блоке <div id="contLinks"> вставить другиессылки (вне блока) скрипт работает криво либо перестаёт работать вообще.
Если ссылка стоит перед тут я разобрался, я сделал так:
39 строка
JavaScript
1
var k=Q.len - 1;//сколько всего ссылок/кнопок
(- 1 потомучто у меня всего одна ссылка перед этим блоком), а вот как быть ссылками после блока никак не пойму.
Погите пожалуйста!
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
18.03.2013, 21:59
дай реальный html который не работает, наверно придется переделать отлов нужных тегов
по идее не должно быть "чужих" тегов в контейнере, но раз они есть, чё нить придумаем
1
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
18.03.2013, 22:34  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table width="713" border="0" valign="middle">
      <tr>
        <td width="100%" height="40" align="left">
        <div id="contLinks">
          <ul id="menu">
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
            <li><a href="#">ПУНКТ</a></li>
          </ul>
    </div>
          </td>
        </tr>
    </table>
Полсе этого идёт пару табличек и те div которые раскрываются и всё это в глобальной таблице, а перед этим одна (возможно 3 ссылки)

HTML5
1
2
3
4
5
6
7
        <div class="contDiv" style="background-color: #C82D00"><img src="/img/exampels/1.png"></div>
        <div class="contDiv" style="background-color: #A97A75"><img src="/img/exampels/2.png"></div>
        <div class="contDiv" style="background-color: #CAAC00"><img src="/img/exampels/3.png"></div>
        <div class="contDiv" style="background-color: #E67111"><img src="/img/exampels/4.png"></div>
        <div class="contDiv" style="background-color: #674050"><img src="/img/exampels/5.png"></div>
        <div class="contDiv" style="background-color: #524A33"><img src="/img/exampels/6.png"></div>
        <div class="contDiv" style="background-color: #959595"><img src="/img/exampels/7.png"></div>
А после этого всего основная страница с множеством div и ссылок.

А еще хотелось бы, что-бы когда ножимаеш на раскрытую ссылку соответствующий div закрывался (ну это я помойму уж слишком наглею )
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
19.03.2013, 20:34
Сегодня поковыряю.

Добавлено через 13 часов 18 минут
ковыряйся, пришлось переделывать

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>w121</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="test_3.css">
<script type="text/javascript" src="test_3.js"></script>
 
</head>
 
<body>
 
 
<a href="#w1">link1</a>
<a href="#w1">link2</a>
<a href="#w1">link3</a>
<a href="#w1">link4</a>
 
<div class="contDiv2">for link1<br>ww</div>
<div class="contDiv2">for link2<br><br>w</div>
<div class="contDiv2">for link3<br>w<br>w</div>
<div class="contDiv2">for link4<br><br><br><br>w</div>
 
 
 
<table width="713" border="0" valign="middle">
      <tr>
        <td width="100%" height="40" align="left">
          <ul id="menu">
<li><a href="#w1" type="noContA">не наше</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
<li><a href="#w1">не наше</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
            <li><a href="#w1" type="contA">ПУНКТ</a></li>
<li><a href="#w1">не наше</a></li>
          </ul>
          </td>
        </tr>
    </table>
 
Полсе этого идёт пару табличек и те div которые раскрываются и всё это в глобальной таблице, а перед этим одна (возможно 3 ссылки)
 
Код HTML
<div id="contDivs">
<div class="contDiv" style="background-color: #C82D00"><img src="/img/exampels/1.png" alt="">for link1<br>ww</div>
<div class="contDiv" style="background-color: #A97A75"><img src="/img/exampels/2.png" alt="">for link2<br><br>w</div>
<div class="contDiv" style="background-color: #CAAC00"><img src="/img/exampels/3.png" alt="">for link3<br>w<br>w</div>
<div class="contDiv" style="background-color: #E67111"><img src="/img/exampels/4.png" alt="">for link4<br><br><br><br>w</div>
<div class="contDiv" style="background-color: #674050"><img src="/img/exampels/5.png" alt="">for link1<br>ww</div>
<div class="contDiv" style="background-color: #524A33"><img src="/img/exampels/6.png" alt="">for link4<br><br><br><br>w</div>
<div class="contDiv" style="background-color: #959595"><img src="/img/exampels/7.png" alt="">for link2<br><br>w</div>
</div>
А после этого всего основная страница с множеством div и ссылок.
<a href="#w1">link1</a>
<a href="#w1">link2</a>
<a href="#w1">link3</a>
<a href="#w1">link4</a>
 
<div class="contDiv2">for link1<br>ww</div>
<div class="contDiv2">for link2<br><br>w</div>
<div class="contDiv2">for link3<br>w<br>w</div>
<div class="contDiv2">for link4<br><br><br><br>w</div>
А еще хотелось бы, что-бы когда ножимаеш на раскрытую ссылку соответствующий div закрывался (ну это я помойму уж слишком наглею ) 
<a name="w1"></a>
</body>
</html>
CSS
1
2
.contDiv {border:1px solid red; background:silver;}
.contDiv {overflow:hidden;}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function nextLoad(){
 
 };//
(function(){
var Q, d;
Q={};
Q.elem=[];
Q.ind=null;//по кому кликнули
Q.indC;//текущий индекс
Q.hei=0;//текущая высота
Q.stepS=2;//скорость
Q.timS=33;//скорость
Q.stepH=3;//скорость
Q.timH=22;//скорость
d=document;
 
onload=function(){
init();
nextLoad();
 };
 
function init(){
var m1, m2, k1, k2;
//все ссылки в контейнере "menu"
m2=d.getElementById("menu").getElementsByTagName("a");
k2=m2.length;
m1=[];
//отлавливаем только нужные ссылки, нужные имеют атрибут type со значением contA
while(k2--){if(m2[k2].type&&m2[k2].type=="contA"){m1.push(m2[k2]);}};
//все дивы на странице
m2=d.getElementById("contDivs").getElementsByTagName("div");
k1=Q.len=m1.length;
k2=m2.length;
while(k2--){
if(m2[k2].className=="contDiv"){//только дивы-контейнеры
k1--;
m1[k1].onclick=clikLink;//вешаем клик на ссылку
//ссылка на ссылку, ссылка на стили дива, высота дива
Q.elem.push([m1[k1], m2[k2].style, m2[k2].offsetHeight]);
m2[k2].style.display="none";}};
//alert(Q.elem.join('\n'));
 };
 
function clikLink(){
var k=Q.len;//сколько всего ссылок/кнопок
while(k--){
if(Q.elem[k][0]===this){//ищем в массиве кликнутый элемент
if(Q.ind===null){//первый раз, пока всё закрыто
Q.ind=Q.indC=k;
repetition("block");
showDiv();}
else{
Q.ind=k;
if(Q.indC==Q.ind){//повторный клик по одному элементу
if(Q.elem[k][1].display=="block"){hideDiv();}//закрыть кликнутый
else{repetition("block"); showDiv();}}//окрыть кликнутый
else{hideShowDiv();};//клик по другому элементу
return false;}}};
 };
 
function hideShowDiv(){//свернуть/развернуть
Q.hei-=Q.stepH;
if(Q.hei>0){//сворачиваем который развёрнут
Q.elem[Q.indC][1].height=Q.hei+'px';
setTimeout(hideShowDiv, Q.timH);}
else{
repetition("none");
Q.indC=Q.ind;//подставляем индекс кликнутого
repetition("block");
showDiv();};//разворачиваем свежекликнутый
 };
 
function hideDiv(){//сворачиваем
Q.hei-=Q.stepH;
if(Q.hei>0){
Q.elem[Q.indC][1].height=Q.hei+'px';
setTimeout(hideDiv, Q.timH);}
else{
repetition("none");
Q.indC=Q.ind;};//подставляем индекс кликнутого
 };
 
function showDiv(){//разворачиваем
Q.hei+=Q.stepS;
if(Q.hei<Q.elem[Q.indC][2]){
Q.elem[Q.indC][1].height=Q.hei+'px';
setTimeout(showDiv, Q.timS);}
else{Q.elem[Q.indC][1].height=Q.elem[Q.indC][2]+'px';};
 };
 
function repetition(s){
Q.hei=0;
Q.elem[Q.indC][1].height=0;
Q.elem[Q.indC][1].display=s;
 };
 
 })();



Цитата Сообщение от SuperAgent007 Посмотреть сообщение
ну это я помойму уж слишком наглею )
да не очень, я даже сделал
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2013, 20:34
Помогаю со студенческими работами здесь

Плавное увеличение картинки
Пишу для этого свой скрипт, но что-то не работает. Вот код картинки: &lt;img src=&quot;photo/thumb2-1.jpg&quot; width=&quot;70&quot;...

Плавное увеличение картинки при наведении курсора
Я тут конечно кое что сделал, но нет ли кода попроще на яваскрип? &lt;html&gt; &lt;head&gt; &lt;script type=&quot;text/javascript&quot; &gt; if...

textarea увеличение высоты
Доброго времени суток! Мне необходимо сделать &lt;textarea&gt; текстовую область заданной длинны, и default высотой в одну стороку. Если...

Плавное перемещение div с помощью мыши
Цель: реализовать нормальное перемещение div с помощью мыши (имитация перетаскивания обычного окна) Моя Реализация: ...

Увеличение ширины div с каждой секундой
Добрый вечер. Подскажите пожалуйста, как увеличивать ширину div с каждой секундой на 1%. Например, у нас есть следующий кусок кода: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru