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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

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

Q&A

解決済

1回答

7459閲覧

vueを作使用して、左から右に開くサイドバーメニュー

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

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

1グッド

2クリップ

投稿2019/03/15 03:52

現在vueを使って、左にあるサイドバーメニューのメニューボタンを押すと、右に開くアコーディオンのようなメニューを作成しています。

上から、下に開くメニューはできたのですが、どうしても、右に開くように変更ができません。
これは、cssで変更ができるのでしょうか。

一応vueで作成していますが、jsを書いてもいいのかなと考えています。jqueryは使わない予定です。

もしどなたか左右に開閉できる方法を知っていたら、ご教授いただければと思います。

vue

1 <div id="navmenu"> 2 <h1>{{ text }}</h1> 3 <button v-on:click="on = !on" v-if="!on">メニューを表示</button> 4 <button v-on:click="fire" v-if="on">メニューを閉じる</button> 5 6 <transition name="show"> 7 <div class="sidemenu" v-if="on"> 8 <ul> 9 <li><a href="#">Home</a></li> 10 <li><a href="#">About</a></li> 11 <li><a href="#">Team</a></li> 12 <li><a href="#">Work</a></li> 13 <li><a href="#">Contact</a></li> 14 </ul> 15 </div> 16 </transition> 17 </div>

script

1 <script> 2 var vm = new Vue({ 3 el:'#navmenu', 4 data: { 5 text: 'サイドメニューを表示する', 6 on:false 7 }, 8 methods:{ 9 fire:function(){ 10 this.on = !this.on; 11 } 12 } 13})</script>
RYOHO👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ざっくりですけど、v-onでクラス名の操作をすればよいかと思います。
ボタンを押したときにfalseからtrueになり、trueの時にactiveというクラス名をnavに付与、もう一度おしたときにfalseでクラス名を取る。あとはCSSのtransformで動きをつけるなどですね。

例として、

vue

1<header id="navmenu"> 2 <h1>{{ text }}</h1> 3 <nav 4 :class="{ active: on }" 5 class="sidemenu" aria-label="メニュー" 6 > 7 <button @click="on = !on"> 8 <span v-if="on === false">メニューを表示</span> 9 <span v-else>メニューを閉じる</span> 10 </button> 11 <ul> 12 <li><a href="#">Home</a></li> 13 <li><a href="#">About</a></li> 14 <li><a href="#">Team</a></li> 15 <li><a href="#">Work</a></li> 16 <li><a href="#">Contact</a></li> 17 </ul> 18 </nav> 19</header>

js

1<script> 2var vm = new Vue({ 3 el:'#navmenu', 4 data: { 5 text: 'サイドメニューを表示する', 6 on: false 7 } 8}) 9</script>

css

1<style> 2* { 3 margin: 0; 4 padding: 0; 5} 6.sidemenu li { 7 list-style: none; 8} 9.sidemenu a { 10 width: 100%; 11 height: 40px; 12 color: #000; 13} 14.sidemenu ul { 15 transform: translateX(-100%); 16 transition: 0.2s all; 17} 18.sidemenu.active ul{ 19 transform: translateX(0) 20} 21</style>

投稿2019/03/15 04:29

sauzar18

総合スコア163

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

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

退会済みユーザー

退会済みユーザー

2019/03/27 03:00

分かりやすい答えありがとうございました! できました:)
sauzar18

2019/03/27 03:59

それはよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問