-
Notifications
You must be signed in to change notification settings - Fork 0
/
lab_033.html
96 lines (90 loc) · 4.02 KB
/
lab_033.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!doctype html>
<html lang="en">
<head>
<title>
Lab 33 - Specificity
</title>
<meta charset="UTF-8" />
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible" />
<meta "="" content=" width=device-width, initial-scale=1.0" name="viewport" />
<meta content="A guided tour through the fundamentals of Git, HTML, & CSS" name=" description" />
<meta content="#0000ff" name="theme-color" />
<link href="manifest.json" rel="manifest" />
<link href="css/reset.css" media="screen" rel="stylesheet" />
<link href="css/screen.css" media="screen" rel="stylesheet" />
<link href="css/prism.css" rel="stylesheet" />
</head>
<body data-lab-id="33">
<a class="skip-to-content" href="#content" tabindex="1">
Skip to content
</a>
<main class="layout">
<nav id="index">
<p class="link-home">
<a href="index.html">
<span>Hack4Impact Starter Pack</span>
</a>
</p>
<button class="link-menu">
Menu
</button>
<nav tabindex="0">
<ol>
</ol>
</nav>
</nav>
<div id="content" tabindex="-1">
<h1 class="lab_title">
<em>Lab 33</em>
Specificity
</h1>
<h2>Goals</h2>
<ul>
<li>Learn about specificity in CSS</li>
<li>Learn how to calculate a specificity value</li>
</ul>
<h2>Cascading</h2>
<p>If you have two style rules with the <strong>same</strong> selector, then the selector that appears
<strong>last</strong>
will have its style applied. For example, trying to select paragraph elements twice with two styles
like so:
</p>
<pre data-range="1, 7" data-src="prism/css/3301.css"></pre>
<p>The second HTML paragraph selector is last so it will take precedence. The text color will be blue.</p>
<h2>The More Specific, the Better</h2>
<p>Okay, not really... <em>but</em> in CSS when there are conflicting style rules, the winner
is decided by <strong>specificity</strong>. You are unlikely to have a situation where you select the same
element twice,
however conflicts with <em>nested elements</em> are more likely to occur:</p>
<pre data-range="9, 15" data-src="prism/css/3301.css"></pre>
<p>Since the rule for the <code class="language-html"><p></code> blue text color comes last, it may seem as
though
that will be the rule that is applied, <em>however</em> that is not the case. The first rule is more
<strong>specific</strong> so it is given <strong>more importance</strong>.
</p>
<h2>Calculating Specificity</h2>
<p>A quick and easy way to calculate specificity is to assign different selectors, different values.
Give every <strong>ID selector</strong> a value of <strong>100</strong>, every <strong>class selector</strong>
a value of <strong>10</strong>, and every <strong>element selector</strong> a value of <strong>1</strong>.
</p>
<ul>
<li><code class="language-css">p</code> would have a value of 1</li>
<li><code class="language-css">div p</code> would have a value of 2</li>
<li><code class="language-css">.class</code> would have a value of 10</li>
<li><code class="language-css">div p .class</code> would have a value of 12</li>
<li><code class="language-css">#id</code> would have a value of 100
</li>
<li><code class="language-css">div #id .class p</code> would have a value of 112</li>
</ul>
<p>In practical use, <code class="language-css">div p</code> would rule over <code class="language-css">p</code>
and <code class="language-css">div #id .class p</code> would rule over use all, <em>regardless of the order</em>.</p>
</div>
</main>
<script src="js/ui.js" type="text/javascript"></script>
<script src="js/prism.js" type="text/javascript"></script>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({startOnLoad: true, theme: "base"});
</script>
</body>
</html>