Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308

Изменить высоту DIV по клику на ссылку

14.02.2018, 13:50. Показов 3314. Ответов 10

Студворк — интернет-сервис помощи студентам
Всем привет.

Гуглил на тему, не смог найти решения. Прошу помощи у вас.

Можно ли на чистом CSS3 изменить высоту DIV по клику на ссылку?

Например, мне нужно свернуть/развернуть панель с плавной анимацией, при нажатии на кнопочку сворачивания.

Вот здесь привёл пример моего кода:
https://jsfiddle.net/0eyzxpo6/5/

Либо вот:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="liner">
  <div class="liner-header">
    <span class="liner-title">Заголовок</span>
    <a href="#" class="liner-right">
    ▼
    </a>
  </div>
  <div class="liner-main">
    Информация
    Много строк
    Разное количество строк
    </div>
</div>
CSS
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
.liner {
    background: #f0f0f0;
}
 
.liner-header {
    background: #e5e5e5;
    height: 40px;
}
.liner-title {
    position: relative;
    top: 10px;
    left: 10px;
}
.liner-right {
    float: right;
    position: relative;
    top: 8px;
    right: 8px;
    width: 10px;
    padding: 5px;
    text-decoration: none;
}
.liner-main {
    padding: 10px;
}
Как сделать, чтобы при нажатии на значок ▼ окно сворачивалось до заголовка. И при повторном нажатии разварачивалось обратно. Получается что-то вроде спойлера. Не хотелось бы мудрить с JS.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2018, 13:50
Ответы с готовыми решениями:

Спрятать div по клику на ссылку
Пробовал написать сам, но с js еще не разобрался толком. Нужно по клику на ссылку один div спрятать, а другой отобразить. ...

Скрывать div по клику на ссылку и открывать другой
Доброго времени суток! Помогите дописать скрипт, что бы при выборе пункта меню показывался нужный див с текстом, а при выборе другого, он...

Как изменить высоту одного div при изменении высоты другого
Как изменить высоту одного блока div при изменении высоты другого - HTML, CSS. В блоке справа меню и т.д. Например блоки будут...

10
52 / 52 / 39
Регистрация: 15.11.2014
Сообщений: 696
14.02.2018, 14:04
Цитата Сообщение от Рафик Посмотреть сообщение
Не хотелось бы мудрить с JS.
К сожалению, придется мудрить
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
14.02.2018, 14:46
Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Mikhail Shell, не придется. К примеру - песочница
HTML5
1
2
3
4
5
<div class="acc">
  <input id="acc_check" type="checkbox"/>
  <label for="acc_check">ТЫК ТЫК</label>
  <div class="text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Rerum vero quasi officiis dignissimos. Ex nesciunt eius voluptatibus aperiam consequatur magnam, rerum harum aspernatur ullam sequi maxime eos minima accusamus. Ex.</div>
</div>
CSS
1
2
3
4
5
6
7
*,*:after,*:before{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;outline:0}
html,body{width:100%}
.acc{width:60%;margin:0 auto;}
input#acc_check{position:absolute;clip:rect(0, 0, 0, 0)}
label[for="acc_check"]{display:block;height:30px;width:100%;line-height:30px;background:#B39DDB;text-align:center;border:2px solid;}
.text{height:0px;padding:0px;overflow:hidden;-webkit-transition:1s;-o-transition:1s;transition:1s;border:1px solid}
input#acc_check:checked~.text{height:120px}
1
14.02.2018, 15:17

Не по теме:


Какое дежавю...
Вы в другой теме точно то же самое сказали)

0
14.02.2018, 15:33

Не по теме:

Mikhail Shell, да есть такое :) Не думайте дурного - я вас не подлавливаю. Иногда действительно можно обойтись без скриптов. Лишняя нагрузка..

0
14.02.2018, 15:45

Не по теме:

Qwerty_Wasd, все ОК)

0
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
15.02.2018, 05:24  [ТС]
Qwerty_Wasd, всё хорошо, но как быть, если я не знаю исходную высоту дива?
Я имею в виду, что таких дивов может быть несколько на странице и с разной высотой.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.02.2018, 13:55
Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Рафик, замените height на max-height. И поиграйтесь transition - время анимации будет сильно зависеть от конечного max-height. К примеру -
CSS
1
2
3
4
5
6
7
*,*:after,*:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;outline:0}
html,body{width:100%}
.acc{width:60%;margin:0 auto;}
input#acc_check{position:absolute;clip:rect(0, 0, 0, 0)}
label[for="acc_check"]{display:block;height:30px;width:100%;line-height:30px;background:#B39DDB;text-align:center;border:2px solid;cursor:pointer}
.text{max-height:0px;padding:0px;overflow:hidden;transition:3s;border:1px solid}
input#acc_check:checked~.text{max-height:1000px}
1
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
21.02.2018, 13:43  [ТС]
Qwerty_Wasd, всё работает замечательно. Огромное спасибо.
Да, с временем анимации и макс.высотой пришлось немного поиграться.

У меня ещё один небольшой вопросик.
Вот вы написали:
CSS
1
input#acc_check:checked~.text{max-height:1000px}
Получается это условие, если чекбокс активен, то у элемента с классом «text» макс.высота = 1000пкс.
А как туда добавить дополнительные классы? Пытался сделать по всякому, судя по логике должно быть что-то вроде:
CSS
1
2
input#acc_check:checked~.text{max-height:1000px}
input#acc_check:checked~.another_class{color: red}
Но, что-то не получается.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
21.02.2018, 13:48
Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Рафик, такое правило сработает
CSS
1
input#acc_check:checked~.text
если:
1. у этих элементов один родитель
2. тот, что реагирует, должен стоять ниже в коде
1
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
21.02.2018, 14:03  [ТС]
Qwerty_Wasd, спасибо. Буду пробовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2018, 14:03
Помогаю со студенческими работами здесь

Как изменить высоту одного блока div при изменении высоты другого?
вообщем на странице есть 3 блока div 1 центральный с установленной высотой auto и 2 боковых в которые вставлены изображения в...

Нужно изменить высоту div с id wrap. Почему если записать вместо tmp просто '855px', все работает, а так нет?
Функция вызывается в обработчике события onload body. alert(tmp) выводит '855px'. function alertSize() { ...

Растянуть div в высоту на 100% или на занимаемое пространство вложенного div
Ситуация такая, есть див-1, в нем несколько дивов. Див-1 осуществляет роль фоновой картинки(т.е. тупо background color задает) В Див-1...

Растянуть div col-xs-4 во всю высоту div row (bootstrap)
Здравствуйте Как сделать &lt;div class=&quot;col-xs-4&quot;&gt; во всю высоту &lt;div class=&quot;row&quot;&gt;? &lt;div class=&quot;row&quot;&gt; &lt;div...

Растянуть элемент Div на всю высоту родительского div
Как сделать что бы элемент Div растягивался на всю высоту следующего элемента? Я только начинающий верстальщик и возникла такая...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru