# Vueコード答え・解説

### 1. メニューの中身を v-show で管理する。

#### #1-1. 変数を用意する。

{% tabs %}
{% tab title="app.js" %}

```javascript
new Vue({
  el: '#app',
  data: {
    isShow: false, // 追加
  },
});
```

{% endtab %}
{% endtabs %}

#### #1-2. メニューの中身とマスクに v-show を記載する。

{% tabs %}
{% tab title="index.html" %}

```markup
<!-- v-showディレクティブを記載する -->
<!-- isShowがtrueの時のみ描画する -->
<div v-show="isShow" class="nav__inner">
  <div class="nav__icon nav__icon--times">
    <i class="fas fa-times fa-3x"></i>
  </div>
  <ul class="nav__menu">
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー1</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー2</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー3</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー4</a>
    </li>
  </ul>
</div>
<!-- v-showディレクティブを記載する -->
<div v-show="isShow" class="nav__bg"></div>
```

{% endtab %}
{% endtabs %}

### 2. メニューを v-on:click で表示できるようにする。

#### #2-1. 関数を用意する。

{% tabs %}
{% tab title="app.js" %}

```javascript
new Vue({
  el: '#app',
  data: {
    isShow: false,
  },
  methods: {
    showNav() {
      this.isShow = true; // 追加
    },
  },
});
```

{% endtab %}
{% endtabs %}

#### #2-2. ハンバーガーアイコンに v-on:click を記載する。

{% tabs %}
{% tab title="index.html" %}

```markup
<nav class="nav">
  <!-- v-onディレクティブを記載する -->
  <!-- クリックされた時showNavが実行される -->
  <div class="nav__icon" @click="showNav">
    <i class="fas fa-bars fa-3x"></i>
  </div>
  <div v-show="nav.isShow" class="nav__inner">
    <!-- 省略: メニューの中身 -->
  </div>
  <div v-show="nav.isShow" class="nav__bg"></div>
</nav>
```

{% endtab %}
{% endtabs %}

#### #2-3. メニューを表示した時にハンバーガーアイコンを非表示にする。

{% tabs %}
{% tab title="index.html" %}

```markup
<nav class="nav">
  <!-- v-showディレクティブを記載する -->
  <!-- isShowがfalseの時に描画される -->
  <div v-show="!isShow" class="nav__icon" @click="showNav">
    <i class="fas fa-bars fa-3x"></i>
  </div>
  <div v-show="nav.isShow" class="nav__inner">
    <!-- 省略: メニューの中身 -->
  </div>
  <div v-show="nav.isShow" class="nav__bg"></div>
</nav>
```

{% endtab %}
{% endtabs %}

### 3. メニューの中身を v-on:click で非表示にしましょう。

#### #3-1. 関数を用意する。

{% tabs %}
{% tab title="app.js" %}

```javascript
new Vue({
  el: '#app',
  data: {
    isShow: false,
  },
  methods: {
    showNav() {
      this.isShow = true;
    },
    hiddenNav() {
      this.isShow = false: // 追加
    },
  },
});
```

{% endtab %}
{% endtabs %}

#### #3-2. v-on:click を記載する。

{% tabs %}
{% tab title="index.html" %}

```markup
<div v-show="isShow" class="nav__inner">
  <!-- v-onディレクティブを記載する -->
  <!-- クリックされた時hiddenNavを実行する -->
  <div class="nav__icon nav__icon--times" @click="hiddenNav">
    <i class="fas fa-times fa-3x"></i>
  </div>
  <ul class="nav__menu">
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー1</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー2</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー3</a>
    </li>
    <li class="nav__item">
      <a class="nav__link" href="#">メニュー4</a>
    </li>
  </ul>
</div>
<!-- v-onディレクティブを記載する -->
<div v-show="isShow" class="nav__bg" @click="hiddenNav"></div>
```

{% endtab %}
{% endtabs %}
