アコーディオンメニューで、一つ目だけ開いている状態で他は押したら開く、押したら閉じる(一つ目も同じ)、が作りたいのですがうまくいきません。お分かり頂ける方ご教示お願いします。
ps. 一つ目が開いてない状態であれば出来ました。
html
<body> <section class="accordion"> <div class="accordion-container"> <h4 class="accordion-title jsAccordionTitle">クリック</h4> <div class="accordion-content">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div> <h4 class="accordion-title jsAccordionTitle">クリック</h4> <div class="accordion-content">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div> <h4 class="accordion-title jsAccordionTitle">クリック</h4> <div class="accordion-content">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div> </div><!-- accordion__container --> </section><!-- /.accordion --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="main.js"></script> </body>css
@charset "UTF-8";
/resetCSS/
html, body, h1, h2, h3, h4 {
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
font-size: 100%;
vertical-align: baseline;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* CSS for CodePen */
.accordion {
margin-top: 10px;
}
.accordion-container {
width: 500px;
margin: 0 auto;
}
.accordion-title {
background-color: #fff;
border-top: 1px solid #010327;
color: #010327;
font-size: 18px;
padding: 12px 12px 12px 32px;
position: relative;
cursor: pointer;
user-select: none;
}
.accordion-title:last-of-type {
border-bottom: 1px solid #010327;
}
.accordion-title::before, .accordion-title::after {
content: '';
display: block;
background-color: #010327;
position: absolute;
top: 50%;
width: 15px;
height: 2px;
right: 25px;
}
.accordion-title::after {
transform: rotate(90deg);
transition-duration: .3s;
}
.accordion-title:hover,
.accordion-title:active,
.accordion-title.is-active {
text-decoration: underline;
}
.accordion-title.is-active::before {
opacity: 0;
}
.accordion-title.is-active::after {
transform: rotate(0);
}
.accordion-content {
border-left: 1px solid transparent;
border-right: 1px solid transparent;
padding: 0 18px;
line-height: 0;
height: 0;
overflow: hidden;
opacity: 0;
transition-duration: .3s;
}
.accordion-content.is-open {
background-color: #e7e7e7;
padding: 12px 18px;
margin: 12px 0;
line-height: normal;
/* numberに書き換える*/
height: auto;
opacity: 1;
}
jQuery
$(function () {
$('.jsAccordionTitle').on('click', function () {
//nextは次の要素を取得する、今回はクリック要素の次の要素にis-showクラスをつけている
$(this).next().toggleClass('is-open');
//クリックした要素自体にもclass付与
$(this).toggleClass('is-active');
});
});
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/26 04:08