nav :last-child
включает ваш единственный элемент <ul>
. Поскольку есть только один, это :last-child
. Таким образом, он применяется text-transform: uppercase;
ко всем, если его содержимое, в данном случае, ко всем трем <li>
элементам. также применяется к последнему <li>
, потому что это также a :last-child
. Чтобы увидеть это более четко, вот пример с двумя <ul>
элементами.
nav :last-child {
text-transform: uppercase;
}
<nav>
<ul>
<li>This is not a last-child, and parent not a last-child</li>
<li>This is not a last-child, and parent not a last-child</li>
<li>Last-child of li in this section</li>
</ul>
<ul>
<li>Parent ul of these li's is a last-child</li>
<li>So all three li's</li>
<li>Are uppercase</li>
</ul>
</nav>
nav li:last-child
задается c только для li
, поэтому only стилирует последний <li>
.
nav li:last-child {
text-transform: uppercase;
}
<nav>
<ul>
<li>Only applies to li's</li>
<li>So ul has no style applied</li>
<li>But this li is a :last-child</li>
</ul>
<ul>
<li>Only applies to li's</li>
<li>So ul has no style applied</li>
<li>But this li is a :last-child</li>
</ul>
</nav>
И, наконец, nav :not(:last-child)
относится к всему , то есть : не последнему ребенку.
nav :not(:last-child) {
text-transform: uppercase;
}
<nav>
<ul>
<li>This ul is <b>not</b> a :last-child</li>
<li>So all of its content</li>
<li>will be uppercase</li>
</ul>
<ul>
<li>This ul <b>is</b> a :last-child</li>
<li>But these first two li's are not</li>
<li>So they are uppercase</li>
</ul>
</nav>