Код простого меню на Vue.js. Создаем HTML разметку под меню. Директива :сlass будет подхватывать значение пункта меню(текст) в нижнем регистре.
<ul :class="simple_text.toLocaleLowerCase()"> <li @click="checkUrl">Home</li> <li @click="checkUrl">Projects</li> <li @click="checkUrl">Services</li> <li @click="checkUrl">Contact</li> </ul>
Активный пункт будет определяться по названию класса, который мы получили из текста. Например для пункта «Projects» — это класс project(в нижнем регистре).
li { cursor: pointer; list-style: none; display: inline-block; padding: 5px 15px; background: #eee; margin-right: 2px; } /*Красим активные пункты другим цветом*/ .home li:nth-child(1), .projects li:nth-child(2), .services li:nth-child(3), .contact li:nth-child(4){ background: darkseagreen; }
Получаем текст из кликнутого элемента и присваиваем значение переменной simple_text, которая используется в качестве класса в тегэ ul.
/*Наша функция дергает текст кликнутого элемента*/ checkUrl(item) { this.simple_text = item.target.innerHTML; console.log(item.target.innerHTML); },
Другой вариант
Универсальным решение будет передавать значение сразу в функцию:
<li @click="checkUrl("home")">Home</li>
А в Vue будем присваивать переменной переданное значение. Такой вариант подойдет для кириллицы и для пунктов, где количество слов в меню больше 1.
checkUrl(item) { this.simple_text = item; },
Добавить комментарий