Как сделать закрытие меню по нажатию на любую область экрана?

Чтобы сделать закрытие меню по нажатию на любую область экрана в Vue.js, вы можете использовать директиву v-click-outside вместе с методом обработчика событий.

Для начала, установите пакет v-click-outside командой npm install --save v-click-outside или yarn add v-click-outside.

Затем в файле, где находится ваш компонент меню, импортируйте пакет и зарегистрируйте его внутри блока <script>:

import vClickOutside from 'v-click-outside';

export default {
  //...код компонента...
  
  directives: {
    'click-outside': vClickOutside.directive,
  },
  
  //...код компонента...
}

После регистрации директивы вы можете использовать ее в HTML разметке вашего компонента, чтобы определить область, клик по которой будет закрывать меню:

<template>
  <div>
    <button @click="toggleMenu">Открыть меню</button>
    <ul v-show="isMenuOpen" v-click-outside="closeMenu">
      <li>Пункт 1</li>
      <li>Пункт 2</li>
      <li>Пункт 3</li>
    </ul>
  </div>
</template>

Здесь мы добавили директиву v-click-outside к элементу ul и связали ее с методом closeMenu, который будет вызываться при клике вне меню.

Затем в блоке <script> вашего компонента определите методы toggleMenu, closeMenu и свойство isMenuOpen:

export default {
  data() {
    return {
      isMenuOpen: false,
    };
  },
  
  methods: {
    toggleMenu() {
      this.isMenuOpen = !this.isMenuOpen;
    },
    
    closeMenu() {
      this.isMenuOpen = false;
    },
  },
}

В методе toggleMenu мы просто переключаем значение свойства isMenuOpen, чтобы открыть и закрыть меню при каждом клике по кнопке "Открыть меню".

Метод closeMenu просто устанавливает значение свойства isMenuOpen в false, чтобы закрыть меню.

Теперь, когда пользователь кликает вне меню, директива v-click-outside вызывает метод closeMenu, который закрывает меню.

Это примерное решение задачи закрытия меню по клику вне его. Вы также можете настроить дополнительное поведение, например, игнорировать клики внутри меню или добавить анимацию закрытия.