 
    
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>css selectors Archives - Complete, Concrete, Concise</title>
	<atom:link href="https://complete-concrete-concise.com/tag/css-selectors/feed/" rel="self" type="application/rss+xml" />
	<link>https://complete-concrete-concise.com/tag/css-selectors/</link>
	<description>Practical Information Without The Bloat</description>
	<lastBuildDate>Thu, 02 May 2019 15:01:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>CSS Specificity &#8211; Advanced CSS Selectors &#8211; Part 2</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-specificity-advanced-css-selectors-part-2/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Fri, 19 Apr 2019 14:57:44 +0000</pubDate>
				<category><![CDATA[Front-End Basics]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css selectors]]></category>
		<category><![CDATA[css specificity]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[understanding]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3822</guid>

					<description><![CDATA[<p>Learn to be more specific in selecting elements for styling and how to calculate the specificity of CSS selectors.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-specificity-advanced-css-selectors-part-2/">CSS Specificity &#8211; Advanced CSS Selectors &#8211; Part 2</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">
<p>Understanding CSS <em>specificity</em> will help you understand how rules are applied to the elements on your page and allow you greater control over how your page is styled.</p>
</div>
<h2 id="contents">Contents</h2>
<ol class="incremental" type="1">
<li><a href="#getting-specific">Getting Specific</a></li>
<li><a href="#calculating-specificity">Calculating Specificity</a></li>
<li><a href="#rules-for-creating-specific-selectors">Rules for Creating Specific Selectors</a></li>
<li><a href="#final-words">Final Words</a></li>
<li><a href="#references">References</a></li>
</ol>
<h2 id="getting-specific">Getting Specific</h2>
<p>You’ve seen that you can apply multiple styles to an HTML element like this:</p>
<div class="sourceCode" id="cb1">
<pre class="sourceCode html"><code class="sourceCode html"><a class="sourceLine" id="cb1-1" title="1"><span class="kw">&lt;p</span><span class="ot"> id=</span><span class="st">&quot;first&quot;</span><span class="ot"> class=</span><span class="st">&quot;important box&quot;</span><span class="kw">&gt;</span></a></code></pre>
</div>
<p>And you can create individual styles for various elements on the page:</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb2-1" title="1">p {</a>
<a class="sourceLine" id="cb2-2" title="2">  <span class="kw">background-color</span>: <span class="cn">aliceblue</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-3" title="3">}</a>
<a class="sourceLine" id="cb2-4" title="4"></a>
<a class="sourceLine" id="cb2-5" title="5"><span class="pp">#first</span> {</a>
<a class="sourceLine" id="cb2-6" title="6">  <span class="kw">background-color</span>: <span class="cn">darkgray</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-7" title="7">  <span class="kw">color</span>: <span class="cn">yellow</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-8" title="8">}</a>
<a class="sourceLine" id="cb2-9" title="9"></a>
<a class="sourceLine" id="cb2-10" title="10"><span class="fu">.important</span> {</a>
<a class="sourceLine" id="cb2-11" title="11">  <span class="kw">font-size</span>: <span class="dv">24</span><span class="dt">px</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-12" title="12">  <span class="kw">background-color</span>: <span class="cn">red</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-13" title="13">  <span class="kw">color</span>: <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-14" title="14">  <span class="kw">border</span>: <span class="dv">2</span><span class="dt">px</span> <span class="dv">solid</span> <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-15" title="15">}</a>
<a class="sourceLine" id="cb2-16" title="16"></a>
<a class="sourceLine" id="cb2-17" title="17"><span class="fu">.box</span> {</a>
<a class="sourceLine" id="cb2-18" title="18">  <span class="kw">border</span>: <span class="dv">1</span><span class="dt">px</span> <span class="dv">solid</span> <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb2-19" title="19">}</a></code></pre>
</div>
<p>A number of rules style the same CSS properties &#8211; <span class="css-property">background-color</span> and <span class="css-property">color</span> &#8211; and final result depends on:</p>
<ol class="incremental" type="1">
<li>the priority (or significance) of the selectors</li>
<li>for selectors with the same priority, the last defined property takes priority.</li>
</ol>
<p>Which means that the final style rule looks like this</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb3-1" title="1">{</a>
<a class="sourceLine" id="cb3-2" title="2">  <span class="co">/* ID styles have highest priority */</span></a>
<a class="sourceLine" id="cb3-3" title="3">  <span class="kw">background-color</span>: <span class="cn">darkgray</span><span class="op">;</span></a>
<a class="sourceLine" id="cb3-4" title="4">  <span class="kw">color</span>: <span class="cn">yellow</span><span class="op">;</span></a>
<a class="sourceLine" id="cb3-5" title="5">  <span class="co">/* font-size is only specified in .important,</span></a>
<a class="sourceLine" id="cb3-6" title="6"><span class="co">     so it is applied */</span></a>
<a class="sourceLine" id="cb3-7" title="7">  <span class="kw">font-size</span>: <span class="dv">24</span><span class="dt">px</span><span class="op">;</span></a>
<a class="sourceLine" id="cb3-8" title="8">  <span class="co">/* border in .box is defined after border was</span></a>
<a class="sourceLine" id="cb3-9" title="9"><span class="co">     defined in .important, so it gets applied */</span></a>
<a class="sourceLine" id="cb3-10" title="10">  <span class="kw">border</span>: <span class="dv">1</span><span class="dt">px</span> <span class="dv">solid</span> <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb3-11" title="11">}</a></code></pre>
</div>
<p>This can seem haphazard and you might like to have better control over your CSS style rules &#8211; especially if later declarations can override earlier declarations.</p>
<p>We can overcome this by being more specific with our styling rules:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb4-1" title="1"><span class="co">/*</span></a>
<a class="sourceLine" id="cb4-2" title="2"><span class="co">  Apply this style to any element which has</span></a>
<a class="sourceLine" id="cb4-3" title="3"><span class="co">  id=&quot;first&quot; AND class=&quot;important&quot;</span></a>
<a class="sourceLine" id="cb4-4" title="4"><span class="co">*/</span></a>
<a class="sourceLine" id="cb4-5" title="5"><span class="pp">#first</span><span class="fu">.important</span> {</a>
<a class="sourceLine" id="cb4-6" title="6">  <span class="kw">font-size</span>: <span class="dv">24</span><span class="dt">px</span><span class="op">;</span></a>
<a class="sourceLine" id="cb4-7" title="7">  <span class="kw">background-color</span>: <span class="cn">red</span><span class="op">;</span></a>
<a class="sourceLine" id="cb4-8" title="8">  <span class="kw">color</span>: <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb4-9" title="9">}</a></code></pre>
</div>
<p>We can get even more specific with the following:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb5-1" title="1"><span class="co">/*</span></a>
<a class="sourceLine" id="cb5-2" title="2"><span class="co">  Apply this style to any &lt;p&gt; element which has</span></a>
<a class="sourceLine" id="cb5-3" title="3"><span class="co">  id=&quot;first&quot; AND class=&quot;important&quot;</span></a>
<a class="sourceLine" id="cb5-4" title="4"><span class="co">*/</span></a>
<a class="sourceLine" id="cb5-5" title="5">p<span class="pp">#first</span><span class="fu">.important</span> {</a>
<a class="sourceLine" id="cb5-6" title="6">  <span class="kw">font-size</span>: <span class="dv">24</span><span class="dt">px</span><span class="op">;</span></a>
<a class="sourceLine" id="cb5-7" title="7">  <span class="kw">background-color</span>: <span class="cn">red</span><span class="op">;</span></a>
<a class="sourceLine" id="cb5-8" title="8">  <span class="kw">color</span>: <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb5-9" title="9">}</a></code></pre>
</div>
<p>However, if you created the following rule:</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb6-1" title="1"><span class="co">/*</span></a>
<a class="sourceLine" id="cb6-2" title="2"><span class="co">  Apply this style to any &lt;p&gt; element which has</span></a>
<a class="sourceLine" id="cb6-3" title="3"><span class="co">  a class=&quot;important&quot;</span></a>
<a class="sourceLine" id="cb6-4" title="4"><span class="co">*/</span></a>
<a class="sourceLine" id="cb6-5" title="5">p<span class="fu">.important</span> {</a>
<a class="sourceLine" id="cb6-6" title="6">  <span class="kw">font-size</span>: <span class="dv">24</span><span class="dt">px</span><span class="op">;</span></a>
<a class="sourceLine" id="cb6-7" title="7">  <span class="kw">background-color</span>: <span class="cn">red</span><span class="op">;</span></a>
<a class="sourceLine" id="cb6-8" title="8">  <span class="kw">color</span>: <span class="cn">black</span><span class="op">;</span></a>
<a class="sourceLine" id="cb6-9" title="9">}</a></code></pre>
</div>
<p>And you applied it to the following code:</p>
<div class="sourceCode" id="cb7">
<pre class="sourceCode html"><code class="sourceCode html"><a class="sourceLine" id="cb7-1" title="1"><span class="kw">&lt;p</span><span class="ot"> id=</span><span class="st">&quot;first&quot;</span><span class="ot"> class=</span><span class="st">&quot;important box&quot;</span><span class="kw">&gt;</span></a></code></pre>
</div>
<p>You would find that the styles of <span class="css-id">#first</span> would take priority over the styles in <span class="css-class">p.important</span> despite <span class="css-class">p.important</span> appearing to be more specific &#8211; after all, it specifies <strong>two</strong> selectors (&lt;element&gt; and .class) over the <strong>single</strong> ID selector.</p>
<p>This is because the <strong>significance</strong> of a rule depends on the <em>specificity</em> of the selector. CSS specificity is calculated using a few straightforward rules.</p>
<h2 id="calculating-specificity">Calculating Specificity</h2>
<p>Specificity is calculated as a string of three values<a href="#fn1" class="footnote-ref" id="fnref1"><sup>1</sup></a>. Many resources and tutorials show it as a single number like 000 or 130. Some tutorials show it in the form 0-0-0 or 1-3-0 &#8211; which is a better representation. I will use the following representation: 0:0:0 or 1:3:0.</p>
<p>The <em>specificity</em> number indicates the total counts of various basic selectors. The universal selector always has a <em>specificity</em> of 0:0:0 &#8211; so any selector with a higher <em>specificity</em> will trump it. As with normal numbers, the leftmost digits are more significant than the rightmost digits. Consider the ranking of the following specificities:</p>
<ul class="incremental">
<li>0:0:1 &gt; 0:0:0</li>
<li>0:2:0 &gt; 0:1:0</li>
<li>0:2:1 &gt; 0:1:6</li>
<li>0:2:5 &gt; 0:2:4</li>
<li>1:2:3 &gt; 0:12:7</li>
</ul>
<p>The <em>specificity</em> number is calculated as the total number of CSS specifiers used for that style rule. The totals are arranged in the following manner:</p>
<table style="border:1px solid black;margin: auto;">
<tr>
<td style="border:1px solid black;padding:1.5em;">
IDs
</td>
<td style="border:1px solid black;padding:1.5em;">
.classes and [attributes]
</td>
<td style="border:1px solid black;padding:1.5em;">
&lt;elements&gt;
</td>
</tr>
</table>
<p>Consider the specificity of the following selectors:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb8-1" title="1"><span class="op">*</span> {</a>
<a class="sourceLine" id="cb8-2" title="2">  <span class="co">/* specificity = 0:0:0 */</span>  </a>
<a class="sourceLine" id="cb8-3" title="3">}</a>
<a class="sourceLine" id="cb8-4" title="4"></a>
<a class="sourceLine" id="cb8-5" title="5">p {</a>
<a class="sourceLine" id="cb8-6" title="6">  <span class="co">/* specificity = 0:0:1 */</span>  </a>
<a class="sourceLine" id="cb8-7" title="7">}</a>
<a class="sourceLine" id="cb8-8" title="8"></a>
<a class="sourceLine" id="cb8-9" title="9"><span class="fu">.class</span> {</a>
<a class="sourceLine" id="cb8-10" title="10">  <span class="co">/* specificity = 0:1:0 */</span>  </a>
<a class="sourceLine" id="cb8-11" title="11">}</a>
<a class="sourceLine" id="cb8-12" title="12"></a>
<a class="sourceLine" id="cb8-13" title="13"><span class="ex">[attribute]</span> {</a>
<a class="sourceLine" id="cb8-14" title="14">  <span class="co">/* specificity = 0:1:0 */</span>    </a>
<a class="sourceLine" id="cb8-15" title="15">}</a>
<a class="sourceLine" id="cb8-16" title="16"></a>
<a class="sourceLine" id="cb8-17" title="17"><span class="pp">#id</span> {</a>
<a class="sourceLine" id="cb8-18" title="18">  <span class="co">/* specificity = 1:0:0 */</span>  </a>
<a class="sourceLine" id="cb8-19" title="19">}</a>
<a class="sourceLine" id="cb8-20" title="20"></a>
<a class="sourceLine" id="cb8-21" title="21">p<span class="fu">.class</span> {</a>
<a class="sourceLine" id="cb8-22" title="22">  <span class="co">/* specificity = 0:1:1 */</span></a>
<a class="sourceLine" id="cb8-23" title="23">}</a>
<a class="sourceLine" id="cb8-24" title="24"></a>
<a class="sourceLine" id="cb8-25" title="25">ol<span class="ex">[reversed]</span> {</a>
<a class="sourceLine" id="cb8-26" title="26">  <span class="co">/* specificity = 0:1:1 */</span></a>
<a class="sourceLine" id="cb8-27" title="27">}</a>
<a class="sourceLine" id="cb8-28" title="28"></a>
<a class="sourceLine" id="cb8-29" title="29">p<span class="pp">#id</span><span class="fu">.class</span> {</a>
<a class="sourceLine" id="cb8-30" title="30">  <span class="co">/* specificity = 1:1:1 */</span></a>
<a class="sourceLine" id="cb8-31" title="31">}</a>
<a class="sourceLine" id="cb8-32" title="32"></a>
<a class="sourceLine" id="cb8-33" title="33">p<span class="pp">#id</span><span class="fu">.class</span><span class="ex">[attribute]</span> {</a>
<a class="sourceLine" id="cb8-34" title="34">  <span class="co">/* specificity = 1:2:1 */</span></a>
<a class="sourceLine" id="cb8-35" title="35">}</a>
<a class="sourceLine" id="cb8-36" title="36"></a>
<a class="sourceLine" id="cb8-37" title="37"><span class="pp">#id</span><span class="ex">[attribute]</span> {</a>
<a class="sourceLine" id="cb8-38" title="38">  <span class="co">/* specificity = 1:1:0 */</span></a>
<a class="sourceLine" id="cb8-39" title="39">}</a>
<a class="sourceLine" id="cb8-40" title="40"></a>
<a class="sourceLine" id="cb8-41" title="41"><span class="fu">.class</span><span class="ex">[attribute]</span> {</a>
<a class="sourceLine" id="cb8-42" title="42">  <span class="co">/* specificity = 0:2:0 */</span></a>
<a class="sourceLine" id="cb8-43" title="43">}</a>
<a class="sourceLine" id="cb8-44" title="44"></a>
<a class="sourceLine" id="cb8-45" title="45"><span class="co">/*</span></a>
<a class="sourceLine" id="cb8-46" title="46"><span class="co">  it looks strange, but this is valid CSS</span></a>
<a class="sourceLine" id="cb8-47" title="47"><span class="co">  you can repeat the same selector over and</span></a>
<a class="sourceLine" id="cb8-48" title="48"><span class="co">  over to increase its specificity.</span></a>
<a class="sourceLine" id="cb8-49" title="49"></a>
<a class="sourceLine" id="cb8-50" title="50"><span class="co">  It does not work for &lt;elements&gt;, i.e. you</span></a>
<a class="sourceLine" id="cb8-51" title="51"><span class="co">  can not do ppp to increase the specificity</span></a>
<a class="sourceLine" id="cb8-52" title="52"><span class="co">  for &lt;p&gt; tags.</span></a>
<a class="sourceLine" id="cb8-53" title="53"><span class="co">*/</span></a>
<a class="sourceLine" id="cb8-54" title="54"><span class="fu">.class.class.class.class</span> {</a>
<a class="sourceLine" id="cb8-55" title="55">  <span class="co">/* specificity = 0:4:0 */</span></a>
<a class="sourceLine" id="cb8-56" title="56">}</a></code></pre>
</div>
<p>In each case, you simply add up the total number of basic selectors, put them in the correct location and compare.</p>
<h2 id="rules-for-creating-specific-selectors">Rules for Creating Specific Selectors</h2>
<ol class="incremental" type="1">
<li>If you specify an HTML element, then it must be at the beginning of the selector. i.e.: <span class="css-class">p[attribute]</span> not <span class="css-class">[attribute]p</span>.</li>
<li>There can be a maximum of 1 HTML element in a specific selector. i.e.: <span class="css-class">p.class</span> or <span class="css-class">ul[reversed]</span>, but not <span class="css-class">pspan.class</span>.</li>
<li>There can be a maximum of 1 <span class="css-id">#ID</span> in a selector. This is because <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-selecting-specific-elements-for-styling/#fn2">an element can have at most 1 <span class="css-id">#ID</span></a>.</li>
<li>The order of <span class="css-class">.class</span>, <span class="css-attribute">[attribute]</span>, or <span class="css-id">#ID</span> doesn’t matter. i.e.: <span class="css-class">#ID.class</span> is equivalent to <span class="css-class">.class#ID</span>.</li>
<li><span class="css-class">.class</span>, <span class="css-attribute">[attribute]</span>, and <span class="css-id">#ID</span> selectors may be repeated to increase their specificity. i.e.: <span class="css-class">.class</span> has a specificity of 0:1:0, but <span class="css-class">.class.class</span> has a specificity of 0:2:0.</li>
<li>You cannot repeat HTML elements. i.e.: <span class="css-class">pppp</span> or <span class="css-class">ulul</span> have no meaning and will be ignored by the browser.</li>
<li>All selectors are written together without spaces between them. i.e.: <span class="css-class">p.class</span> is not the same as <span class="css-class">p .class</span> and <span class="css-class">#id[attribute]</span> is not the same as <span class="css-class">#id [attribute]</span>.<a href="#fn2" class="footnote-ref" id="fnref2"><sup>2</sup></a></li>
</ol>
<h2 id="final-words">Final Words</h2>
<ol class="incremental" type="1">
<li>
<p>You can be very specific about which HTML element to style on a page by stringing together various selectors associated with that element:</p>
<div class="sourceCode" id="cb9">
<pre class="sourceCode css"><code class="sourceCode css"><a class="sourceLine" id="cb9-1" title="1"><span class="co">/*</span></a>
<a class="sourceLine" id="cb9-2" title="2"><span class="co">  select &lt;ul&gt; elements which contain the</span></a>
<a class="sourceLine" id="cb9-3" title="3"><span class="co">  reversed attribute</span></a>
<a class="sourceLine" id="cb9-4" title="4"></a>
<a class="sourceLine" id="cb9-5" title="5"><span class="co">  specificity = 0:1:1</span></a>
<a class="sourceLine" id="cb9-6" title="6"><span class="co">*/</span></a>
<a class="sourceLine" id="cb9-7" title="7">ul<span class="ex">[reversed]</span> {</a>
<a class="sourceLine" id="cb9-8" title="8"></a>
<a class="sourceLine" id="cb9-9" title="9">}</a>
<a class="sourceLine" id="cb9-10" title="10"></a>
<a class="sourceLine" id="cb9-11" title="11"><span class="co">/*</span></a>
<a class="sourceLine" id="cb9-12" title="12"><span class="co">  select &lt;ul&gt; elements which contain the</span></a>
<a class="sourceLine" id="cb9-13" title="13"><span class="co">  reversed attribute AND have a class of</span></a>
<a class="sourceLine" id="cb9-14" title="14"><span class="co">  .class1</span></a>
<a class="sourceLine" id="cb9-15" title="15"></a>
<a class="sourceLine" id="cb9-16" title="16"><span class="co">  specificity = 0:2:1</span></a>
<a class="sourceLine" id="cb9-17" title="17"><span class="co">*/</span></a>
<a class="sourceLine" id="cb9-18" title="18">ul<span class="ex">[reversed]</span><span class="fu">.class1</span> {</a>
<a class="sourceLine" id="cb9-19" title="19"></a>
<a class="sourceLine" id="cb9-20" title="20">}</a></code></pre>
</div>
</li>
<li><em>Specificity</em> is calculated by summing and arranging the total number of basic specifiers in each of the following groups:<br />
<table style="border:1px solid black;margin: auto;">
<tr>
<td style="border:1px solid black;padding:1.5em;">
IDs
</td>
<td style="border:1px solid black;padding:1.5em;">
.classes and [attributes]
</td>
<td style="border:1px solid black;padding:1.5em;">
&lt;elements&gt;
</td>
</tr>
</table>
</li>
<li>In deciding which styling rule to apply, the rule with the higher <em>specificity</em> is applied.</li>
<li>If two rules have the same <em>specificity</em> then the last rule defined is applied.</li>
<li>The universal selector always has a specificity of 0:0:0.</li>
<li>
<p>There are no spaces between the selectors &#8211; it is written as one long expression.</p>
</li>
</ol>
<h2 id="references">References</h2>
<ol class="incremental" type="1">
<li><a href="https://drafts.csswg.org/selectors-3/">CSS Selectors</a></li>
</ol>
<div class="prev">
<p><a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/advanced-css-selectors-part-1/">Prev</a></p>
</div>
<div class="next">
<p><a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-combinators-advanced-css-selectors-part-3/">Next</a></p>
</div>
<div class="clear">
</div>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">
<p>For now it is three values, in reality there two more values that have higher specificity and can be considered as the fourth and fifth specificity values &#8211; they will be covered in a future tutorial.<a href="#fnref1" class="footnote-back">↩</a></p>
</li>
<li id="fn2">
<p>The next tutorial will show how spaces between selectors changes the meaning of the selection expression.<a href="#fnref2" class="footnote-back">↩</a></p>
</li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-specificity-advanced-css-selectors-part-2/">CSS Specificity &#8211; Advanced CSS Selectors &#8211; Part 2</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Five Examples Using CSS Selectors</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/five-examples-using-css-selectors/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Fri, 20 Apr 2018 14:08:40 +0000</pubDate>
				<category><![CDATA[Front-End Basics]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css selectors]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3620</guid>

					<description><![CDATA[<p>Some worked examples of using various CSS selectors.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/five-examples-using-css-selectors/">Five Examples Using CSS Selectors</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">
Putting various CSS selectors to the test.
</div>
<h2>Contents</h2>
<ol type="1">
<li><a href="#alternating-paragraph-colours">Alternating Paragraph Colours</a></li>
<li><a href="#selectively-styling-ordered-lists">Selectively Styling Ordered Lists</a></li>
<li><a href="#selectively-styling-anchors">Selectively Styling Anchors</a></li>
<li><a href="#experiments-with-multiple-classes">Experiments with Multiple Classes</a></li>
<li><a href="#selecting-with-id-class-and-attribute">Selecting with ID, Class, and Attribute</a></li>
</ol>
<h2 id="alternating-paragraph-colours">Alternating Paragraph Colours</h2>
<p>You can see how my attempt looks <a href="https://complete-concrete-concise.com/sample/18-alternating-paragraph-colours.html">here</a></p>
<div id="cb1" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb1-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>HTML<span class="dt">&gt;</span>
<a id="cb1-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb1-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb1-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>Alternating Paragraph Colours<span class="kw">&lt;/title&gt;</span>
<a id="cb1-5" class="sourceLine" data-line-number="5"></a>    <span class="kw">&lt;style&gt;</span>
<a id="cb1-6" class="sourceLine" data-line-number="6"></a>
<a id="cb1-7" class="sourceLine" data-line-number="7"></a>      body {
<a id="cb1-8" class="sourceLine" data-line-number="8"></a>        <span class="kw">background-color</span>: cornsilk;
<a id="cb1-9" class="sourceLine" data-line-number="9"></a>      }
<a id="cb1-10" class="sourceLine" data-line-number="10"></a>
<a id="cb1-11" class="sourceLine" data-line-number="11"></a>      <span class="fu">.bar1</span> {
<a id="cb1-12" class="sourceLine" data-line-number="12"></a>        <span class="kw">background-color</span>: <span class="dv">white</span>;
<a id="cb1-13" class="sourceLine" data-line-number="13"></a>      }
<a id="cb1-14" class="sourceLine" data-line-number="14"></a>
<a id="cb1-15" class="sourceLine" data-line-number="15"></a>      <span class="fu">.bar2</span> {
<a id="cb1-16" class="sourceLine" data-line-number="16"></a>        <span class="kw">background-color</span>: <span class="dv">#f0fff7</span>;
<a id="cb1-17" class="sourceLine" data-line-number="17"></a>      }
<a id="cb1-18" class="sourceLine" data-line-number="18"></a>
<a id="cb1-19" class="sourceLine" data-line-number="19"></a>    <span class="kw">&lt;/style&gt;</span>
<a id="cb1-20" class="sourceLine" data-line-number="20"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb1-21" class="sourceLine" data-line-number="21"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb1-22" class="sourceLine" data-line-number="22"></a>    <span class="kw">&lt;h1&gt;</span>Alternating Paragraph Colours<span class="kw">&lt;/h1&gt;</span>
<a id="cb1-23" class="sourceLine" data-line-number="23"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar1"</span><span class="kw">&gt;</span>Fac ergo, mi Lucili, quod
<a id="cb1-24" class="sourceLine" data-line-number="24"></a>    aequitatem tuam decet, desine beneficium fortunae
<a id="cb1-25" class="sourceLine" data-line-number="25"></a>    male interpretari: abstulit, sed dedit<span class="kw">&lt;/p&gt;</span>
<a id="cb1-26" class="sourceLine" data-line-number="26"></a>
<a id="cb1-27" class="sourceLine" data-line-number="27"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar2"</span><span class="kw">&gt;</span>Ideo amicis avide fruamur quia
<a id="cb1-28" class="sourceLine" data-line-number="28"></a>    quamdiu contingere hoc possit incertum est.
<a id="cb1-29" class="sourceLine" data-line-number="29"></a>    Cogitemus quam saepe illos reliquerimus in aliquam
<a id="cb1-30" class="sourceLine" data-line-number="30"></a>    peregrinationem longinquam exituri, quam saepe
<a id="cb1-31" class="sourceLine" data-line-number="31"></a>    eodem morantes loco non viderimus: intellegemus
<a id="cb1-32" class="sourceLine" data-line-number="32"></a>    plus nos temporis in vivis perdidisse.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-33" class="sourceLine" data-line-number="33"></a>
<a id="cb1-34" class="sourceLine" data-line-number="34"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar1"</span><span class="kw">&gt;</span>Feras autem hos qui
<a id="cb1-35" class="sourceLine" data-line-number="35"></a>    neglegentissime amicos habent, miserrime lugent,
<a id="cb1-36" class="sourceLine" data-line-number="36"></a>    nec amant quemquam nisi perdiderunt? ideoque
<a id="cb1-37" class="sourceLine" data-line-number="37"></a>    tunc effusius maerent quia verentur ne dubium
<a id="cb1-38" class="sourceLine" data-line-number="38"></a>    sit an amaverint; sera indicia affectus sui
<a id="cb1-39" class="sourceLine" data-line-number="39"></a>    quaerunt.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-40" class="sourceLine" data-line-number="40"></a>
<a id="cb1-41" class="sourceLine" data-line-number="41"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar2"</span><span class="kw">&gt;</span>Si habemus alios amicos, male de
<a id="cb1-42" class="sourceLine" data-line-number="42"></a>    iiset meremur et existimamus, qui parum valent in
<a id="cb1-43" class="sourceLine" data-line-number="43"></a>    unius elati solacium; si non habemus, maiorem
<a id="cb1-44" class="sourceLine" data-line-number="44"></a>    iniuriam ipsi nobis fecimus quam a fortuna
<a id="cb1-45" class="sourceLine" data-line-number="45"></a>    accepimus: illa unum abstulit, nos quemcumque non
<a id="cb1-46" class="sourceLine" data-line-number="46"></a>    fecimus.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-47" class="sourceLine" data-line-number="47"></a>
<a id="cb1-48" class="sourceLine" data-line-number="48"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar1"</span><span class="kw">&gt;</span>Deinde ne unum quidem nimis
<a id="cb1-49" class="sourceLine" data-line-number="49"></a>    amavit qui plus quam unum amare non potuit. Si
<a id="cb1-50" class="sourceLine" data-line-number="50"></a>    quis despoliatus amissa unica tunica complorare
<a id="cb1-51" class="sourceLine" data-line-number="51"></a>    se malit quam circumspicere quomodo frigus
<a id="cb1-52" class="sourceLine" data-line-number="52"></a>    effugiat et aliquid inveniat quo tegat scapulas,
<a id="cb1-53" class="sourceLine" data-line-number="53"></a>    nonne tibi videatur stultissimus? Quem amabas
<a id="cb1-54" class="sourceLine" data-line-number="54"></a>    extulisti: quaere quem ames. Satius est amicum
<a id="cb1-55" class="sourceLine" data-line-number="55"></a>    reparare quam flere.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-56" class="sourceLine" data-line-number="56"></a>
<a id="cb1-57" class="sourceLine" data-line-number="57"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar2"</span><span class="kw">&gt;</span>Scio pertritum iam hoc esse quod
<a id="cb1-58" class="sourceLine" data-line-number="58"></a>    adiecturus sum, non ideo tamen praetermittam
<a id="cb1-59" class="sourceLine" data-line-number="59"></a>    quia ab omnibus dictum est: finem dolendi
<a id="cb1-60" class="sourceLine" data-line-number="60"></a>    etiam qui consilio non fecerat tempore invenit.
<a id="cb1-61" class="sourceLine" data-line-number="61"></a>    Turpissimum autem est in homine prudente
<a id="cb1-62" class="sourceLine" data-line-number="62"></a>    remedium maeroris lassitudo maerendi: malo
<a id="cb1-63" class="sourceLine" data-line-number="63"></a>    relinquas dolorem quam ab illo relinquaris;
<a id="cb1-64" class="sourceLine" data-line-number="64"></a>    et quam primum id facere desiste quod, etiam
<a id="cb1-65" class="sourceLine" data-line-number="65"></a>    si voles, diu facere non poteris.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-66" class="sourceLine" data-line-number="66"></a>
<a id="cb1-67" class="sourceLine" data-line-number="67"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar1"</span><span class="kw">&gt;</span>Annum feminis ad lugendum
<a id="cb1-68" class="sourceLine" data-line-number="68"></a>    constituere maiores, non ut tam diu lugerent,
<a id="cb1-69" class="sourceLine" data-line-number="69"></a>    sed ne diutius: viris nullum legitimum tempus
<a id="cb1-70" class="sourceLine" data-line-number="70"></a>    est, quia nullum honestum. Quam tamen mihi ex
<a id="cb1-71" class="sourceLine" data-line-number="71"></a>    illis mulierculis dabis vix retractis a rogo,
<a id="cb1-72" class="sourceLine" data-line-number="72"></a>    vix a cadavere revulsis, cui lacrimae in totum
<a id="cb1-73" class="sourceLine" data-line-number="73"></a>    mensem duraverint? Nulla res citius in odium
<a id="cb1-74" class="sourceLine" data-line-number="74"></a>    venit quam dolor, qui recens consolatorem
<a id="cb1-75" class="sourceLine" data-line-number="75"></a>    invenit et aliquos ad se adducit, inveteratus
<a id="cb1-76" class="sourceLine" data-line-number="76"></a>    vero deridetur, nec immerito; aut enim
<a id="cb1-77" class="sourceLine" data-line-number="77"></a>    simulatus aut stultus est.<span class="kw">&lt;/p&gt;</span>
<a id="cb1-78" class="sourceLine" data-line-number="78"></a>
<a id="cb1-79" class="sourceLine" data-line-number="79"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bar2"</span><span class="kw">&gt;</span>Haec tibi scribo, is qui Annaeum
<a id="cb1-80" class="sourceLine" data-line-number="80"></a>    Serenum carissimum mihi tam immodice flevi ut,
<a id="cb1-81" class="sourceLine" data-line-number="81"></a>    quod minime velim, inter exempla sim eorum quos
<a id="cb1-82" class="sourceLine" data-line-number="82"></a>    dolor vicit. Hodie tamen factum meum damno et
<a id="cb1-83" class="sourceLine" data-line-number="83"></a>    intellego maximam mihi causam sic lugendi
<a id="cb1-84" class="sourceLine" data-line-number="84"></a>    fuisse quod numquam cogitaveram mori eum ante
<a id="cb1-85" class="sourceLine" data-line-number="85"></a>    me posse. Hoc unum mihi occurrebat, minorem
<a id="cb1-86" class="sourceLine" data-line-number="86"></a>    esse et multo minorem - tamquam ordinem fata
<a id="cb1-87" class="sourceLine" data-line-number="87"></a>    servarent!<span class="kw">&lt;/p&gt;</span>
<a id="cb1-88" class="sourceLine" data-line-number="88"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb1-89" class="sourceLine" data-line-number="89"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<h3 id="notes">Notes</h3>
<ol type="1">
<li>a style was applied to the <span class="html-tag">body</span> to give it a background colour;</li>
<li>two classes (called <em>bar1</em> and <em>bar2</em>) were created to style the paragraphs;</li>
<li>the classes were alternately applied to the paragraphs.<a id="fnref1" class="footnote-ref" href="#fn1"><sup>1</sup></a></li>
</ol>
<p>As a reminder, <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/html-basic-conclusion#fnref1">you have previously seen</a> that HTML collapses any extra white space between text, so breaking the paragraph content over several lines (so it comfortably fits on the page) doesn’t affect the way it appears when rendered.</p>
<h2 id="selectively-styling-ordered-lists">Selectively Styling Ordered Lists</h2>
<p>You can see how my attempt looks <a href="https://complete-concrete-concise.com/sample/18-selectively-styling-lists.html">here</a></p>
<div id="cb2" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb2-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>HTML<span class="dt">&gt;</span>
<a id="cb2-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb2-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb2-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>Selectively Styling Lists<span class="kw">&lt;/title&gt;</span>
<a id="cb2-5" class="sourceLine" data-line-number="5"></a>    <span class="kw">&lt;meta</span><span class="ot"> charset=</span><span class="st">"utf-8"</span> <span class="kw">/&gt;</span>
<a id="cb2-6" class="sourceLine" data-line-number="6"></a>
<a id="cb2-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">&lt;style&gt;</span>
<a id="cb2-8" class="sourceLine" data-line-number="8"></a>
<a id="cb2-9" class="sourceLine" data-line-number="9"></a>      body {
<a id="cb2-10" class="sourceLine" data-line-number="10"></a>        <span class="kw">background-color</span>: aliceblue;
<a id="cb2-11" class="sourceLine" data-line-number="11"></a>      }
<a id="cb2-12" class="sourceLine" data-line-number="12"></a>
<a id="cb2-13" class="sourceLine" data-line-number="13"></a>      li {
<a id="cb2-14" class="sourceLine" data-line-number="14"></a>        <span class="kw">margin</span>: <span class="dv">16px</span>;
<a id="cb2-15" class="sourceLine" data-line-number="15"></a>      }
<a id="cb2-16" class="sourceLine" data-line-number="16"></a>
<a id="cb2-17" class="sourceLine" data-line-number="17"></a>      <span class="ex">[reversed]</span> {
<a id="cb2-18" class="sourceLine" data-line-number="18"></a>        <span class="kw">background</span>: <span class="dv">lime</span>;
<a id="cb2-19" class="sourceLine" data-line-number="19"></a>      }
<a id="cb2-20" class="sourceLine" data-line-number="20"></a>
<a id="cb2-21" class="sourceLine" data-line-number="21"></a>    <span class="kw">&lt;/style&gt;</span>
<a id="cb2-22" class="sourceLine" data-line-number="22"></a>
<a id="cb2-23" class="sourceLine" data-line-number="23"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb2-24" class="sourceLine" data-line-number="24"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb2-25" class="sourceLine" data-line-number="25"></a>    <span class="kw">&lt;h1&gt;</span>Selectively Styling Lists<span class="kw">&lt;/h1&gt;</span>
<a id="cb2-26" class="sourceLine" data-line-number="26"></a>
<a id="cb2-27" class="sourceLine" data-line-number="27"></a>    <span class="kw">&lt;h2&gt;</span>Top 5 Reasons to Learn HTML <span class="er">&amp;</span> CSS<span class="kw">&lt;/h2&gt;</span>
<a id="cb2-28" class="sourceLine" data-line-number="28"></a>    <span class="kw">&lt;ol&gt;</span>
<a id="cb2-29" class="sourceLine" data-line-number="29"></a>      <span class="kw">&lt;li&gt;</span>It's fun!<span class="kw">&lt;/li&gt;</span>
<a id="cb2-30" class="sourceLine" data-line-number="30"></a>      <span class="kw">&lt;li&gt;</span>To be cool!<span class="kw">&lt;/li&gt;</span>
<a id="cb2-31" class="sourceLine" data-line-number="31"></a>      <span class="kw">&lt;li&gt;</span>Create your own webpages.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-32" class="sourceLine" data-line-number="32"></a>      <span class="kw">&lt;li&gt;</span>Have a hobby.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-33" class="sourceLine" data-line-number="33"></a>      <span class="kw">&lt;li&gt;</span>Indulge your curiosity.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-34" class="sourceLine" data-line-number="34"></a>    <span class="kw">&lt;/ol&gt;</span>
<a id="cb2-35" class="sourceLine" data-line-number="35"></a>
<a id="cb2-36" class="sourceLine" data-line-number="36"></a>    <span class="kw">&lt;h2&gt;</span>Counting Down 5 Reasons to Learn HTML <span class="er">&amp;</span> CSS<span class="kw">&lt;/h2&gt;</span>
<a id="cb2-37" class="sourceLine" data-line-number="37"></a>    <span class="kw">&lt;ol</span><span class="ot"> reversed</span><span class="kw">&gt;</span>
<a id="cb2-38" class="sourceLine" data-line-number="38"></a>      <span class="kw">&lt;li&gt;</span>It's fun!<span class="kw">&lt;/li&gt;</span>
<a id="cb2-39" class="sourceLine" data-line-number="39"></a>      <span class="kw">&lt;li&gt;</span>To be cool!<span class="kw">&lt;/li&gt;</span>
<a id="cb2-40" class="sourceLine" data-line-number="40"></a>      <span class="kw">&lt;li&gt;</span>Create your own webpages.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-41" class="sourceLine" data-line-number="41"></a>      <span class="kw">&lt;li&gt;</span>Have a hobby.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-42" class="sourceLine" data-line-number="42"></a>      <span class="kw">&lt;li&gt;</span>Indulge your curiosity.<span class="kw">&lt;/li&gt;</span>
<a id="cb2-43" class="sourceLine" data-line-number="43"></a>    <span class="kw">&lt;/ol&gt;</span>
<a id="cb2-44" class="sourceLine" data-line-number="44"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb2-45" class="sourceLine" data-line-number="45"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<h3 id="notes-1">Notes</h3>
<ol type="1">
<li>a style was applied to the <span class="html-tag">body</span> to give it a background colour;</li>
<li>a style was applied to the list items to space them out a bit more</li>
<li>reverse ordered lists are selected for styling using an <strong>attribute</strong> selector. (It is also acceptable to style the reverse ordered list using a class.)</li>
</ol>
<h2 id="selectively-styling-anchors">Selectively Styling Anchors</h2>
<p>You can see how my attempt looks <a href="https://complete-concrete-concise.com/sample/18-selectively-styling-lists.html">here</a></p>
<div id="cb3" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb3-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>HTML<span class="dt">&gt;</span>
<a id="cb3-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb3-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb3-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>Selectively Styling Anchors<span class="kw">&lt;/title&gt;</span>
<a id="cb3-5" class="sourceLine" data-line-number="5"></a>    <span class="kw">&lt;meta</span><span class="ot"> charset=</span><span class="st">"utf-8"</span> <span class="kw">/&gt;</span>
<a id="cb3-6" class="sourceLine" data-line-number="6"></a>
<a id="cb3-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">&lt;style&gt;</span>
<a id="cb3-8" class="sourceLine" data-line-number="8"></a>
<a id="cb3-9" class="sourceLine" data-line-number="9"></a>      body {
<a id="cb3-10" class="sourceLine" data-line-number="10"></a>        <span class="kw">background-color</span>: <span class="dv">#FDF9FF</span>;
<a id="cb3-11" class="sourceLine" data-line-number="11"></a>      }
<a id="cb3-12" class="sourceLine" data-line-number="12"></a>
<a id="cb3-13" class="sourceLine" data-line-number="13"></a>      li {
<a id="cb3-14" class="sourceLine" data-line-number="14"></a>        <span class="kw">margin</span>: <span class="dv">24px</span>;
<a id="cb3-15" class="sourceLine" data-line-number="15"></a>      }
<a id="cb3-16" class="sourceLine" data-line-number="16"></a>
<a id="cb3-17" class="sourceLine" data-line-number="17"></a>      <span class="ex">[target]</span> {
<a id="cb3-18" class="sourceLine" data-line-number="18"></a>        <span class="kw">padding</span>: <span class="dv">7px</span>;
<a id="cb3-19" class="sourceLine" data-line-number="19"></a>        <span class="kw">border</span>: <span class="dv">blue</span> <span class="dv">3px</span> <span class="dv">solid</span>;
<a id="cb3-20" class="sourceLine" data-line-number="20"></a>        <span class="kw">background</span>: lightblue;
<a id="cb3-21" class="sourceLine" data-line-number="21"></a>      }
<a id="cb3-22" class="sourceLine" data-line-number="22"></a>
<a id="cb3-23" class="sourceLine" data-line-number="23"></a>      <span class="ex">[download]</span> {
<a id="cb3-24" class="sourceLine" data-line-number="24"></a>        <span class="kw">padding</span>: <span class="dv">5px</span>;
<a id="cb3-25" class="sourceLine" data-line-number="25"></a>        <span class="kw">background</span>: <span class="dv">yellow</span>;
<a id="cb3-26" class="sourceLine" data-line-number="26"></a>      }
<a id="cb3-27" class="sourceLine" data-line-number="27"></a>
<a id="cb3-28" class="sourceLine" data-line-number="28"></a>    <span class="kw">&lt;/style&gt;</span>
<a id="cb3-29" class="sourceLine" data-line-number="29"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb3-30" class="sourceLine" data-line-number="30"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb3-31" class="sourceLine" data-line-number="31"></a>    <span class="kw">&lt;h1&gt;</span>Selectively Styling Anchors<span class="kw">&lt;/h1&gt;</span>
<a id="cb3-32" class="sourceLine" data-line-number="32"></a>    <span class="kw">&lt;p&gt;</span>You can choose to:<span class="kw">&lt;/p&gt;</span>
<a id="cb3-33" class="sourceLine" data-line-number="33"></a>
<a id="cb3-34" class="sourceLine" data-line-number="34"></a>    <span class="kw">&lt;ul&gt;</span>
<a id="cb3-35" class="sourceLine" data-line-number="35"></a>      <span class="kw">&lt;li&gt;</span>View the
<a id="cb3-36" class="sourceLine" data-line-number="36"></a>        <span class="kw">&lt;a</span><span class="ot"> href=</span><span class="st">"/sample/18-styling-anchors.txt"</span><span class="kw">&gt;</span>
<a id="cb3-37" class="sourceLine" data-line-number="37"></a>          source code.
<a id="cb3-38" class="sourceLine" data-line-number="38"></a>        <span class="kw">&lt;/a&gt;</span>
<a id="cb3-39" class="sourceLine" data-line-number="39"></a>      <span class="kw">&lt;/li&gt;</span>
<a id="cb3-40" class="sourceLine" data-line-number="40"></a>      <span class="kw">&lt;li&gt;</span>View the
<a id="cb3-41" class="sourceLine" data-line-number="41"></a>        <span class="kw">&lt;a</span><span class="ot"> href=</span><span class="st">"/sample/18-styling-anchors.txt"</span>
<a id="cb3-42" class="sourceLine" data-line-number="42"></a><span class="ot">           target=</span><span class="st">"_blank"</span><span class="kw">&gt;</span>source code<span class="kw">&lt;/a&gt;</span>
<a id="cb3-43" class="sourceLine" data-line-number="43"></a>        in a new tab.
<a id="cb3-44" class="sourceLine" data-line-number="44"></a>      <span class="kw">&lt;/li&gt;</span>
<a id="cb3-45" class="sourceLine" data-line-number="45"></a>      <span class="kw">&lt;li&gt;</span>Download the
<a id="cb3-46" class="sourceLine" data-line-number="46"></a>        <span class="kw">&lt;a</span><span class="ot"> href=</span><span class="st">"/sample/18-styling-anchors.html"</span>
<a id="cb3-47" class="sourceLine" data-line-number="47"></a><span class="ot">          download</span><span class="kw">&gt;</span>source code.<span class="kw">&lt;/a&gt;</span>
<a id="cb3-48" class="sourceLine" data-line-number="48"></a>      <span class="kw">&lt;/li&gt;</span>
<a id="cb3-49" class="sourceLine" data-line-number="49"></a>    <span class="kw">&lt;/ul&gt;</span>
<a id="cb3-50" class="sourceLine" data-line-number="50"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb3-51" class="sourceLine" data-line-number="51"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<h3 id="notes-2">Notes</h3>
<ol type="1">
<li>a style was applied to the <span class="html-tag">body</span> to give it a background colour;</li>
<li>the anchors were structured using an unordered list. There is no requirement to do this. I did it because it gave a bit of structure.</li>
<li>the list items were given a bit more margin. This was done after styling the links and deciding I needed more space.</li>
<li>the anchor tags were selected and styled based on their attributes. You could have applied a class to each anchor as well. But I think using the attribute is better since that information is already part of the anchor. If you use a class, you need to add additional information to the tag.</li>
<li>you will notice the source code for the first two points to a <em>.txt</em> file instead of an HTML file. This is because a browser will attempt to render HTML files as HTML (i.e. it will display it as an HTML page, not source code).</li>
<li>I use <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/hyperlinks-in-html#href">relative links</a> rather than a full URL. Obviously, whatever links you use will need to be appropriate for your environment.</li>
</ol>
<h2 id="experiments-with-multiple-classes">Experiments with Multiple Classes</h2>
<p>You can see how my attempt looks <a href="https://complete-concrete-concise.com/sample/18-multiple-classes.html">here</a></p>
<div id="cb4" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb4-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>HTML<span class="dt">&gt;</span>
<a id="cb4-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb4-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb4-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>Multiple Class Interaction<span class="kw">&lt;/title&gt;</span>
<a id="cb4-5" class="sourceLine" data-line-number="5"></a>    <span class="kw">&lt;meta</span><span class="ot"> charset=</span><span class="st">"utf-8"</span> <span class="kw">/&gt;</span>
<a id="cb4-6" class="sourceLine" data-line-number="6"></a>
<a id="cb4-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">&lt;style&gt;</span>
<a id="cb4-8" class="sourceLine" data-line-number="8"></a>
<a id="cb4-9" class="sourceLine" data-line-number="9"></a>      body {
<a id="cb4-10" class="sourceLine" data-line-number="10"></a>        <span class="kw">background-color</span>: <span class="dv">#FFF9F4</span>;
<a id="cb4-11" class="sourceLine" data-line-number="11"></a>      }
<a id="cb4-12" class="sourceLine" data-line-number="12"></a>
<a id="cb4-13" class="sourceLine" data-line-number="13"></a>      <span class="fu">.class-1</span> {
<a id="cb4-14" class="sourceLine" data-line-number="14"></a>        <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb4-15" class="sourceLine" data-line-number="15"></a>        <span class="kw">color</span>: <span class="dv">red</span>;
<a id="cb4-16" class="sourceLine" data-line-number="16"></a>      }
<a id="cb4-17" class="sourceLine" data-line-number="17"></a>
<a id="cb4-18" class="sourceLine" data-line-number="18"></a>      <span class="fu">.class-2</span> {
<a id="cb4-19" class="sourceLine" data-line-number="19"></a>        <span class="kw">background-color</span>: <span class="dv">silver</span>;
<a id="cb4-20" class="sourceLine" data-line-number="20"></a>      }
<a id="cb4-21" class="sourceLine" data-line-number="21"></a>
<a id="cb4-22" class="sourceLine" data-line-number="22"></a>      <span class="fu">.class-3</span> {
<a id="cb4-23" class="sourceLine" data-line-number="23"></a>        <span class="kw">background-color</span>: lightgreen;
<a id="cb4-24" class="sourceLine" data-line-number="24"></a>      }
<a id="cb4-25" class="sourceLine" data-line-number="25"></a>
<a id="cb4-26" class="sourceLine" data-line-number="26"></a>    <span class="kw">&lt;/style&gt;</span>
<a id="cb4-27" class="sourceLine" data-line-number="27"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb4-28" class="sourceLine" data-line-number="28"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb4-29" class="sourceLine" data-line-number="29"></a>    <span class="kw">&lt;h1&gt;</span>Multiple Class Interaction<span class="kw">&lt;/h1&gt;</span>
<a id="cb4-30" class="sourceLine" data-line-number="30"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-1 class-2"</span><span class="kw">&gt;</span>
<a id="cb4-31" class="sourceLine" data-line-number="31"></a>      This paragraph is styled with class-1 and class-2.
<a id="cb4-32" class="sourceLine" data-line-number="32"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-33" class="sourceLine" data-line-number="33"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-2 class-1"</span><span class="kw">&gt;</span>
<a id="cb4-34" class="sourceLine" data-line-number="34"></a>      This pragraph is styled with class-2 and class-1.
<a id="cb4-35" class="sourceLine" data-line-number="35"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-36" class="sourceLine" data-line-number="36"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-1 class-3"</span><span class="kw">&gt;</span>
<a id="cb4-37" class="sourceLine" data-line-number="37"></a>      This paragraph is styled with class-1 and class-3.
<a id="cb4-38" class="sourceLine" data-line-number="38"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-39" class="sourceLine" data-line-number="39"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-3 class-1"</span><span class="kw">&gt;</span>
<a id="cb4-40" class="sourceLine" data-line-number="40"></a>      This paragraph is styled with class-3 and class-1.
<a id="cb4-41" class="sourceLine" data-line-number="41"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-42" class="sourceLine" data-line-number="42"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-2 class-3"</span><span class="kw">&gt;</span>
<a id="cb4-43" class="sourceLine" data-line-number="43"></a>      This paragraph is styled with class-2 and class-3.
<a id="cb4-44" class="sourceLine" data-line-number="44"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-45" class="sourceLine" data-line-number="45"></a>    <span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"class-3 class-2"</span><span class="kw">&gt;</span>
<a id="cb4-46" class="sourceLine" data-line-number="46"></a>      This paragraph is styled with class-3 and class-2.
<a id="cb4-47" class="sourceLine" data-line-number="47"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb4-48" class="sourceLine" data-line-number="48"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb4-49" class="sourceLine" data-line-number="49"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<h3 id="notes-3">Notes</h3>
<ol type="1">
<li>a style was applied to the <span class="html-tag">body</span> to give it a background colour;</li>
<li>3 simple classes were defined. All of them define a different background colour;</li>
<li>the classes were mixed and matched on various paragraph elements;</li>
<li>the order of application of classes to an element doesn’t matter &#8211; i.e., <strong>class-1 class-2</strong> gives the same result as <strong>class-2 class-1</strong>;</li>
<li>the order in which the classes are defined does matter. If you move the definition of <strong>class-1</strong> after <strong>class-3</strong>, you will notice that the applied styles change. This is the <strong>cascading</strong> aspect of CSS. In general, the most recently seen attribute value is the one that is applied. It is a bit more complicated than that. We will explore this more in a future tutorial.</li>
</ol>
<h2 id="selecting-with-id-class-and-attribute">Selecting with ID, Class, and Attribute</h2>
<p>You’ve seen that you can apply multiple styles to an element by using multiple classes. You can also apply multiple styles by using a variety of selectors.<br />
You can see how my attempt looks <a href="https://complete-concrete-concise.com/sample/18-multiple-selectors.html">here</a></p>
<div id="cb5" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb5-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>HTML<span class="dt">&gt;</span>
<a id="cb5-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb5-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb5-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>Multiple Attribute Styling<span class="kw">&lt;/title&gt;</span>
<a id="cb5-5" class="sourceLine" data-line-number="5"></a>    <span class="kw">&lt;meta</span><span class="ot"> charset=</span><span class="st">"utf-8"</span> <span class="kw">/&gt;</span>
<a id="cb5-6" class="sourceLine" data-line-number="6"></a>
<a id="cb5-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">&lt;style&gt;</span>
<a id="cb5-8" class="sourceLine" data-line-number="8"></a>
<a id="cb5-9" class="sourceLine" data-line-number="9"></a>      body {
<a id="cb5-10" class="sourceLine" data-line-number="10"></a>        <span class="kw">background-color</span>: #<span class="dv">#F0FFFF</span>;
<a id="cb5-11" class="sourceLine" data-line-number="11"></a>      }
<a id="cb5-12" class="sourceLine" data-line-number="12"></a>
<a id="cb5-13" class="sourceLine" data-line-number="13"></a>      <span class="fu">.class</span> {
<a id="cb5-14" class="sourceLine" data-line-number="14"></a>        <span class="kw">color</span>: <span class="dv">red</span>;
<a id="cb5-15" class="sourceLine" data-line-number="15"></a>      }
<a id="cb5-16" class="sourceLine" data-line-number="16"></a>
<a id="cb5-17" class="sourceLine" data-line-number="17"></a>      <span class="pp">#id</span> {
<a id="cb5-18" class="sourceLine" data-line-number="18"></a>        <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb5-19" class="sourceLine" data-line-number="19"></a>      }
<a id="cb5-20" class="sourceLine" data-line-number="20"></a>
<a id="cb5-21" class="sourceLine" data-line-number="21"></a>      <span class="ex">[target]</span> {
<a id="cb5-22" class="sourceLine" data-line-number="22"></a>        <span class="kw">border</span>: <span class="dv">2px</span> <span class="dv">solid</span> <span class="dv">black</span>;
<a id="cb5-23" class="sourceLine" data-line-number="23"></a>      }
<a id="cb5-24" class="sourceLine" data-line-number="24"></a>
<a id="cb5-25" class="sourceLine" data-line-number="25"></a>      a {
<a id="cb5-26" class="sourceLine" data-line-number="26"></a>        <span class="kw">margin</span>: <span class="dv">50px</span>;
<a id="cb5-27" class="sourceLine" data-line-number="27"></a>        <span class="kw">padding</span>: <span class="dv">10px</span>;
<a id="cb5-28" class="sourceLine" data-line-number="28"></a>      }
<a id="cb5-29" class="sourceLine" data-line-number="29"></a>
<a id="cb5-30" class="sourceLine" data-line-number="30"></a>    <span class="kw">&lt;/style&gt;</span>
<a id="cb5-31" class="sourceLine" data-line-number="31"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb5-32" class="sourceLine" data-line-number="32"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb5-33" class="sourceLine" data-line-number="33"></a>    <span class="kw">&lt;h1&gt;</span>Multiple Attribute Styling<span class="kw">&lt;/h1&gt;</span>
<a id="cb5-34" class="sourceLine" data-line-number="34"></a>    <span class="kw">&lt;p&gt;</span>Any styling selectors you define are applied
<a id="cb5-35" class="sourceLine" data-line-number="35"></a>      to any and all elements that match the selector.
<a id="cb5-36" class="sourceLine" data-line-number="36"></a>      So you can have multiple styles applied by
<a id="cb5-37" class="sourceLine" data-line-number="37"></a>      multiple different selectors.
<a id="cb5-38" class="sourceLine" data-line-number="38"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb5-39" class="sourceLine" data-line-number="39"></a>    <span class="kw">&lt;p&gt;</span>The following element receives 4 different
<a id="cb5-40" class="sourceLine" data-line-number="40"></a>      styles applied by 4 different selectors:
<a id="cb5-41" class="sourceLine" data-line-number="41"></a>    <span class="kw">&lt;/p&gt;</span>
<a id="cb5-42" class="sourceLine" data-line-number="42"></a>    <span class="kw">&lt;a</span><span class="ot"> id=</span><span class="st">"id"</span><span class="ot"> class=</span><span class="st">"class"</span>
<a id="cb5-43" class="sourceLine" data-line-number="43"></a><span class="ot">       href=</span><span class="st">"http://example.com"</span><span class="ot"> target=</span><span class="st">_blank</span><span class="kw">&gt;</span>
<a id="cb5-44" class="sourceLine" data-line-number="44"></a>      I wonder where this link goes?
<a id="cb5-45" class="sourceLine" data-line-number="45"></a>    <span class="kw">&lt;/a&gt;</span>
<a id="cb5-46" class="sourceLine" data-line-number="46"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb5-47" class="sourceLine" data-line-number="47"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<h3 id="notes-4">Notes</h3>
<ol type="1">
<li>a style was applied to the <span class="html-tag">body</span> to give it a background colour;</li>
<li>4 different styles are defined. Each style uses a different selector;</li>
<li>all of the styles combine on the anchor tag</li>
<li>while classes are the main way to define styles, remember that there are other selectors as well. In a future, tutorial we will explore how the different styles combine when they overlap &#8211; i.e., two or more selectors style the same property differently.</li>
</ol>
<div class="prev">
<a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-selecting-specific-elements-for-styling">Prev</a>
</div>
<div class="next">
<a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/nine-more-css-properties-to-play-with">Next</a>
</div>
<div class="clear"></div>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">In a future tutorial, you will see how you can selectively style alternating paragraphs without needing to explicitly apply a class to each one.<a class="footnote-back" href="#fnref1">↩</a></li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/five-examples-using-css-selectors/">Five Examples Using CSS Selectors</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS &#8211; Selecting Specific Elements for Styling</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-selecting-specific-elements-for-styling/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Wed, 18 Apr 2018 15:26:34 +0000</pubDate>
				<category><![CDATA[Front-End Basics]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css selectors]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3609</guid>

					<description><![CDATA[<p>Learn how to selectively style only parts of your document.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-selecting-specific-elements-for-styling/">CSS &#8211; Selecting Specific Elements for Styling</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">
We can be selective in which HTML elements we style.
</div>
<p>So far, we have seen a few CSS style <strong>properties</strong> and how they can be applied to HTML elements. However, this way of styling affects all the HTML elements, it would be useful to selectively style certain <span class="html-tag">p</span> tags rather than all of them.</p>
<h2>Contents</h2>
<ol type="1">
<li><a href="#css-selectors">CSS Selectors</a>
<ol type="1">
<li><a href="#type-selector">Type Selector</a></li>
<li><a href="#id-selector">ID Selector</a></li>
<li><a href="#class-selector">Class Selector</a></li>
<li><a href="#universal-selector">Universal Selector</a></li>
<li><a href="#attribute-selector">Attribute Selector</a></li>
</ol>
</li>
<li><a href="#conclusion">Conclusion</a></li>
<li><a href="#playing-around">Playing Around</a></li>
<li><a href="#references">References</a></li>
</ol>
<h2 id="css-selectors">CSS Selectors</h2>
<p>We’ve seen that CSS Styling has the following format:</p>
<div id="cb1" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb1-1" class="sourceLine" data-line-number="1"></a>selector {
<a id="cb1-2" class="sourceLine" data-line-number="2"></a>  property-1<span class="in">:</span> value;
<a id="cb1-3" class="sourceLine" data-line-number="3"></a>  property-2<span class="in">:</span> value;
<a id="cb1-4" class="sourceLine" data-line-number="4"></a>  <span class="fu">...</span>
<a id="cb1-5" class="sourceLine" data-line-number="5"></a>  property-n: value;
<a id="cb1-6" class="sourceLine" data-line-number="6"></a>}</code></pre>
</div>
<p>The only selector we used was the HTML element type (<span class="html-tag">p</span>, <span class="html-tag">h1</span>, etc). There are five different types of selectors.<br />
You can apply the same style to multiple selectors by listing them and separating them with commas:</p>
<div id="cb2" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb2-1" class="sourceLine" data-line-number="1"></a>selector-1, selector-2, <span class="fu">...</span>, selector-n
<a id="cb2-2" class="sourceLine" data-line-number="2"></a>{
<a id="cb2-3" class="sourceLine" data-line-number="3"></a>  property-1<span class="in">:</span> value;
<a id="cb2-4" class="sourceLine" data-line-number="4"></a>  property-2<span class="in">:</span> value;
<a id="cb2-5" class="sourceLine" data-line-number="5"></a>  <span class="fu">...</span>
<a id="cb2-6" class="sourceLine" data-line-number="6"></a>  property-n: value;
<a id="cb2-7" class="sourceLine" data-line-number="7"></a>}</code></pre>
</div>
<p>This is commonly used to set default styles for various elements. For example, perhaps you want all heading items to have the same appearance, you could do it like this:</p>
<div id="cb3" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb3-1" class="sourceLine" data-line-number="1"></a>h1, h2, h3, h4, h5, h6 {
<a id="cb3-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">blue</span>;
<a id="cb3-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">background-color</span>:cornsilk;
<a id="cb3-4" class="sourceLine" data-line-number="4"></a>}</code></pre>
</div>
<h3 id="type-selector">Type Selector</h3>
<p>This is the one you have already seen &#8211; the unadorned HTML element type:</p>
<div id="cb4" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb4-1" class="sourceLine" data-line-number="1"></a>h1, h2 {
<a id="cb4-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">background-color</span>: <span class="dv">red</span>;
<a id="cb4-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
<h3 id="id-selector">ID Selector</h3>
<p>We have seen that all HTML elements can have attributes. One attribute they can have is the <strong>id</strong> attribute &#8211; it is often used as a link reference for the <span class="html-tag">a</span> tag. The <strong>id</strong> is accessed by prefacing its <em>value</em> with the pound sign (<strong>#</strong>):</p>
<div id="cb5" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb5-1" class="sourceLine" data-line-number="1"></a><span class="kw">&lt;h2</span><span class="ot"> id=</span><span class="st">"contents"</span><span class="kw">&gt;</span>Contents<span class="kw">&lt;/h2&gt;</span>
<a id="cb5-2" class="sourceLine" data-line-number="2"></a>...
<a id="cb5-3" class="sourceLine" data-line-number="3"></a><span class="kw">&lt;a</span><span class="ot"> href=</span><span class="st">"#contents"</span><span class="kw">&gt;</span>Return to Contents<span class="kw">&lt;/a&gt;</span></code></pre>
</div>
<p>You can use this <strong>id </strong>as a CSS Selector as well:</p>
<div id="cb6" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb6-1" class="sourceLine" data-line-number="1"></a><span class="pp">#contents</span> {
<a id="cb6-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">white</span>;
<a id="cb6-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">background-color</span>: <span class="dv">black</span>;
<a id="cb6-4" class="sourceLine" data-line-number="4"></a>}</code></pre>
</div>
<p>The above code snippet will select the HTML element which has an <strong>id</strong> value of <em>contents</em>.<br />
As a reminder, every <strong>id</strong> in a document <em>must</em> be unique.<a id="fnref1" class="footnote-ref" href="#fn1"><sup>1</sup></a></p>
<h3 id="class-selector">Class Selector</h3>
<p>HTML tags can have another attribute called <strong>class</strong>. Classes do not have to be unique in the document. Several HTML elements can use the same class:</p>
<div id="cb7" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb7-1" class="sourceLine" data-line-number="1"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"important"</span><span class="kw">&gt;</span>This is an important paragraph.<span class="kw">&lt;/p&gt;</span></code></pre>
</div>
<p>The <strong>class</strong> definition is very similar to the <strong>id</strong> definition. The value should be composed of letters, digits, underscores, or hyphens. No spaces or other characters. It should begin with a letter or underscore, not a digit or hyphen.<br />
To access a <strong>class</strong> and use it for styling, you need to preface the <strong>class</strong> name with a period (<strong>.</strong>):</p>
<div id="cb8" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb8-1" class="sourceLine" data-line-number="1"></a><span class="fu">.important</span> {
<a id="cb8-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb8-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
<p>The above code snippet will set to yellow the background colour of all HTML elements with the <strong>class</strong> of <em>important</em>.<br />
You can apply multiple classes to the same HTML element by listing them and separating them with a space:<a id="fnref2" class="footnote-ref" href="#fn2"><sup>2</sup></a></p>
<div id="cb9" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb9-1" class="sourceLine" data-line-number="1"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"c1 c2 c3"</span><span class="kw">&gt;</span>This is a sample paragraph.<span class="kw">&lt;/p&gt;</span></code></pre>
</div>
<p>In the code snippet above, the classes <strong>c1</strong>, <strong>c2</strong>, and <strong>c3</strong> will be applied to the paragraph. Consider the following class style definitions:</p>
<div id="cb10" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb10-1" class="sourceLine" data-line-number="1"></a><span class="fu">.c1</span> {
<a id="cb10-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">blue</span>;
<a id="cb10-3" class="sourceLine" data-line-number="3"></a>}
<a id="cb10-4" class="sourceLine" data-line-number="4"></a>
<a id="cb10-5" class="sourceLine" data-line-number="5"></a><span class="fu">.c2</span> {
<a id="cb10-6" class="sourceLine" data-line-number="6"></a>  <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb10-7" class="sourceLine" data-line-number="7"></a>}
<a id="cb10-8" class="sourceLine" data-line-number="8"></a>
<a id="cb10-9" class="sourceLine" data-line-number="9"></a><span class="fu">.c3</span> {
<a id="cb10-10" class="sourceLine" data-line-number="10"></a>  <span class="kw">border</span>: <span class="dv">2px</span> <span class="dv">black</span> <span class="dv">solid</span>;
<a id="cb10-11" class="sourceLine" data-line-number="11"></a>}</code></pre>
</div>
<p>Applying the above classes to the HTML fragment above results in:</p>
<p style="color: blue; background: yellow; border: 2px solid black;">This is a sample paragraph.</p>
<p>It should be obvious that you should try to select meaningful names for your classes (just as you should for ids).<br />
Your class names should reflect the <strong>purpose</strong> of the class, not its behaviour (there are always exceptions). For example, instead of calling a class <em>red-bg</em>, it might be better to call it <em>alert</em> or <em>warning</em>. Or instead of calling a class <em>background</em> it might be better to call it <em>article-bg</em> or <em>header-bg</em>.<br />
I can’t stress enough how important it is to properly structure your HTML documents.<br />
Having said that, you will probably never get it 100% right, but that doesn’t mean you shouldn’t try to get it as right as possible. A good trick is to imagine that in the future the document needs to be completely restyled. If you can simply change the styling in the class without having to change the class name, then you probably got it right. Consider the <em>red-bg</em> class in the previous paragraph &#8211; if you change it to <strong>blue</strong> then the class name no longer makes any sense. However, had it been <em>warning</em>, you can change the background colour all you want and it doesn’t affect the class name.</p>
<h3 id="universal-selector">Universal Selector</h3>
<p>Sometimes, you want to apply a particular style to all the elements on the page. This can be done using the universal selector:</p>
<div id="cb11" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb11-1" class="sourceLine" data-line-number="1"></a>* {
<a id="cb11-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">margin</span>: <span class="dv">5px</span>;
<a id="cb11-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
<p>The above code snippet will set the margin to 5 pixels for every single element in the document.<br />
It is very powerful tends to be used different ways:</p>
<ol type="1">
<li>To change the default behaviour of everything in the document. We’ll see an example of this in a future tutorial when we change the behaviour of the CSS Box Model.</li>
<li>It is also useful for certain selection behaviour. This tutorial only covers basic selection. Future tutorials will explore more advanced selection.<a id="fnref3" class="footnote-ref" href="#fn3"><sup>3</sup></a></li>
</ol>
<h3 id="attribute-selector">Attribute Selector</h3>
<p>You can select HTML elements based on their attributes. The attribute name is enclosed in square brackets (<strong>[]</strong>)</p>
<div id="cb12" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb12-1" class="sourceLine" data-line-number="1"></a><span class="ex">[reversed]</span> {
<a id="cb12-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">background-color</span>: <span class="dv">gray</span>;
<a id="cb12-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
<p>The above code snippet selects all HTML elements with the <em>reversed</em> attribute. It only tests if the attribute has been specified for the element, it doesn’t care about the value of the attribute.<br />
You can also test for specific attribute values:</p>
<div id="cb13" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb13-1" class="sourceLine" data-line-number="1"></a><span class="ex">[start=</span><span class="st">"10"</span><span class="ex">]</span> {
<a id="cb13-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb13-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
<p>The above code snippet selects all HTML elements with a <em>start</em> attribute having the value of 10. <em>Values</em> must be enclosed in quotes (single or double quotes). The <em>value</em> must <strong>exactly</strong> match.<br />
Instead of using <strong>class</strong> or <strong>id</strong> selectors, you could use attribute selectors for <strong>class</strong> or <strong>id</strong>. Consider the following:<br />
Consider the following:</p>
<div id="cb14" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb14-1" class="sourceLine" data-line-number="1"></a><span class="kw">&lt;style&gt;</span>
<a id="cb14-2" class="sourceLine" data-line-number="2"></a>  <span class="ex">[class=</span><span class="st">"bob"</span><span class="ex">]</span> {
<a id="cb14-3" class="sourceLine" data-line-number="3"></a>    <span class="kw">color</span>: <span class="dv">blue</span>;
<a id="cb14-4" class="sourceLine" data-line-number="4"></a>  }
<a id="cb14-5" class="sourceLine" data-line-number="5"></a>
<a id="cb14-6" class="sourceLine" data-line-number="6"></a>  <span class="ex">[class=</span><span class="st">"mary"</span><span class="ex">]</span> {
<a id="cb14-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">background-color</span>: <span class="dv">yellow</span>;
<a id="cb14-8" class="sourceLine" data-line-number="8"></a>  }
<a id="cb14-9" class="sourceLine" data-line-number="9"></a>
<a id="cb14-10" class="sourceLine" data-line-number="10"></a>  <span class="ex">[class=</span><span class="st">"bob mary"</span><span class="ex">]</span> {
<a id="cb14-11" class="sourceLine" data-line-number="11"></a>    <span class="kw">color</span>: <span class="dv">green</span>;
<a id="cb14-12" class="sourceLine" data-line-number="12"></a>    <span class="kw">background-color</span>: <span class="dv">red</span>;
<a id="cb14-13" class="sourceLine" data-line-number="13"></a>  }
<a id="cb14-14" class="sourceLine" data-line-number="14"></a>
<a id="cb14-15" class="sourceLine" data-line-number="15"></a>  <span class="ex">[class=</span><span class="st">"mary bob"</span><span class="ex">]</span> {
<a id="cb14-16" class="sourceLine" data-line-number="16"></a>    <span class="kw">color</span>: <span class="dv">red</span>;
<a id="cb14-17" class="sourceLine" data-line-number="17"></a>    <span class="kw">background-color</span>: <span class="dv">green</span>;
<a id="cb14-18" class="sourceLine" data-line-number="18"></a>  }
<a id="cb14-19" class="sourceLine" data-line-number="19"></a><span class="kw">&lt;/style&gt;</span>
<a id="cb14-20" class="sourceLine" data-line-number="20"></a>
<a id="cb14-21" class="sourceLine" data-line-number="21"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bob"</span><span class="kw">&gt;</span>This is Bob.<span class="kw">&lt;/p&gt;</span>
<a id="cb14-22" class="sourceLine" data-line-number="22"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"mary"</span><span class="kw">&gt;</span>This is Mary.<span class="kw">&lt;/p&gt;</span>
<a id="cb14-23" class="sourceLine" data-line-number="23"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"bob mary"</span><span class="kw">&gt;</span>This is Bob and Mary.<span class="kw">&lt;/p&gt;</span>
<a id="cb14-24" class="sourceLine" data-line-number="24"></a><span class="kw">&lt;p</span><span class="ot"> class=</span><span class="st">"mary bob"</span><span class="kw">&gt;</span>This is Mary and Bob.<span class="kw">&lt;/p&gt;</span>
<a id="cb14-25" class="sourceLine" data-line-number="25"></a>
<a id="cb14-26" class="sourceLine" data-line-number="26"></a>}</code></pre>
</div>
<p>The code snippet above is a non-standard way of styling using classes or ids &#8211; but it can be done (remember, just because something can be done, doesn’t mean it should be done). You have to <em>exactly</em> match the class value to style it. Had you styled the classes instead, then the styles combine and build one atop the other.<br />
There are more ways to select using attributes, but we’ll cover those in a future tutorial.</p>
<h2 id="conclusion">Conclusion</h2>
<ol type="1">
<li>There are 5 different ways to select HTML elements for styling:
<ol type="1">
<li>Type</li>
<li>ID</li>
<li>Class</li>
<li>* (universal)</li>
<li>Attribute</li>
</ol>
</li>
<li><strong>Type Selection</strong> uses the name of the HTML element type. E.g:
<div id="cb15" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb15-1" class="sourceLine" data-line-number="1"></a>h1 {
<a id="cb15-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">red</span>;
<a id="cb15-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
</li>
<li><strong>ID Selection</strong> uses the ID attribute of the HTML element. The <strong>id</strong> is prefaced with the pound sign (<strong>#</strong>). An HTML element can have only one <strong>id</strong> and the <strong>id</strong> must be unique in the document. E.g.:
<div id="cb16" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb16-1" class="sourceLine" data-line-number="1"></a><span class="pp">#table-of-contents</span> {
<a id="cb16-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">blue</span>;
<a id="cb16-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
</li>
<li><strong>Class Selection</strong> uses the class attribute of the HTML element. The class name is prefaced with a period (<strong>.</strong>). Classes do not need to be unique in a document. You can apply several classes to an HTML element. E.g.:
<div id="cb17" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb17-1" class="sourceLine" data-line-number="1"></a><span class="fu">.notification</span> {
<a id="cb17-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">yellow</span>;
<a id="cb17-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">background-color</span>: <span class="dv">blue</span>;
<a id="cb17-4" class="sourceLine" data-line-number="4"></a>}</code></pre>
</div>
</li>
<li><strong>Universal Selection</strong> selects all HTML elements. E.g.:
<div id="cb18" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb18-1" class="sourceLine" data-line-number="1"></a>* {
<a id="cb18-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">red</span>;
<a id="cb18-3" class="sourceLine" data-line-number="3"></a>}</code></pre>
</div>
</li>
<li><strong>Attribute Selection</strong> selects all elements matching the specified attribute. E.g.:
<div id="cb19" class="sourceCode">
<pre class="sourceCode css"><code class="sourceCode css"><a id="cb19-1" class="sourceLine" data-line-number="1"></a><span class="ex">[reversed]</span> {
<a id="cb19-2" class="sourceLine" data-line-number="2"></a>  <span class="kw">color</span>: <span class="dv">black</span>;
<a id="cb19-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">background-color</span>: <span class="dv">white</span>;
<a id="cb19-4" class="sourceLine" data-line-number="4"></a>}</code></pre>
</div>
</li>
<li>Most commonly, you will use <strong>classes</strong> for styling HTML elements.</li>
<li>Choose good class names. In general, they should indicate the function of purpose of the styling, not its effect.</li>
</ol>
<h2 id="playing-around">Playing Around</h2>
<p>The best way to learn is to play around with what you have learned.<br />
Some webpage ideas:</p>
<ol type="1">
<li>Create a webpage with alternately styled paragraphs using classes:
<p style="background-color: cornsilk;">This is one paragraph.</p>
<p style="background-color: lavender;">This is another.</p>
<p style="background-color: cornsilk;">This is the third paragraph.</p>
<p style="background-color: lavender;">After this, there is no other.</p>
</li>
<li>Style ordered lists differently depending on whether or not the <strong>reverse</strong> attribute is set. <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/lists-in-html">Refresh your knowledge of the <em>reverse</em> attribute.</a></li>
<li>Style hyperlinks differently depending on whether they open in the current tab, a new tab or initiate a download. <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/hyperlinks-in-html">Refresh your knowledge of hyperlink attributes.</a></li>
<li>Try applying multiple classes to an element. What happens if two classes style the same <strong>property</strong> with different values?<a id="fnref4" class="footnote-ref" href="#fn4"><sup>4</sup></a> Does the order of the classes change anything?</li>
</ol>
<p>Use the CSS properties you have learned so far and try multiple (and conflicting) combinations:</p>
<ul>
<li>color</li>
<li>background-color</li>
<li>border</li>
<li>padding</li>
<li>margin</li>
</ul>
<p>In the next tutorial, we will expand our vocabulary of CSS styling properties.</p>
<h2 id="references">References</h2>
<ol type="1">
<li><a href="https://drafts.csswg.org/selectors-3/#type-selectors">Type Selector</a></li>
<li><a href="https://drafts.csswg.org/selectors-3/#id-selectors">ID Selector</a></li>
<li><a href="https://drafts.csswg.org/selectors-3/#class-html">Class Selector</a></li>
<li><a href="https://drafts.csswg.org/selectors-3/#universal-selector">Universal Selector</a></li>
<li><a href="https://drafts.csswg.org/selectors-3/#attribute-selectors">Attribute Selector</a></li>
</ol>
<div class="prev">
<a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/html-flow-and-the-css-box-model-the-display-property">Prev</a>
</div>
<div class="next">
<a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/five-examples-using-css-selectors">Next</a>
</div>
<div class="clear"></div>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">If you have duplicate <strong>id</strong> tags in your document, the page will still load and render, but some functionality may be broken. For example, if you use the <strong>id</strong> as a reference to an anchor tag, which <strong>id</strong> will it jump to? It can’t jump to both.<a class="footnote-back" href="#fnref1">↩</a></li>
<li id="fn2">You might be wondering if you can have multiple <em>different</em> IDs on the same HTML element. The answer is <strong>no</strong>. You can have only one ID per element and each ID must be unique in the document:<br />
<blockquote><p>Historically elements could have multiple identifiers e.g., by using the HTML id attribute and a DTD. This specification makes ID a concept of the DOM and allows for only <strong>one per element</strong>, given by an id attribute. &#8211;<a href="https://www.w3.org/TR/dom41/#ref-for-concept-element%E2%91%A0%E2%93%AA%E2%91%A3">W3C DOM 4.1</a></p></blockquote>
<p><a class="footnote-back" href="#fnref2">↩</a></li>
<li id="fn3">Styling elements depending on their context. For example, you may style block quotes (the html tag is <span class="html-tag">blockquote</span>), differently if it appears in the main content than when it appears in a sidebar.<a class="footnote-back" href="#fnref3">↩</a></li>
<li id="fn4">On a big project, it is common to use multiple classes on an HTML element. You might style the same property differently in two different classes. Maybe the <strong>background-color</strong> in one class is <em>aliceblue</em> and <em>cornsilk</em> in another. How does the browser (user-agent) resolve that?<a class="footnote-back" href="#fnref4">↩</a></li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/front-end-basics/css-selecting-specific-elements-for-styling/">CSS &#8211; Selecting Specific Elements for Styling</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
