Как сделать псевдоэлемент :after перманентным после нажатия?
Я изучаю html и css всего один день, поэтому моих знаний явно не хватает, чтобы уверенно использовать синтаксис. В скриншоте показано как должно получиться
.list {
display: flex;
justify-content: space-between;
margin: 0 250px 10px 250px;
}
.menu__list {
position: relative;
font-weight: 700;
font-size: 12px;
color: #000;
text-transform: uppercase;
user-select: none;
cursor: pointer;
}
.menu__list:after {
content: " ";
display: none;
position: absolute;
height: 2px;
width: 100%;
background: #985e5b;;
transition: .0s linear;
top: 28px;
}
.menu__list:active:after {
display: block;
}
.menu__list:active {
color: #985e5b;
}
<div class="list">
<a class="menu__list">breakfast</a>
<a class="menu__list">lunch</a>
<a class="menu__list">drinks</a>
<a class="menu__list">desserts</a>
</div>
Ответы (3 шт):
Автор решения: Sumskyi Vasyl
→ Ссылка
Вы забыли ::after задать свойство background. И так же можете использывать ::hover
Если хотите оставлять акстивный класс, тогда нужно использывать JS
window.addEventListener('DOMContentLoaded', () => {
links('.menu__list')
})
const links = selector => {
const linksItems = document.querySelectorAll(selector)
linksItems.forEach((item, index) => {
item.addEventListener('click', () => {
linksItems.forEach(link => link.classList.remove('active'))
item.classList.add('active')
})
})
}
.list {
display: flex;
justify-content: space-between;
margin: 0 250px 10px 250px;
}
.menu__list {
position: relative;
font-weight: 700;
font-size: 12px;
color: #000;
text-transform: uppercase;
user-select: none;
cursor: pointer;
}
.menu__list.active {
color: #985e5b;
}
.menu__list.active:after {
content: " ";
display: block;
position: absolute;
background: red;
height: 2px;
width: 100%;
background: #985e5b;
transition: .0s linear;
top: 28px;
}
<div class="list">
<a class="menu__list">breakfast</a>
<a class="menu__list">lunch</a>
<a class="menu__list">drinks</a>
<a class="menu__list">desserts</a>
</div>
Автор решения: artes
→ Ссылка
добавить class="active" и с помощью js отслеживать нажатие и добавлять нужному элементу этот класс, а у другого убирать его
Автор решения: Dias
→ Ссылка
С использованием jquery добавляешь класс при нажатии.
$('.list .menu__list').click(function() {
$('.list .menu__list').removeClass('active');
$(this).addClass('active');
});
.list {
display: flex;
justify-content: space-between;
margin: 0 250px 10px 250px;
}
.menu__list {
position: relative;
font-weight: 700;
font-size: 12px;
color: #000;
text-transform: uppercase;
user-select: none;
cursor: pointer;
}
.menu__list:after {
content: " ";
display: none;
position: absolute;
background: red;
height: 2px;
width: 100%;
background: #985e5b;
transition: .0s linear;
top: 28px;
}
.menu__list.active {
color: #985e5b;
}
.menu__list:hover {
color: #985e5b;
}
.menu__list:hover:after {
display: block;
}
.menu__list.active:after {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list">
<a class="menu__list">breakfast</a>
<a class="menu__list">lunch</a>
<a class="menu__list">drinks</a>
<a class="menu__list">desserts</a>
</div>