CSS
CSS: Cascading Style Sheets
Basic:
Introduction
⟰⬆↑⇧↿↾↑↟⇈
What is CSS?
·
CSS stands for Cascading Style Sheets
·
CSS describes how HTML elements are to be
displayed on screen, paper, or in other media
·
CSS saves a lot of work. It can control the
layout of multiple web pages all at once
·
External stylesheets are stored in CSS files
⟰⬆↑⇧↿↾↑↟⇈
Syntax
⟰⬆↑⇧↿↾↑↟⇈
A CSS rule-set consists of
a selector and a declaration block:
selector { property:value; property:value }
declaration declaration
The element Selector
p {
text-align: center;
color: red;
}
text-align: center;
color: red;
}
The id Selector
#para1 {
text-align: center;
color: red;
}
text-align: center;
color: red;
}
The class Selector
.center {
text-align: center;
color: red;
}
color: red;
}
p.center {
text-align: center;
color: red;
}
text-align: center;
color: red;
}
Grouping Selectors
h1, h2, p {
text-align: center;
color: red;
}
text-align: center;
color: red;
}
CSS Comments
/* This is a single-line comment */
/* This is
a multi-line
comment */
a multi-line
comment */
⟰⬆↑⇧↿↾↑↟⇈
How To
⟰⬆↑⇧↿↾↑↟⇈
Ways to Insert CSS
·
External style sheet
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
·
Internal style sheet
<head>
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
·
Inline style
<h1 style="color:blue;margin-left:30px;">This is a heading</h1>
Cascading Order
- Inline style (inside an HTML element)
- External and internal style sheets (in the head section)
- Browser default
⟰⬆↑⇧↿↾↑↟⇈
Colors
⟰⬆↑⇧↿↾↑↟⇈
Color Names: red, blue, green, yellow, orange
Background Color: <tagname
style=”background-color:color_name;”></tagname>
Text Color: <tagname style=”
color:color_name;”></tagname>
Border Color: <tagname style=” border: ?px
solid/? color_name;”></tagname>
Color Values:
RGB Value: rgb(red, green, blue)
HEX Value: #rrggbb
HSL Value: hsl(hue, saturation, lightness)
RGBA Value: rgba(red, green, blue, alpha)
HSLA Value: hsla(hue, saturation, lightness, alpha)
⟰⬆↑⇧↿↾↑↟⇈
Backgrounds
The CSS background properties are used to define the
background effects for elements.
CSS background properties:
·
background-color
background-color: lightblue;
·
background-image
background-image: url("paper.gif");
·
background-repeat
background-image: url("gradient_bg.png");
background-repeat: repeat-x;
background-repeat: repeat-x;
·
background-attachment
background-attachment: fixed;
·
background-position
background-position: right top;
Property
|
Description
|
background
|
Sets all the background properties in one declaration
|
background-attachment
|
Sets whether a background image is fixed or scrolls
with the rest of the page
|
background-clip
|
Specifies the painting area of the background
|
background-color
|
Sets the background color of an element
|
background-image
|
Sets the background image for an element
|
background-origin
|
Specifies where the background image(s) is/are
positioned
|
background-position
|
Sets the starting position of a background image
|
background-repeat
|
Sets how a background image will be repeated
|
background-size
|
Specifies the size of the background image(s)
|
⟰⬆↑⇧↿↾↑↟⇈
Borders
Property
|
Description
|
border
|
Sets all the border properties in one declaration
|
border-color
|
Sets the color of the four borders
|
border-radius
|
Sets all the four border-*-radius properties for
rounded corners
|
border-style
|
Sets the style of the four borders
|
border-width
|
Sets the width of the four borders
|
border-top/bottom/left/right
|
Sets all the t/b/l/r border properties in one declaration
|
border-t/b/l/r-color
|
Sets the color of the t/b/l/r border
|
border- t/b/l/r -style
|
Sets the style of the t/b/l/r border
|
border- t/b/l/r -width
|
Sets the width of the t/b/l/r border
|
⟰⬆↑⇧↿↾↑↟⇈
Margins
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
margin
|
A shorthand property for setting the margin properties
in one declaration
|
margin-bottom
|
Sets the bottom margin of an element
|
margin-left
|
Sets the left margin of an element
|
margin-right
|
Sets the right margin of an element
|
margin-top
|
Sets the top margin of an element
|
All the margin properties can have the following values:
·
auto - the browser calculates the margin
·
length - specifies a margin in px,
pt, cm, etc.
·
% - specifies a margin in % of the
width of the containing element
·
inherit - specifies that the margin should be
inherited from the parent element
·
margin: 25px 50px 75px 100px;
- top margin is
25px
- right margin is
50px
- bottom margin
is 75px
- left margin is
100px
⟰⬆↑⇧↿↾↑↟⇈
Padding
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
padding
|
A shorthand property for setting all the padding
properties in one declaration
|
padding-bottom
|
Sets the bottom padding of an element
|
padding-left
|
Sets the left padding of an element
|
padding-right
|
Sets the right padding of an element
|
padding-top
|
Sets the top padding of an element
|
All the padding properties can have the
following values:
- length -
specifies a padding in px, pt, cm, etc.
- % -
specifies a padding in % of the width of the containing element
- inherit
- specifies that the padding should be inherited from the parent element
·
padding: 25px 50px 75px 100px;
- top
padding is 25px
- right
padding is 50px
- bottom
padding is 75px
- left
padding is 100px
⟰⬆↑⇧↿↾↑↟⇈
Height/Width
Property
|
Description
|
height
|
Sets the height of an element
|
max-height
|
Sets the maximum height of an element
|
max-width
|
Sets the maximum width of an element
|
min-height
|
Sets the minimum height of an element
|
min-width
|
Sets the minimum width of an element
|
width
|
Sets the width of an element
|
The height and width can be set to auto (this is default. Means that the browser
calculates the height and width), or be specified in length
values, like px, cm, etc., or in
percent (%) of the containing block.
⟰⬆↑⇧↿↾↑↟⇈
Box Model
·
Content - The content of the box,
where text and images appear
·
Padding - Clears an area around the
content. The padding is transparent
·
Border - A border that goes around
the padding and content
·
Margin - Clears an area outside the
border. The margin is transparent
div {
height: 400px;
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
⟰⬆↑⇧↿↾↑↟⇈
Outline
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
A shorthand property for setting outline-width,
outline-style, and outline-color in one declaration
|
|
Sets the color of an outline
|
|
Specifies the space between an outline and the edge or
border of an element
|
|
Sets the style of an outline
|
|
Sets the width of an outline
|
The outline-style property specifies the style of
the outline, and can have one of the following values:
·
dotted - Defines a dotted
outline
·
dashed - Defines a dashed
outline
·
solid - Defines a solid
outline
·
double - Defines a double
outline
·
groove - Defines a 3D
grooved outline
·
ridge - Defines a 3D ridged
outline
·
inset - Defines a 3D inset
outline
·
outset - Defines a 3D
outset outline
·
none - Defines no outline
·
hidden - Defines a hidden
outline
Outline
Color
·
name
- specify a color name, like "red"
·
RGB
- specify a RGB value, like "rgb(255,0,0)"
·
Hex
- specify a hex value, like "#ff0000"
·
invert
- performs a color inversion
Outline
Width
·
thin
(typically 1px)
·
medium
(typically 3px)
·
thick
(typically 5px)
·
A
specific size (in px, pt, cm, em, etc)
⟰⬆↑⇧↿↾↑↟⇈
Text
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
color
|
Sets the color of text
|
direction
|
Specifies the text direction/writing direction
|
letter-spacing
|
Increases or decreases the space between characters in
a text
|
line-height
|
Sets the line height
|
text-align
|
Specifies the horizontal alignment of text
|
text-decoration
|
Specifies the decoration added to text
|
text-indent
|
Specifies the indentation of the first line in a
text-block
|
text-shadow
|
Specifies the shadow effect added to text
|
text-transform
|
Controls the capitalization of text
|
text-overflow
|
Specifies how overflowed content that is not displayed
should be signaled to the user
|
unicode-bidi
|
Used together with the direction property to set or return
whether the text should be overridden to support multiple languages in the
same document
|
vertical-align
|
Sets the vertical alignment of an element
|
white-space
|
Specifies how white-space inside an element is handled
|
word-spacing
|
Increases or decreases the space between words in a
text
|
⟰⬆↑⇧↿↾↑↟⇈
Fonts
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
font
|
Sets all the font properties in one declaration
|
font-family
|
Specifies the font family for text
|
font-size
|
Specifies the font size of text
|
font-style
|
Specifies the font style for text
|
font-variant
|
Specifies whether or not a text should be displayed in
a small-caps font
|
font-weight
|
Specifies the weight of a font
|
⟰⬆↑⇧↿↾↑↟⇈
Icon
⟰⬆↑⇧↿↾↑↟⇈
Font Awesome Icons
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
Bootstrap Icons
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
Google Icons
<link rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons">
⟰⬆↑⇧↿↾↑↟⇈
Links
⟰⬆↑⇧↿↾↑↟⇈
The four links states are:
- a:link - a normal, unvisited link
- a:visited - a link the user has
visited
- a:hover - a link when the user
mouses over it
- a:active - a link the moment it is
clicked
/* unvisited link */
a:link {
color: red;
a:link {
color: red;
text-decoration: none;
background-color: yellow;
}
/* visited link */
a:visited {
color: green;
}
/* visited link */
a:visited {
color: green;
text-decoration: none;
background-color: cyan;
}
/* mouse over link */
a:hover {
color: hotpink;
}
/* mouse over link */
a:hover {
color: hotpink;
text-decoration: underline;
background-color: lightgreen;
}
/* selected link */
a:active {
color: blue;
}
/* selected link */
a:active {
color: blue;
text-decoration: underline;
background-color: hotpink;
}
}
⟰⬆↑⇧↿↾↑↟⇈
Lists
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
list-style
|
Sets all the properties for a list in one declaration
|
list-style-image
|
Specifies an image as the list-item marker
|
list-style-position
|
Specifies the position of the list-item markers (bullet
points)
|
list-style-type
|
Specifies the type of list-item marker
|
⟰⬆↑⇧↿↾↑↟⇈
Tables
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
border
|
Sets all the border properties in one declaration
|
border-collapse
|
Specifies whether or not table borders should be
collapsed
|
border-spacing
|
Specifies the distance between the borders of adjacent
cells
|
caption-side
|
Specifies the placement of a table caption
|
empty-cells
|
Specifies whether or not to display borders and
background on empty cells in a table
|
table-layout
|
Sets the layout algorithm to be used for a table
|
⟰⬆↑⇧↿↾↑↟⇈
Display
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
display
|
Specifies how an element should be displayed
|
visibility
|
Specifies whether or not an element should be visible
|
⟰⬆↑⇧↿↾↑↟⇈
Position
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
Sets the bottom margin edge for a positioned box
|
|
Clips an absolutely positioned element
|
|
Sets the left margin edge for a positioned box
|
|
Specifies the type of positioning for an element
|
|
Sets the right margin edge for a positioned box
|
|
Sets the top margin edge for a positioned box
|
|
Sets the stack order of an element
|
There are five different position values:
- static
- relative
- fixed
- absolute
- sticky
⟰⬆↑⇧↿↾↑↟⇈
Overflow
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
Specifies what happens if content overflows an
element's box
|
|
Specifies what to do with the left/right edges of the
content if it overflows the element's content area
|
|
Specifies what to do with the top/bottom edges of the
content if it overflows the element's content area
|
The overflow property
has the following values:
- visible - Default. The overflow is
not clipped. It renders outside the element's box
- hidden - The overflow is clipped,
and the rest of the content will be invisible
- scroll - The overflow is clipped,
but a scrollbar is added to see the rest of the content
- auto - If overflow is clipped, a
scrollbar should be added to see the rest of the content
⟰⬆↑⇧↿↾↑↟⇈
Float
⟰⬆↑⇧↿↾↑↟⇈
The float property
can have one of the following values:
- left
- The element floats to the left of its container
- right-
The element floats to the right of its container
- none
- The element does not float (will be displayed just where it occurs in
the text). This is default
- inherit
- The element inherits the float value of its parent
The clear property
can have one of the following values:
- none
- Allows floating elements on both sides. This is default
- left
- No floating elements allowed on the left side
- right-
No floating elements allowed on the right side
- both
- No floating elements allowed on either the left or the right side
- inherit
- The element inherits the clear value of its parent
Property
|
Description
|
box-sizing
|
Defines how the width and height of an element are
calculated: should they include padding and borders, or not
|
clear
|
Specifies what elements can float beside the cleared
element and on which side
|
float
|
Specifies how an element should float
|
overflow
|
Specifies what happens if content overflows an
element's box
|
overflow-x
|
Specifies what to do with the left/right edges of the
content if it overflows the element's content area
|
overflow-y
|
Specifies what to do with the top/bottom edges of the
content if it overflows the element's content area
|
⟰⬆↑⇧↿↾↑↟⇈
Inline-Block
⟰⬆↑⇧↿↾↑↟⇈
Compared to display: inline, the major difference is that
display: inline-block allows to set a width and height on the element.
Also, with display: inline-block, the top and bottom
margins/paddings are respected, but with display: inline they are not.
Compared to display: block, the major difference is that
display: inline-block does not add a line-break after the element, so the
element can sit next to other elements.
display: inline-block;
⟰⬆↑⇧↿↾↑↟⇈
Align
⟰⬆↑⇧↿↾↑↟⇈
Center Align Elements
.center {
margin: auto;
width: 50%;
border: 3px solid green;
padding: 10px;
}
margin: auto;
width: 50%;
border: 3px solid green;
padding: 10px;
}
Center Align Text
.center {
text-align: center;
border: 3px solid green;
}
text-align: center;
border: 3px solid green;
}
Center an Image
img {
display: block;
margin-left: auto;
margin-right: auto;
width: 40%;
}
display: block;
margin-left: auto;
margin-right: auto;
width: 40%;
}
Left and Right Align - Using position
.right {
position: absolute;
right: 0px;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
position: absolute;
right: 0px;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
Left and Right Align - Using float
.right {
float: right;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
float: right;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
The clearfix Hack
.clearfix {
overflow: auto;
}
overflow: auto;
}
Center Vertically - Using padding
.center {
padding: 70px 0;
border: 3px solid green;
}
padding: 70px 0;
border: 3px solid green;
}
Center Vertically - Using line-height
.center {
line-height: 200px;
height: 200px;
border: 3px solid green;
text-align: center;
}
line-height: 200px;
height: 200px;
border: 3px solid green;
text-align: center;
}
Center Vertically - Using position & transform
.center {
height: 200px;
position: relative;
border: 3px solid green;
}
.center p {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
height: 200px;
position: relative;
border: 3px solid green;
}
.center p {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
⟰⬆↑⇧↿↾↑↟⇈
Combinators
⟰⬆↑⇧↿↾↑↟⇈
There are four different combinators in CSS:
- descendant
selector (space)
div p {
background-color: yellow;
}
background-color: yellow;
}
- child
selector (>)
div > p {
background-color: yellow;
}
background-color: yellow;
}
- adjacent
sibling selector (+)
div + p {
background-color: yellow;
}
background-color: yellow;
}
- general
sibling selector (~)
div ~ p {
background-color: yellow;
}
background-color: yellow;
}
⟰⬆↑⇧↿↾↑↟⇈
Pseudo-Class
⟰⬆↑⇧↿↾↑↟⇈
A pseudo-class is used to define a special state
of an element.
For example, it can be used to:
- Style
an element when a user mouses over it
- Style
visited and unvisited links differently
- Style
an element when it gets focus
Selector
|
Example
|
Example description
|
:active
|
a:active
|
Selects the active link
|
:checked
|
input:checked
|
Selects every checked <input> element
|
:disabled
|
input:disabled
|
Selects every disabled <input> element
|
:empty
|
p:empty
|
Selects every <p> element that has no children
|
:enabled
|
input:enabled
|
Selects every enabled <input> element
|
:first-child
|
p:first-child
|
Selects every <p> elements that is the first
child of its parent
|
:first-of-type
|
p:first-of-type
|
Selects every <p> element that is the first
<p> element of its parent
|
:focus
|
input:focus
|
Selects the <input> element that has focus
|
:hover
|
a:hover
|
Selects links on mouse over
|
:in-range
|
input:in-range
|
Selects <input> elements with a value within a
specified range
|
:invalid
|
input:invalid
|
Selects all <input> elements with an invalid
value
|
:lang(language)
|
p:lang(it)
|
Selects every <p> element with a lang attribute
value starting with "it"
|
:last-child
|
p:last-child
|
Selects every <p> elements that is the last child
of its parent
|
:last-of-type
|
p:last-of-type
|
Selects every <p> element that is the last
<p> element of its parent
|
:link
|
a:link
|
Selects all unvisited links
|
:not(selector)
|
:not(p)
|
Selects every element that is not a <p> element
|
:nth-child(n)
|
p:nth-child(2)
|
Selects every <p> element that is the second
child of its parent
|
:nth-last-child(n)
|
p:nth-last-child(2)
|
Selects every <p> element that is the second
child of its parent, counting from the last child
|
:nth-last-of-type(n)
|
p:nth-last-of-type(2)
|
Selects every <p> element that is the second
<p> element of its parent, counting from the last child
|
:nth-of-type(n)
|
p:nth-of-type(2)
|
Selects every <p> element that is the second
<p> element of its parent
|
:only-of-type
|
p:only-of-type
|
Selects every <p> element that is the only
<p> element of its parent
|
:only-child
|
p:only-child
|
Selects every <p> element that is the only child
of its parent
|
:optional
|
input:optional
|
Selects <input> elements with no
"required" attribute
|
:out-of-range
|
input:out-of-range
|
Selects <input> elements with a value outside a
specified range
|
:read-only
|
input:read-only
|
Selects <input> elements with a
"readonly" attribute specified
|
:read-write
|
input:read-write
|
Selects <input> elements with no
"readonly" attribute
|
:required
|
input:required
|
Selects <input> elements with a
"required" attribute specified
|
:root
|
root
|
Selects the document's root element
|
:target
|
#news:target
|
Selects the current active #news element (clicked on a
URL containing that anchor name)
|
:valid
|
input:valid
|
Selects all <input> elements with a valid value
|
:visited
|
a:visited
|
Selects all visited links
|
⟰⬆↑⇧↿↾↑↟⇈
Pseudo-Elements
⟰⬆↑⇧↿↾↑↟⇈
A CSS pseudo-element is used to style specified
parts of an element.
For example, it can be used to:
- Style
the first letter, or line, of an element
- Insert
content before, or after, the content of an element
Selector
|
Example
|
Example description
|
::after
|
p::after
|
Insert something after the content of each <p>
element
|
::before
|
p::before
|
Insert something before the content of each <p>
element
|
::first-letter
|
p::first-letter
|
Selects the first letter of each <p> element
|
::first-line
|
p::first-line
|
Selects the first line of each <p> element
|
::selection
|
p::selection
|
Selects the portion of an element that is selected by a
user
|
⟰⬆↑⇧↿↾↑↟⇈
Opacity
background: rgba(76, 175, 80, 0.3) /* Green background with 30% opacity */
}
⟰⬆↑⇧↿↾↑↟⇈
The
opacity
property
specifies the opacity/transparency of an element.
Transparent
Image
img {
opacity: 0.5;
filter: alpha(opacity=50); /* For IE8 and earlier */
}
opacity: 0.5;
filter: alpha(opacity=50); /* For IE8 and earlier */
}
Transparent
Hover Effect
img {
opacity: 0.5;
filter: alpha(opacity=50); /* For IE8 and earlier */
}
img:hover {
opacity: 1.0;
filter: alpha(opacity=100); /* For IE8 and earlier */
}
opacity: 0.5;
filter: alpha(opacity=50); /* For IE8 and earlier */
}
img:hover {
opacity: 1.0;
filter: alpha(opacity=100); /* For IE8 and earlier */
}
Transparent
Box
div {
opacity: 0.3;
filter: alpha(opacity=30); /* For IE8 and earlier */
}
opacity: 0.3;
filter: alpha(opacity=30); /* For IE8 and earlier */
}
Transparency
using RGBA
div {background: rgba(76, 175, 80, 0.3) /* Green background with 30% opacity */
}
⟰⬆↑⇧↿↾↑↟⇈
A navigation bar is basically a list of links, so
using the <ul> and <li> elements makes perfect sense:
<ul>
<li><a href="default.asp">Home</a></li>
<li><a href="news.asp">News</a></li>
<li><a href="contact.asp">Contact</a></li>
<li><a href="about.asp">About</a></li>
</ul>
<li><a href="default.asp">Home</a></li>
<li><a href="news.asp">News</a></li>
<li><a href="contact.asp">Contact</a></li>
<li><a href="about.asp">About</a></li>
</ul>
- list-style-type:
none; -
Removes the bullets. A navigation bar does not need list markers
- Set margin: 0; and padding: 0; to remove
browser default settings
- display:
block; -
Displaying the links as block elements makes the whole link area clickable
(not just the text), and it allows us to specify the width (and padding,
margin, height, etc. if you want)
- width:
60px; -
Block elements take up the full width available by default. We want to
specify a 60 pixels width
·
Add
text-align:center
to
<li> or <a> to center the links.
·
Add the
border
property
to <ul> add a border around the navbar. If you also want borders inside
the navbar, add a border-bottom
to
all <li> elements, except for the last one:- display:
inline; -
By default, <li> elements are block elements. Here, we remove the
line breaks before and after each list item, to display them on one line
- float:
left; -
use float to get block elements to slide next to each other
- display:
block; -
Displaying the links as block elements makes the whole link area clickable
(not just the text), and it allows us to specify padding (and height,
width, margins, etc. if you want)
- padding:
8px; -
Since block elements take up the full width available, they cannot float
next to each other. Therefore, specify some padding to make them look good
- background-color:
#dddddd; -
Add a gray background-color to each a element
⟰⬆↑⇧↿↾↑↟⇈
Dropdowns
⟰⬆↑⇧↿↾↑↟⇈
Image Gallary
⟰⬆↑⇧↿↾↑↟⇈
Dropdown Menu
<style>
/* Style The Dropdown Button */
.dropbtn {
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
position: relative;
display: inline-block;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #f1f1f1}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background-color: #3e8e41;
}
</style>
<div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
/* Style The Dropdown Button */
.dropbtn {
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
position: relative;
display: inline-block;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #f1f1f1}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background-color: #3e8e41;
}
</style>
<div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
⟰⬆↑⇧↿↾↑↟⇈
Image Gallary
<html>
<head>
<style>
div.gallery {
margin: 5px;
border: 1px solid #ccc;
float: left;
width: 180px;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
</style>
</head>
<body>
<div class="gallery">
<a target="_blank" href="fjords.jpg">
<img src="5terre.jpg" alt="Cinque Terre" width="300" height="200">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</body>
</html>
<head>
<style>
div.gallery {
margin: 5px;
border: 1px solid #ccc;
float: left;
width: 180px;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
</style>
</head>
<body>
<div class="gallery">
<a target="_blank" href="fjords.jpg">
<img src="5terre.jpg" alt="Cinque Terre" width="300" height="200">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</body>
</html>
⟰⬆↑⇧↿↾↑↟⇈
Image Sprites
⟰⬆↑⇧↿↾↑↟⇈
An image sprite is a collection of images put into a
single image.
A web page with many images can take a long time to load
and generates multiple server requests.
Using image sprites will reduce the number of server
requests and save bandwidth.
⟰⬆↑⇧↿↾↑↟⇈
Attr Selectors
⟰⬆↑⇧↿↾↑↟⇈
·
CSS [attribute] Selector
a[target] {
background-color: yellow;
}
background-color: yellow;
}
·
CSS [attribute="value"] Selector
a[target="_blank"] {
background-color: yellow;
}
background-color: yellow;
}
·
CSS [attribute~="value"] Selector
[title~="flower"] {
border: 5px solid yellow;
}
border: 5px solid yellow;
}
·
CSS [attribute|="value"] Selector
[class|="top"] {
background: yellow;
}
background: yellow;
}
·
CSS [attribute^="value"] Selector
[class^="top"] {
background: yellow;
}
background: yellow;
}
·
CSS [attribute$="value"] Selector
[class$="test"] {
background: yellow;
}
background: yellow;
}
·
CSS [attribute*="value"] Selector
[class*="te"] {
background: yellow;
}
background: yellow;
}
⟰⬆↑⇧↿↾↑↟⇈
Forms
⟰⬆↑⇧↿↾↑↟⇈
·
Styling Input Fields
input { width: 100%; }
§ input[type=text] - will only select text
fields
§ input[type=password] - will only select
password fields
§ input[type=number] - will only select
number fields
·
Padded Inputs
input[type=text] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
box-sizing: border-box;
}
width: 100%;
padding: 12px 20px;
margin: 8px 0;
box-sizing: border-box;
}
·
Bordered Inputs
input[type=text] {
border: 2px solid red;
border-radius: 4px;
}
border: 2px solid red;
border-radius: 4px;
}
·
Colored Inputs
input[type=text] {
background-color: #3CBC8D;
color: white;
}
background-color: #3CBC8D;
color: white;
}
·
Focused Inputs
input[type=text]:focus {
background-color: lightblue;
}
background-color: lightblue;
}
input[type=text]:focus {
border: 3px solid #555;
}
border: 3px solid #555;
}
·
Input with icon/image
input[type=text] {
background-color: white;
background-image: url('searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
padding-left: 40px;
}
background-color: white;
background-image: url('searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
padding-left: 40px;
}
·
Animated Search Input
input[type=text] {
-webkit-transition: width 0.4s ease-in-out;
transition: width 0.4s ease-in-out;
}
input[type=text]:focus {
width: 100%;
}
-webkit-transition: width 0.4s ease-in-out;
transition: width 0.4s ease-in-out;
}
input[type=text]:focus {
width: 100%;
}
·
Styling Textareas
textarea {
width: 100%;
height: 150px;
padding: 12px 20px;
box-sizing: border-box;
border: 2px solid #ccc;
border-radius: 4px;
background-color: #f8f8f8;
resize: none;
}
width: 100%;
height: 150px;
padding: 12px 20px;
box-sizing: border-box;
border: 2px solid #ccc;
border-radius: 4px;
background-color: #f8f8f8;
resize: none;
}
·
Styling Select Menus
select {
width: 100%;
padding: 16px 20px;
border: none;
border-radius: 4px;
background-color: #f1f1f1;
}
width: 100%;
padding: 16px 20px;
border: none;
border-radius: 4px;
background-color: #f1f1f1;
}
⟰⬆↑⇧↿↾↑↟⇈
Counters
⟰⬆↑⇧↿↾↑↟⇈
Property
|
Description
|
Used with the ::before and ::after pseudo-elements, to
insert generated content
|
|
Increments one or more counter values
|
|
Creates or resets one or more counters
|
·
Automatic Numbering With Counters
body {
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
·
Nesting Counters
body {
counter-reset: section;
}
h1 {
counter-reset: subsection;
}
h1::before {
counter-increment: section;
content: "Section " counter(section) ". ";
}
h2::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
counter-reset: section;
}
h1 {
counter-reset: subsection;
}
h1::before {
counter-increment: section;
content: "Section " counter(section) ". ";
}
h2::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
⟰⬆↑⇧↿↾↑↟⇈
Units
⟰⬆↑⇧↿↾↑↟⇈
Specificity
Unit
|
Description
|
cm
|
centimeters
|
mm
|
millimeters
|
in
|
inches
(1in = 96px = 2.54cm)
|
px
*
|
pixels
(1px = 1/96th of 1in)
|
pt
|
points
(1pt = 1/72 of 1in)
|
pc
|
picas
(1pc = 12 pt)
|
em
|
Relative
to the font-size of the element (2em means 2 times the size of the current
font
|
ex
|
Relative
to the x-height of the current font (rarely used)
|
ch
|
Relative
to width of the "0" (zero)
|
rem
|
Relative
to font-size of the root element
|
vw
|
Relative
to 1% of the width of the viewport*
|
vh
|
Relative
to 1% of the height of the viewport*
|
vmin
|
Relative
to 1% of viewport's* smaller dimension
|
vmax
|
Relative
to 1% of viewport's* larger dimension
|
%
|
Relative
to the parent element
|
⟰⬆↑⇧↿↾↑↟⇈
If there are two or more conflicting CSS rules
that point to the same element, the browser follows some rules to determine
which one is most specific and therefore wins out.
There are four categories which define the specificity level of a
selector:
Inline styles - An inline style is attached
directly to the element to be styled.
Example: <h1 style="color:
#ffffff;">.
IDs - An ID is a unique identifier for the
page elements, such as #navbar.
Classes, attributes and pseudo-classes - This
category includes .classes, [attributes] and pseudo-classes such as :hover,
:focus etc.
Elements and pseudo-elements - This category
includes element names and pseudo-elements, such as h1, div, :before and :after.
·
Equal
specificity: the latest rule counts
h1 {background-color: yellow;}
h1 {background-color: red;}
h1 {background-color: red;}
·
ID
selectors have a higher specificity than attribute selectors
div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}
·
Contextual
selectors are more specific than a single element selector
From external CSS file:
#content h1 {background-color: red;}
In HTML file:
<style>
#content h1 {
background-color: yellow;
}
</style>
#content h1 {background-color: red;}
In HTML file:
<style>
#content h1 {
background-color: yellow;
}
</style>
·
A
class selector beats any number of element selectors
.intro {background-color: yellow;}
h1 {background-color: red;}
h1 {background-color: red;}
·
The universal
selector and inherited values have a specificity of 0
⟰⬆↑⇧↿↾↑↟⇈
No comments