#javascript #html #css #onclick #hidden
Вопрос:
Я использую HTML-виджет для Elementor, конструктора тем WordPress. Я пытаюсь показать/скрыть разделы ( sect1 - sect12
с именами HTML, CSS, Javascript и Node), когда я нажимаю на определенные кнопки ( btn1, btn2, btn3
с именами Frontend Developer, Backend Developer и Designer), и я заставил это работать, но когда я обновляю страницу, кнопки становятся недоступными. Каждая кнопка управляет 4 секциями, так btn1
что -> > sect1 - sect4
, btn2
-> > sect5 - sect8
, btn3
-> > sect9 - sect 12
.
<script>
.elementor-editor-active .hidden{
display:block;
}
.hidden{
display:none;
}
.shown{
display: block !important;
animation: fade_in_anim 0.5s;
}
.btn_active_state{
background-color: #D9D3FF !important;
}
@keyframes fade_in_anim {
0% {
opacity: 0;
transform: translateY(-30px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
const buttons = [...document.querySelectorAll("[id^='btn']")]
const mapping = [[0, 4], [4, 8], [8,12]]
const sections = [...document.querySelectorAll("[id^='sect']")]
for(let i = 0; i < 3; i ) {
buttons[i].addEventListener('click', function(event) {
event.preventDefault();
toggleDivs(this)
for(let j = mapping[i][0]; j < mapping[i][1]; j ) {
sections[j].classList.add("shown", "fade")
}
})
}
function toggleDivs(btn){
buttons.forEach(b => b.classList.remove("btn_active_state"))
btn.classList.add("btn_active_state")
sections.forEach(s => s.classList.remove('shown'))
}
//force button1 state initialise, if required
btn1.focus();
btn1.click();
</script>
<style>
.elementor-editor-active .hidden{
display:block;
}
.hidden{
display:none;
}
.shown{
display: block !important;
animation: fade_in_anim 0.5s;
}
.btn_active_state{
background-color: #D9D3FF !important;
}
@keyframes fade_in_anim {
0% {
opacity: 0;
transform: translateY(-30px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
</style>
Ответ №1:
Вы пытаетесь составить меню аккордеона?
Вы можете показать-скрыть с помощью триггера
Комментарии:
1. Да, в принципе, но в Elementor я не могу выбрать количество столбцов, на которые я хочу растянуть аккордеон. В моем случае мне нужен аккордеон с 2 «меню» в первом столбце и 1 меню во втором столбце
2. Можете ли вы нарисовать точную структуру, которую хотите, и отправить ее? simsekm@msn.com
3. Я не понимаю, какое это имеет отношение к моему вопросу. Моя структура работала, но только тогда, когда я реализовал ее в первый раз. Когда я обновляю страницу, она больше не работает.
4. Я бы сделал это и отдал тебе
5. Я отправил свой код. Я также приложу изображение структуры в том виде, в каком я ее создал на своем веб-сайте. Текстовые поля-это просто заполнители для того, что я собираюсь написать позже. Я также отредактировал описание вопроса для лучшего разъяснения