#css #css-selectors
#css #css-селекторы
Вопрос:
У меня есть меню, содержащее множество элементов li. У меня есть пять элементов, я использую flexbox, чтобы выровнять их по последнему элементу, используя margin-left:auto;
, чтобы сдвинуть его вправо.
Я также использую transform: skewX (45deg) для создания стрелок для каждого li::before
и li::after
, и у меня есть начальный цвет фона. Граница стрелки установлена на желтый.
Моя проблема в том, что я хотел бы индивидуально установить цвет для каждого элемента li, кроме последнего элемента li.
Итак, я хотел бы использовать свойство li:nt-child и задать цвет фона, а также учесть значения before и after.
Я предполагаю, что мне также нужно использовать z-индекс, возможно, чтобы предыдущие значения цвета до и после обрабатывались надлежащим образом.
Это мой HTML-код:
<nav class="flex-nav" id="nav">
<ul>
<li><a href="./index.pug">Home page</a></li>
<li><a href="./test.pug">Test page</a></li>
<li><a href="./test.pug">Link1</a></li>
<li><a href="./test.pug">Link2</a></li>
<li><a href="./test.pug">Login</a></li>
</ul>
</nav>
И это мой css:
.flex-nav ul {
display: flex;
list-style-type: none;
padding-left: 0;
white-space: nowrap;
}
.flex-nav ul li {
justify-content: space-between;
align-items: center;
opacity: 1.0;
transition: opacity .2s ease-in-out;
position: relative;
line-height: 26px;
margin: 0 9px 0 -10px;
padding: 0 20px;
}
ul li::before,
ul li::after {
border-right: 4px solid yellow;
content: '';
display: block;
height: 50%;
position: absolute;
left: 0;
right: 0;
top: 0;
z-index: -1;
transform: skewX(45deg);
background-color: #b0e0e6;
}
ul li::after {
bottom: 0;
top: auto;
transform: skewX(-45deg);
}
ul li:last-of-type::before,
ul li:last-of-type::after {
display: none;
}
ul li a {
font: bold 18px Sans-Serif;
letter-spacing: -1px;
text-decoration: none;
}
ul>li:hover {
opacity: 1.0;
}
ul:hover>li:not(:hover) {
opacity: 0.5;
}
.flex-nav ul li:last-child {
margin-left: auto;
}
Спасибо 🙂
Комментарии:
1. Итак, в чем ваш актуальный вопрос?
2. Мой aciua?? Извините, я вас не понимаю.
3. Обновите страницу и прочитайте еще раз…
4. Я хотел бы задать отдельным элементам li разные цвета.
5. И что вы уже пробовали? … и что не работает? … или вы просите кого-нибудь здесь написать для вас какой-нибудь код?
Ответ №1:
Попробуйте изменить цвет фона для первого, второго и третьего элементов в приведенном ниже CSS. Спасибо
.flex-nav ul {
display: flex;
list-style-type: none;
padding-left: 0;
white-space: nowrap;
}
.flex-nav ul li {
justify-content: space-between;
align-items: center;
opacity: 1.0;
transition: opacity .2s ease-in-out;
position: relative;
line-height: 26px;
margin: 0 9px 0 -10px;
padding: 0 20px;
}
.flex-nav li:before,
.flex-nav li:after {
border-right: 4px solid yellow;
content: '';
display: block;
height: 50%;
position: absolute;
left: 0;
right: 0;
top: 0;
z-index: -1;
transform: skewX(45deg);
}
.flex-nav li:first-child::before,
.flex-nav li:first-child::after {
background-color: red;
}
.flex-nav li:nth-child(2)::before,
.flex-nav li:nth-child(2)::after {
background-color: green;
}
.flex-nav li:nth-child(3)::before,
.flex-nav li:nth-child(3)::after {
background-color: blue;
}
<nav class="flex-nav" id="nav">
<ul>
<li><a href="./index.pug">Home page</a></li>
<li><a href="./test.pug">Test page</a></li>
<li><a href="./test.pug">Link1</a></li>
<li><a href="./test.pug">Link2</a></li>
<li><a href="./test.pug">Login</a></li>
</ul>
</nav>
Комментарии:
1. Пожалуйста, в будущем используйте фрагмент кода,
<>
предоставленный StackOverflow, для создания ваших ответов.2. еще раз спасибо, вчера я пытался пометить это как правильное, но это мне не помогло, прошло недостаточно времени 🙂 У меня есть еще один вопрос, касающийся nth: дочерних и псевдоэлементов, могу я задать его вам напрямую?
3. @hassan siddiqui Я искал функцию чата, есть ли способ связаться с вами напрямую?
4. Можем ли мы снова пообщаться, если вы онлайн? 🙂