CSS Classları Hakkında
Bazı CSS Classları arasındaki farklılıkları anlatan İngilizce bir makale
p a
p .a
p.a
p > a
p + a
p a
p a
{
font-weight: bold;
}
This will match any <a> element, inside any <p> element. Both of the following examples apply font-weight: bold; to the <a> elements:
<p><a href="..."></a></p>
<p>
<ul>
<li><a href="..."></a></li>
</ul>
</p>
So, no matter how deeply nested each <a> element is - as long as they’re somewhere inside a <p> element, they will be targeted.
The following example is incorrect:
<ul>
<li><a href="..."></a></li>
</ul>
There are no <p> tags surrounding this list, so the style will not be applied.
p .a
p .a
{
font-weight: bold;
}
This will target any element with the generic class of "a," contained within <p> elements. So, for this example, we’re no longer referring specifically to <a> elements. We could be referring to any element, but the <a> elements could also have a class of "a" applied.
All of the following examples correctly apply font-weight: bold; to the elements:
<p>
<p class="a"></p>
</p>
<p>
<ul>
<li class="a"></li>
</ul>
</p>
<p>
<a href="..." class="a"></a>
</p>
p.a
p.a
{
font-weight: bold;
}
This will target any <p> element with a class of "a."
There is a distinct difference between this selector, and the previous: p .a. Notice the space between the p and the dot. This subtle "space" means something entirely different, so be careful.
The only elements this selector will target is this one:
<p class="a"></p>
p > a
p > a
{
font-weight: bold;
}
This will target any <a> elements, which are children of any <p> element. A child is a direct descendant. Therefore, the following example will be targeted:
<p>
<a href="..."></a>
</p>
The <a> element is a child of the <p> element, so it’s targeted.
This example is incorrect:
<p>
<ul>
<li><a href="..."></a></li>
</ul>
</p>
This example has the <a> element as a child of the <li> element, not the <p> element. In fact, the <a> element is a great-grandchild of the <p> element.
p + a
p + a
{
font-weight: bold;
}
This will target any <a> element that’s an adjacent sibling to a <p> element. The following example illustrates this:
<p></p>
<a href="..."></a>
<ul>
<li></li>
</ul>
Here, the <a> element is a sibling of the <p> element, and most importantly - the <a> element is directly adjacent to the <p> element, meaning next to.
This example is incorrect:
<p></p>
<ul>
<li></li>
</ul>
<a href="..."></a>
Here, <a> is no longer an adjacent sibling, to the the <p> element.