初めまして。
色々調べましたが、うまくいかないのでご教授いただければ幸いです。
キャラクター図鑑のようなものを作成しています。
サムネイルで3×n(スマホの場合)の一覧にし、クリックするとアコーディオンメニューとして詳細が見えます。
サムネイルで表示されるのがaccordion-ttlの写真と名前。
詳細がaccordion-txtの写真やone-fourの内容です。
※fourの内容はキャラによって増減します。
お伺いしたい点は、同列の1つ目を開いたまま2つ目をクリックすると詳細がかぶってしまうので、
”1つ開いたら前に開いていたものを閉じる”ようにしたいです。
detailsを使用して上記のようなことはできますでしょうか。
html
1<div class="item"> 2 <details class="accordion"> 3 <summary class="accordion-ttl"> 4 <img src="img.jpg"> 5 <h2>キャラ名</h2> 6 </summary> 7 <div class="accordion-txt"> 8 <img class="pic" src="img.jpg"> 9 <div class="one"> 10 <p class="yomi">yomigana</p> 11 <p class="name">キャラ名</p> 12 </div> 13 <div class="two"> 14 <p>Birthday : 0月</p> 15 <p>Blood : 0型</p> 16 </div> 17 <div class="three"> 18 <div class="four"> 19 <div class="question">趣味</div> 20 <div class="answer">回答</div> 21 </div> 22 <div class="four"> 23 <div class="question">好きな○○</div> 24 <div class="answer">回答</div> 25 </div> 26 <div class="four"> 27 <div class="question">好きな○○</div> 28 <div class="answer">回答</div> 29 </div> 30 </div> 31 </div> 32 </details> 33 </div> 34・・・ 35
css
1.item { 2 width: calc((100% - 1em * 2) / 3); 3} 4img { 5 width:30vw; 6 height:30vw; 7 object-fit: cover; 8 } 9 10.accordion-ttl { 11 list-style: none; 12} 13 14.item:nth-child(3n-2) .accordion-txt { 15 margin-left: 0; 16} 17.item:nth-child(3n-1) .accordion-txt { 18 margin: 0 calc(50% - 49vw); 19} 20.accordion-txt { 21 background:rgba(255, 255, 255, 0.8); 22 width: 98vw; 23 margin: 0 calc(10% - 70vw); 24 padding: 0.2em; 25 padding-bottom: 2em; 26 color: #020E34; 27 position: relative; 28} 29.accordion-txt p { 30 color: #020E34; 31} 32 33.pic { 34 position: absolute; 35 width: 160px; 36 height: 160px; 37 border-radius:0; 38 margin: 15px 0 0 15px; 39} 40.one { 41 margin-left: 193px; 42 margin-top: 15px; 43 text-align: center; 44} 45.name { 46 font-size:2.3em; 47 margin: 0; 48} 49.class { 50 font-size: 1em; 51} 52.two { 53 margin:3em auto; 54 padding:0.2em; 55 width:200px; 56 background:yellow; 57} 58.three { 59 display: grid; 60 grid-template-columns: repeat(2, 1fr); 61 grid-auto-rows:minmax(1em,auto); 62} 63.four { 64 display: grid; 65 padding:0.4em; 66 padding-top:1em; 67 border-bottom: 1px solid yellow; 68} 69 70 71.question { 72 font-size:1.1rem; 73} 74.answer { 75 font-size:0.7rem; 76 padding-left : 1em; 77 padding-top: 0.5em; 78}
js
1$(function(){ 2 $('.wrap .item .accordion .accordion-ttl').click(function(){ 3 $(this).next('.accordion-txt').slideToggle(); 4 $(this).toggleClass("open"); 5 6 $('.wrap .item .accordion .accordion-ttl').not($(this)).next('.accordion .accordion-txt').slideUp(); 7 $('.wrap .item .accordion .accordion-ttl').not($(this)).removeClass("open"); 8 }); 9});

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/08 00:22