---
title: CSS 3
date: 2020-12-25 20:22:47
background: bg-[#3473b5]
tags:
- web
- css
- style
categories:
- Programming
intro: |
This is a quick reference cheat sheet for CSS goodness, listing selector syntax, properties, units and other useful bits of information.
plugins:
- copyCode
- runCode
---
## Getting Started
### Introduction {.row-span-3}
CSS is rich in capabilities and is more than simply laying out pages.
#### External stylesheet
```html {.wrap}
```
#### Internal stylesheet
```html
```
#### Inline styles
```html {.wrap}
Centered text
Blue, 18-point text
```
### Add class
```html
```
Support multiple classes on one element.
### !important
```css
.post-title {
color: blue !important;
}
```
Overrides all previous styling rules.
### Selector
```css
h1 {
}
#job-title {
}
div.hero {
}
div > p {
}
```
See: [Selectors](#css-selectors)
### Text color
```css
color: #2a2aff;
color: green;
color: rgb(34, 12, 64, 0.6);
color: hsla(30 100% 50% / 0.6);
```
See: [Colors](#css-colors)
### Background
```css
background-color: blue;
background-image: url('nyan-cat.gif');
background-image: url('../image.png');
```
See: [Backgrounds](#css-backgrounds)
### Font
```css
.page-title {
font-weight: bold;
font-size: 30px;
font-family: 'Courier New';
}
```
See: [Fonts](#css-fonts)
### Position
```css
.box {
position: relative;
top: 20px;
left: 20px;
}
```
See also: [Position](https://learn-the-web.algonquindesign.ca/topics/css-layout-cheat-sheet/)
### Animation
```css
animation: 300ms linear 0s infinite;
animation: bounce 300ms linear infinite;
```
See: [Animation](#css-animation)
### Comment
```css
/* This is a single line comment */
/* This is a
multi-line comment */
```
### Flex layout
```css
div {
display: flex;
justify-content: center;
}
div {
display: flex;
justify-content: flex-start;
}
```
See: [Flexbox](#css-flexbox) | [Flex Tricks](#css-flexbox-tricks)
### Grid layout
```css
#container {
display: grid;
grid: repeat(2, 60px) / auto-flow 80px;
}
#container > div {
background-color: #8ca0ff;
width: 50px;
height: 50px;
}
```
See: [Grid Layout](#css-grid-layout)
### Variable & Counter
```css
counter-set: subsection;
counter-increment: subsection;
counter-reset: subsection 0;
:root {
--bg-color: brown;
}
element {
background-color: var(--bg-color);
}
```
See: [Dynamic content](#css-dynamic-content)
## CSS Selectors
### Examples {.row-span-2}
#### Groups Selector
```css
h1,
h2 {
color: red;
}
```
#### Chaining Selector
```css
h3.section-heading {
color: blue;
}
```
#### Attribute Selector
```css
div[attribute='SomeValue'] {
background-color: red;
}
```
#### First Child Selector
```css
p:first-child {
font-weight: bold;
}
```
#### No Children Selector
```css
.box:empty {
background: lime;
height: 80px;
width: 80px;
}
```
### Basic
| | |
| ------------ | --------------------------- |
| `*` | All elements |
| `div` | All div tags |
| `.classname` | All elements with class |
| `#idname` | Element with ID |
| `div,p` | All divs and paragraphs |
| `#idname *` | All elements inside #idname |
See also: [Type](https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors) /
[Class](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors) /
[ID](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors) /
[Universal](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors) selectors
### Combinators
| Selector | Description |
| --------------- | ------------------------------------- |
| `div.classname` | Div with certain classname |
| `div#idname` | Div with certain ID |
| `div p` | Paragraphs inside divs |
| `div > p` | All p tags _one level deep in div_ |
| `div + p` | P tags immediately after div |
| `div ~ p` | P tags preceded by div |
See also: [Adjacent](https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator) /
[Sibling](https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_combinator) /
[Child](https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator) selectors
### Attribute selectors
| | |
| -------------------- | ---------------------------------- | ---------------------------- |
| `a[target]` | With a target attribute |
| `a[target="_blank"]` | Open in new tab |
| `a[href^="/index"]` | Starts with /index |
| `[class | ="chair"]` | Starts with chair |
| `[class*="chair"]` | containing chair |
| `[title~="chair"]` | Contains the word chair |
| `a[href$=".doc"]` | Ends with .doc |
| `[type="button"]` | Specified type |
See also: [Attribute selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors)
### User action pseudo classes
| | |
| ------------ | ----------------------- |
| `a:link ` | Link in normal state |
| `a:active ` | Link in clicked state |
| `a:hover ` | Link with mouse over it |
| `a:visited ` | Visited link |
### Pseudo classes
| | |
| ----------------- | --------------------------------------------------------------------------------------- |
| `p::after` | Add content after p |
| `p::before` | Add content before p |
| `p::first-letter` | First letter in p |
| `p::first-line` | First line in p |
| `::selection` | Selected by user |
| `::placeholder` | [Placeholder](https://developer.mozilla.org/en-US/docs/Web/CSS/::placeholder) attribute |
| `:root` | Documents root element |
| `:target` | Highlight active anchor |
| `div:empty` | Element with no children |
| `p:lang(en)` | P with en language attribute |
| `:not(span)` | Element that's not a span |
### Input pseudo classes
| | |
| --------------------- | ------------------------------------------------------------------------------------------- |
| `input:checked` | Checked inputs |
| `input:disabled` | Disabled inputs |
| `input:enabled` | Enabled inputs |
| `input:focus` | Input has focus |
| `input:in-range` | Value in range |
| `input:out-of-range` | Input value out of range |
| `input:valid` | Input with valid value |
| `input:invalid` | Input with invalid value |
| `input:optional` | No required attribute |
| `input:required` | Input with required attribute |
| `input:read-only` | With readonly attribute |
| `input:read-write` | No readonly attribute |
| `input:indeterminate` | With [indeterminate](https://developer.mozilla.org/en-US/docs/Web/CSS/:indeterminate) state |
### Structural pseudo classes
| | |
| ----------------------- | -------------------------- |
| `p:first-child` | First child |
| `p:last-child` | Last child |
| `p:first-of-type` | First of some type |
| `p:last-of-type` | Last of some type |
| `p:nth-child(2)` | Second child of its parent |
| `p:nth-child(3n42)` | Nth-child (an + b) formula |
| `p:nth-last-child(2)` | Second child from behind |
| `p:nth-of-type(2)` | Second p of its parent |
| `p:nth-last-of-type(2)` | ...from behind |
| `p:only-of-type` | Unique of its parent |
| `p:only-child` | Only child of its parent |
## CSS Fonts
### Properties {.row-span-3}
| Property | Description |
| ----------------- | --------------- |
| `font-family:` | \ |
| `font-size:` | \ |
| `letter-spacing:` | \ |
| `line-height:` | \ |
| `font-weight:` | \ / bold / normal | | `font-style:` | italic / normal | | `text-decoration:` | underline /
none |
| `text-align:` | left / right center / justify | | `text-transform:` | capitalize / uppercase / lowercase |
{.left-text}
See also: [Font](https://developer.mozilla.org/en-US/docs/Web/CSS/font)
### Shorthand {.secondary .col-span-2}
| | style | weight | size (required) | | line-height | family |
| ------- | -------- | ------ | --------------- | --- | ----------- | ----------------- |
| `font:` | `italic` | `400` | `14px` | `/` | `1.5` | `sans-serif` |
| | style | weight | size (required) | | line-height | family (required) |
### Example
```css
font-family: Arial, sans-serif;
font-size: 12pt;
letter-spacing: 0.02em;
```
### Case {.row-span-2}
```css
/* Hello */
text-transform: capitalize;
/* HELLO */
text-transform: uppercase;
/* hello */
text-transform: lowercase;
```
### @font-face
```css
@font-face {
font-family: 'Glegoo';
src: url('../Glegoo.woff');
}
```
## CSS Colors
### Named color
```css
color: red;
color: orange;
color: tan;
color: rebeccapurple;
```
### Hexadecimal color
```css
color: #090;
color: #009900;
color: #090a;
color: #009900aa;
```
### rgb() Colors
```css
color: rgb(34, 12, 64, 0.6);
color: rgba(34, 12, 64, 0.6);
color: rgb(34 12 64 / 0.6);
color: rgba(34 12 64 / 0.3);
color: rgb(34 12 64 / 60%);
color: rgba(34.6 12 64 / 30%);
```
### HSL Colors
```css
color: hsl(30, 100%, 50%, 0.6);
color: hsla(30, 100%, 50%, 0.6);
color: hsl(30 100% 50% / 0.6);
color: hsla(30 100% 50% / 0.6);
color: hsl(30 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
```
### Other
```css
color: inherit;
color: initial;
color: unset;
color: transparent;
color: currentcolor; /* keyword */
```
## CSS Backgrounds
### Properties {.row-span-2}
| Property | Description |
| ------------- | ------------- |
| `background:` | _(Shorthand)_ |
| `background-color:` | See: [Colors](#css-colors) | | `background-image:` | url(...) | | `background-position:` |
left/center/right top/center/bottom | | `background-size:` | cover X Y | | `background-clip:` |
border-box padding-box content-box | | `background-repeat:` | no-repeat repeat-x repeat-y | |
`background-attachment:` | scroll/fixed/local | {.left-text}
### Shorthand {.secondary .col-span-2}
| | color | image | positionX | positionY | | size | repeat | attachment |
| ------------- | ------ | ------------ | --------- | --------- | --- | -------------- | ----------- | ---------- |
| `background:` | `#ff0` | `url(a.jpg)` | `left` | `top` | `/` | `100px` `auto` | `no-repeat` | `fixed;` |
| `background:` | `#abc` | `url(b.png)` | `center` | `center` | `/` | `cover` | `repeat-x` | `local;` |
| | color | image | posX | posY | | size | repeat | attach.. |
### Examples {.col-span-2}
```css {.wrap}
background: url(img_man.jpg) no-repeat center;
background:
url(img_flwr.gif) right bottom no-repeat,
url(paper.gif) left top repeat;
background: rgb(2, 0, 36);
background: linear-gradient(
90deg,
rgba(2, 0, 36, 1) 0%,
rgba(13, 232, 230, 1) 35%,
rgba(0, 212, 255, 1) 100%
);
```
## CSS The Box Model
### Maximums/Minimums
```css
.column {
max-width: 200px;
width: 500px;
}
```
See also: [max-width](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width) /
[min-width](https://developer.mozilla.org/en-US/docs/Web/CSS/min-width) /
[max-height](https://developer.mozilla.org/en-US/docs/Web/CSS/max-height) /
[min-height](https://developer.mozilla.org/en-US/docs/Web/CSS/min-height)
### Margin / Padding
```css
.block-one {
margin: 20px;
padding: 10px;
}
```
See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) /
[Padding](https://developer.mozilla.org/en-US/docs/Web/CSS/padding)
### Box-sizing
```css
.container {
box-sizing: border-box;
}
```
See also: [Box-sizing](https://developer.mozilla.org/en-US/docs/Web/CSS/Box-sizing)
### Visibility
```css
.invisible-elements {
visibility: hidden;
}
```
See also: [Visibility](https://developer.mozilla.org/en-US/docs/Web/CSS/visibility)
### Auto keyword
```css
div {
margin: auto;
}
```
See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin)
### Overflow
```css
.small-block {
overflow: scroll;
}
```
See also: [Overflow](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow)
## CSS Animation {.cols-5}
### Shorthand {.col-span-5 .secondary}
| | name | duration | timing-function | delay | count | direction | fill-mode | play-state |
| ------------ | -------- | -------- | --------------- | ------- | ---------- | ------------------- | --------- | ---------- |
| `animation:` | `bounce` | `300ms` | `linear` | `100ms` | `infinite` | `alternate-reverse` | `both` | `reverse` |
| | name | duration | timing-function | delay | count | direction | fill-mode | play-state |
### Properties {.row-span-2 .col-span-2}
| Property | Value |
| ---------------------------- | ------------------------------------------------------ |
| `animation:` | _(shorthand)_ |
| `animation-name:` | \ |
| `animation-duration:` | \