Javascript - аккордеон не запускается в свернутом виде

С помощью эта статья я создал аккордеон javascript.

Единственная проблема в том, что он не запускается в свернутом виде, и я не могу этого понять.

Спасибо за вашу помощь

КОДЕПЕН

<div id = "toggle-button1" class = "section akkordeon">
<div class = "akkordeon-title">LOREM IPSUM TITLE</div>
<div id = "akkordeon-content1" class = "section collapsible">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div>
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
73
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Добавьте немного css, чтобы установить начальное значение на 0

#akkordeon-content1 {
  height: 0;
}

Также есть элемент HTML с именем подробности, который выполняет эту функцию за вас.

<details>
    <summary>Details</summary>
    Something small enough to escape casual notice.
</details>

Documentation: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details

Если вы добавите «высота: 0;» to #akkordeon-content аккордеон продолжает закрываться, так что это не работает...

Marius Kleinz 07.03.2019 10:41

Вы должны закомментировать эту строку: element.style.height = null;

Maksims Kitajevs 07.03.2019 10:54

Как Максим сказал в своем комментарии: вот форк codepen.io/anon/pen/oVZYJa

Wimanicesir 07.03.2019 10:57

Спасибо! Почти готово, но теперь вам нужно щелкнуть по контейнеру два раза, потому что вы сначала перезаписываете «height: 0;» указанный в css с «высотой: 0;», который javascript помещает в элемент, и при втором щелчке javascript добавляет правильную высоту... Есть идеи, как это можно исправить?

Marius Kleinz 07.03.2019 11:18

Да, добавьте атрибут данных в свой html. Добавьте data-collapse = true к свернутому элементу. Проверьте здесь codepen.io/anon/pen/LaWLLo

Wimanicesir 07.03.2019 12:42
var section = document.querySelector('#akkordeon-content1');
collapseSection(section)

добавьте этот код в свой javascript. вне ничего

Спасибо, это вроде работает. Единственное, технически он не запускается свернутым, а сворачивается, когда вы заходите на страницу, поэтому вы можете увидеть короткую анимацию при входе, где закрывается аккордеон. Может есть способ деактивировать переход, но только на первый раз?

Marius Kleinz 07.03.2019 10:44

Просто скройте контейнер по умолчанию.

.collapsible {
   height: 0;
}

И удалите эту строку из кода, чтобы она не сворачивалась обратно:

//(line 42) element.style.height = null;

Спасибо! Почти готово, но теперь вам нужно щелкнуть по контейнеру два раза, потому что вы сначала перезаписываете «height: 0;» указанный в css с «высотой: 0;», который javascript помещает в элемент, и при втором щелчке javascript добавляет правильную высоту... Есть идеи, как это можно исправить?

Marius Kleinz 07.03.2019 11:17

Другие вопросы по теме