id
and class
attributesHW1 is out
CP1 due tonight tomorrow
Consider opting in for the CP1 Showcase!
Use the extra CP day to try anything you want to practice more before HW1 (e.g. semantic tags and CSS usage)
By the end of this lecture, you should be able to:
On one side of the notecard, write what you feel like you've "got" from lecture/section/lab/CPs.
On the other side of the notecard, write 1-2 things you feel you still need to understand, or that would help you understand this material.
selector {
property: value;
property: value;
...
property: value;
}
p {
color: red;
font-family: sans-serif;
}
A CSS file consists of one or more "rule sets"
A rule selector specifies HTML element(s) and applies style properties
h1, p {
color: blue;
background-color: rgb(30, 30, 30);
}
h1 {
font-style: italic;
}
nav ul {
list-style-type: none;
color: gray;
}
How many different rule sets?
How many different rules?
How many different properties?
How many different selectors?
3
5
4
3
CSS Rules | Description |
---|---|
color ,
background-color
|
Foreground (text) color and background color styles |
font-family ,
font-size ,
font-style ,
font-weight
|
Various font styles |
text-align ,
text-decoration ,
text-indent ,
text-shadow ,
text-transform
|
Various text styles |
line-height ,
word-spacing ,
letter-spacing
|
Line/word/letter spacing styles |
list-style-type |
List item styling (e.g. bullet styles) |
background-image ,
background-repeat ,
background-position ,
background-attachment ,
background-size
|
Various background styles |
p {
color: red;
background-color: yellow;
}
This paragraph uses the style above.
Property | Description |
---|---|
color | color of an element's text |
background-color | background color that will appear behind the element |
p { color: red }
h2 { color: rgb(128, 0, 196); }
h4 { color: #FF8800; }
This paragraph uses the first style above
Color names: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow
RGB codes: red, green, and blue values from 0 (none) to 255 (full)
Hex codes: RGB values in base-16 from 00 (0, none) to FF (255, full)
Example: To get red font, you can use either "red", "rgb(255, 0, 0)", or "#FF0000".
The Chrome inspector gives you a useful feature to look at different color code representations (e.g. HEX, RGB) as well as opacity settings, eyedropper, etc.)
When you are looking to choose colors for you page, this can be useful to see the effects real-time (then copy/paste the code to set the color in your CSS).
Property | Description |
---|---|
font-family | which font will be used |
font-size | how large the letters will be drawn |
font-style | used to enable/disable italic style |
font-weight | used to enable/disable bold style |
Complete list of font properties |
font-family
h4 {
font-family: "Courier New";
}
p {
font-family: Georgia;
}
This paragraph uses the first style above
Enclose multi-world font names in quotes
font-family
p {
font-family: Garamond, "Times New Roman", serif;
}
This paragraph uses the above style
@font-face
Occasionally you want to use a non standard font in your website.
Webfonts is one way you might see some people do it.
@font-face {
font-family: mySerifWebFont;
src: url("webfont.ttf");
}
p {
font-family: mySerifWebFont, serif;
}
When setting font-family, make sure your listed fonts all share the same classification (serif, sans-serif, monospace, cursive)
+
button for each<style>
and <style>
tags.css
document (see example here)font-size
p {
font-size: 14pt;
}
This paragraph uses the above style
Units:
Vague font sizes: xx-small, x-small, small, medium, large, x-large, smaller, larger,
Percentage font sizes: 90%, 120%
More about units here.
font-style
,
font-weight
p {
font-style: italic;
font-weight: bold;
}
This paragraph uses the above style
Either of the above can be set to normal to turn them off (e.g., headings)
Property | Description |
---|---|
text-align
|
alignment of text within its element |
text-decoration
|
decorations such as underlining |
text-indent
|
indents the first letter of each paragraph |
text-shadow
|
a colored shadow near an existing piece of text (CSS3) |
text-transform
|
controls capitalization of text |
line-height ,
word-spacing ,
letter-spacing
|
gaps between the various portions of the text |
Complete list of text properties |
text-align
blockquote { text-align: justify; }
h2 { text-align: center; }
[TO LUKE SKYWALKER] The alliance... will die. As will your friends. Good, I can feel your anger. I am unarmed. Take your weapon. Strike me down with all of your hatred and your journey towards the dark side will be complete.
Can be left
, right
, center
,
or justify
(which widens all full lines of the element so that they occupy
its entire width)
text-decoration
p { text-decoration: underline; }
This paragraph uses the style above
Can also be overline, line through, blink or none
Effects can be combined:
p { text-decoration: overline underline; }
This paragraph uses the style above
text-shadow
p {
font-weight: bold;
text-shadow: -2px 5px gray;
}
This paragraph uses the style above
shadow
is specified as an X-offset, a Y-offset, or an optional color
text-transform
I just just CAN'T make up my mind!
em {
text-transform: lowercase;
}
span {
text-transform: capitalize;
}
strong {
text-transform: uppercase;
}
I just CAN'T make up my mind!
list-style-type
property
ol { list-style-type: lower-roman; }
Possible values:
none
: No markerdisc
(default), circle, square
decimal
: 1, 2, 3, etc.decimal-leading-zero
: 01, 02, 03, etc.lower-roman
: i, ii, iii, iv, v, etc.upper-roman
: I, II, III, IV, V, etc.lower-alpha
: a, b, c, d, e, etc.upper-alpha
: A, B, C, D, E, etc.lower-greek
: alpha, beta, gamma, etc.hebrew, armenian, georgian,
cjk-ideographic, hiragana, katakana, hiragena-iroha,
katakana-iroha
Property | Description |
---|---|
background-color
|
color to fill background (previously mentioned) |
background-image
|
image to place in background |
background-position
|
placement of background image within element |
background-repeat
|
how background image should be repeated |
background-attachment
|
whether background image scrolls with page |
background-size
|
how large the background appears behind the element |
background
|
shorthand to set all backgroud properties |
More background properties |
background-image
body {
background-image: url("paw.jpg");
}
This is the first paragraph
This is the second paragraph...
It occupies 2 lines
Background image/color fills the element's content area
background-repeat
body {
background-image: url("paw.jpg");
background-repeat: repeat-y;
}
This is the first paragraph
This is the second paragraph...
It occupies 2 lines
Can be repeat
(default), repeat-x
,
repeat-y
, or no-repeat
background-position
body {
background-image: url("paw.jpg");
background-repeat: no-repeat;
background-position: 370px 20px;
}
This is the first paragraph
This is the second paragraph...
It occupies 2 lines
Value consists of two tokens, each of which can be top
,
left
, right
, bottom
,
center
, a percentage, or a length value in px, pt, etc.
Value can be negative to shift left/up by a given amount
p, h1, h2 {
color: green;
}
h2 {
background-color: yellow;
}
This paragraph uses the above style.
A style can select multiple elements separated by commas
The individual elements can also have their own styles (like
h2
above)
body {
font-size: 16pt;
}
To apply a style to the entire body of your page, write a selector for the body (saves you from manually applying a style to each element)
* {
font-size: 14pt;
}
section * {
border: 2pt solid black;
}
To select all elements on the page, you can use the * selector.
To select all elements which are children of a parent element, you can use the * selector inside of the parent.
You should in general avoid using this selector though if 1) there is a more specific selector you can use or 2) you end up overriding the styles later.
id
and class
id
id
value per pageid
class
class
class
es<p id="product-12345" class="product">Puppy calendar</p>
<p id="product-133337" class="product">Cat mug</p>
Both paragraphs have the same class (product
), but each has its own ID
Gives you another way to talk about your content in CSS (and later in JavaScript)
#my-id {
/* ... properties ... */
}
.my-class {
/* ... other properties ... */
}
A mnemonic: .java
programs compile into .class
files so...
try to remember dot
(.) class
and hash (#) id
id
or class
?How do you decide whether to use an id
or a class
?
Probably prefer class
. You can only use an id
once per page, so it's good
to be a little stingy with them. class
es are free.
On the other hand, if you know you are making a unique section or page element (e.g.,
submit button), id
is the way to go.
It's easy to just make classes for everything, but don't forget that HTML is made to describe your content.
So, prefer a <p>
tag over a class
named paragraph
.
Context selectors are used to selectively style page elements
Examples:
selector1 selector2 {
properties
}
... applies the given properties to selector2 only if it is inside a selector1 on the page
selector1 > selector2 {
properties
}
... applies the given properties to selector2
only if it is directly inside a selector1
on the page with no tags in between
Check out this neat game for some motivating practice :)
<p>Shop at <strong>Hardwick's Hardware</strong>...</p>
<ul>
<li>The <strong>best</strong> prices in town!</li>
<li><em><strong>Act</strong></em> while supplies last!</li>
</ul>
li strong { text-decoration: underline; }
Produces:
Shop at Hardwick's Hardware...
<p>Shop at <strong>Hardwick's Hardware</strong>...</p>
<ul>
<li>The <strong>best</strong> prices in town!</li>
<li><em><strong>Act</strong></em> while supplies last!</li>
</ul>
li > strong { text-decoration: underline; }
Produces:
Shop at Hardwick's Hardware...
pseudo-classes
a:link { color: #FF0000; } /* unvisited link */
a:visited { color: #00FF00; } /* visited link */
a:hover { color: #FF00FF; } /* mouse over link */
Class | Description |
---|---|
:active | an activated or selected element |
:focus | an element that has the keyboard focus |
:hover | an element that has the mouse over it |
:link | a link that has not been visited |
:visited | a link that has already been visited |
:first-letter | the first letter of text inside an element |
:first-line | the first line of text inside an element |
:first-child | an element that is the first one to appear inside another |
:nth-child(N) | applies to every Nth child of a given parent |
/* This is a comment.
It can span many lines in a CSS file. */
p {
color: red;
background-color: aqua;
}
CSS (like HTML) is usually not commented as much as code such as Java
The //
single-line comment is NOT supported in CSS
The <-- ... -->
HTML comment is also
NOT supported in CSS
<p>
<a target="_blank" href="http://jigsaw.w3.org/css-validator/">
<img src="http://jigsaw.w3.org/css-validator/images/vcss"
alt="Valid CSS!" />
</a>
</p>
Checks your CSS to make sure it meets the official CSS specifications
More picky than the web browser, which may render malformed CSS correctly
<style>
(BAD)
<head>
<style type="text/css">
p { font-family: sans-serif; color: red; }
h2 { background-color: yellow; }
</style>
</head>
CSS code can be embedded within the head
of an HTML
file
This is bad style; DO NOT DO THIS (why?)
style
attribute (BAD)<p style="font-family: sans-serif; color: red">
This is a paragraph</p>
This is a paragraph
Higher precedence than embedded or linked styles
Used for one-time overrides and styling a particular element
This is bad style; DO NOT DO THIS (why?)
HTML is for content; what is on the page (heading; list; code; etc.)
CSS is for presentation; how to display the page (bold; centered; 20px margin, etc.)
Keeping content separate from presentation is a very important web design principle
If the HTML contains no styles, its entire appearance can be changed
by swapping .css
files (recall CSSZenGarden)