質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1353閲覧

CSS アコーディオンでページ遷移させたい

pansuki

総合スコア1

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/06/27 23:24

HTML,CSSでアコーディオンページを作成しました。

画像の、「メニュー1」のボタンを押すと、そのまま画面遷移する仕様、
「メニュー2」を押すと、アコーディオンが開いて、下の「詳細内容に遷移」というボタンが現れ、これを押すと画面遷移する仕様、で作成しております。

上記の、「「メニュー1」のボタンを押すと、そのまま画面遷移する仕様」は、うまく動作するのですが、
「メニュー2」がうまく動きません。

一瞬遷移した画面が表示されるのですが、なぜかすぐ元の画面に戻ってしまいます。

遷移先指定をしているため、何がよくないのかわからず、恐れ入りますがご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

イメージ説明

html

1<template> 2 <div class="ac_menu"> 3 <label for="Panel1" 4 ><v-btn depressed @click="moveToApplicability()" 5 ><span>▶︎ メニュー1</span></v-btn 6 ></label 7 > 8 9 <input type="checkbox" id="Panel1" class="on-off" /> 10 <div> 11 <p>コンテンツが入ります。</p> 12 </div> 13 14 <label for="Panel2">▶︎ メニュー2</label> 15 <input type="checkbox" id="Panel2" class="on-off" /> 16 <div> 17 <li> 18 <a href="" 19 ><v-btn 20 class="menu-btn" 21 depressed 22 @click="moveList()" 23 ><span class="menu-arrow">▶︎ 詳細内容に遷移</span></v-btn 24 ></a 25 > 26 </li> 27 </div> 28 </div> 29</template>

Script

1<script lang="ts"> 2import Vue from 'vue' 3export default Vue.extend({ 4 methods: { 5 moveToApplicability() { 6 this.$router.push('/quotation-request/applicability') 7 }, 8 moveList() { 9 this.$router.push('/store/list') 10 }, 11 } 12}) 13</script> 14

CSS

1<style scoped> 2.ac_menu { 3 width: 300px; 4} 5.ac_menu label { 6 background: #333; 7 color: #fff; 8 padding: 10px; 9 display: block; 10 margin: 0; 11 border: 1px solid #fff; 12 cursor: pointer; 13} 14.ac_menu input[type='checkbox'].on-off { 15 display: none; 16} 17 18.ac_menu div { 19 -webkit-transition: all 0.5s; 20 -moz-transition: all 0.5s; 21 -ms-transition: all 0.5s; 22 -o-transition: all 0.5s; 23 transition: all 0.5s; 24 margin: 0; 25 padding: 0 10px; 26 list-style: none; 27} 28.ac_menu input[type='checkbox'].on-off + div { 29 height: 0; 30 overflow: hidden; 31} 32.ac_menu input[type='checkbox'].on-off:checked + div { 33 height: 100px; 34} 35.menu-arrow { 36 color: black; 37} 38</style>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

css

1<style> 2.sub{display:none} 3.sub:not(:checked) ~ ul{display:none}; 4</style> 5<ul> 6<li><a href="#1">メニュー1</a></li> 7<li><input type="checkbox" class="sub" id="menu2"><label for="menu2">メニュー2</a></label> 8<ul><li><a href="#2">詳細2</a></li></ul> 9</li> 10</li> 11<li><input type="checkbox" class="sub" id="menu3"><label for="menu3">メニュー3</a></label> 12<ul><li><a href="#3-1">詳細3-1</a></li></ul> 13<ul><li><a href="#3-2">詳細3-2</a></li></ul> 14</li> 15</li> 16</ul>

投稿2021/06/28 00:32

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pansuki

2021/06/28 01:32

ありがとうございます!
guest

0

ベストアンサー

ボタンをhrefが空文字=現在のurlへの相対urlなaタグで囲ってるせいで、ボタンへのクリックイベントが親のaタグに伝播したタイミングでリロード(現在ページへの再アクセス)されてるんじゃないですか?
aタグをなくすか、aタグかv-btnのクリックイベント中にpreventDefaultなどでイベントの伝播を防ぐなどする必要があると思います

投稿2021/06/27 23:58

kairi003

総合スコア1332

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pansuki

2021/06/28 01:32

aタグをなくすことで解決いたしました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問