html-css-reference
html-css-reference
By: supersimple.dev
Video: https://youtu.be/G3e-cpL7ofc
HTML Basics
<button>Hello</button> Creates a button with the text "Hello"
inside.
<p>paragraph of text</p> Creates a paragraph of text.
HTML Syntax
Syntax = rules for writing HTML code (like grammar in English).
Attributes
Attributes modify how an HTML element behaves.
CSS Basics
One way of writing CSS code is using the <style> HTML element.
<style>
button { Modifies all <button>s on the page.
background-color: Change background color to red.
red; color: white; Change text color to white.
}
</style>
CSS Syntax
CSS Properties
Here are some common CSS properties we can use:
button {
background-color: red; Sets the background color. Common values:
● Color name: red, white, black
● rgb value: rgb(0, 150, 255);
● Hex value: #0096FF
color: white; Sets the text color. Takes the same
values as background-color (color
name, rgb, hex).
CSS Values
Each CSS property has a set of values that are allowed (background-color allows
color values,
cursor allows solid, dotted, dashed, etc.)
Color Values
1. A color name: red, white, black
● Each character in Hex is base 16, which means it can have a value of 0, 1, 2,
... 8, 9, A, B, C, D, E, F (16 possible values).
● Using the first 2 characters, we can have 16 * 16 = 256 possible values from 0
- 255:
00 = 0
01 = 1
...
0F = 15
10 = 16
11 = (1 * 16) + 1 = 17
...
FF = (15 * 16) + 15 = 255
● This is the same range as RGB (0 to 255), so the first 2 characters in Hex
are used to represent red, the second 2 characters represent green, and
the third 2 characters represent blue. Usually, it's easier to use a Hex to
RGB calculator to convert.
Measurement Values
1. Pixels: 50px, 100px
Pixels (px) are a common unit of measurement in the
digital world. For example: a 4K screen is 3840px by
2160px.
.youtube-button {
...
}
.subscribe-button {
...
}
CSS Pseudo-
Classes These styles only apply when hovering
.subscribe-button:hover over an element with
{ class="subscribe-button"
...
}
.subscribe- ...
button:active {
These styles only apply element with class="subscribe-button"
when clicking on an
}
Intermediate CSS Properties
.subscribe-button {
opacity: 0.5; Sets how see-through an element is: 0.5 = 50% see-
through.
opacity: 0 = complete see-through (invisible).
0; 1 = not see-through (this is the default value).
opacity:
1;
Chrome DevTools
Lets us view (and modify) the HTML and CSS of a website directly in the
browser. To open the DevTools: right-click > Inspect.
CSS Box Model
● Determines how much space an element takes up.
● Determines how far away elements are from each other.
.join-button {
margin-right: Add 10px of space on the outside of the element.
10px; margin-left:
10px; margin-top:
10px; margin- Normal margin pushes things away from an element.
bottom: 10px;
margin-right: -20px; Negative margin pulls things towards an element like
this:
● <span> is the most generic text element (it doesn't have any default styles).
.shop-link {
text-decoration: underline;
}
The HTML Structure
<!DOCTYPE Tells the browser to use a modern version of HTML.
html>
<html> <head> contains everything that's not visible like the title and
<head> description (a.k.a. metadata) as well as links to fonts and CSS
... stylesheets.
</head>
<body> <body> contains everything that's visible like buttons, text,
... images, etc.
</body>
</html>
Filepaths
href="styles.css" Looks for a file called styles.css beside the
HTML file.
href="fold1/styles.css" Looks for a folder called fold1 beside the HTML
file, then
goes into the folder and looks for styles.css.
href="fold1/fold2/styles.css" Go into fold1, go into fold2, look for
styles.css
Images
<img src="image.png"> Loads an image image.png beside the HTML file.
<img src="pics/image.png"> Loads image.png in the pics folder.
<img class="image" src="pics/image.png">
.image {
width: 300px; Resizes the image to a width of 300px. Height will
also
resize to keep the image's dimensions.
height: 300px; If both width and height are set, the image may
stretch.
object-fit: cover; Enlarges the image to cover the entire width *
height area
without stretching or distorting.
object-fit: contain; Shrinks the image so that it's contained in the width
*
height area.
object-position: Determines where the image is positioned in the
left; object- width *
position: right; height area.
object-position: top;
object-position:
bottom;
}
Inputs
<input type="text"> Creates a text box.
<input type="text" Add a placeholder (a label) to the text
placeholder="Search"> box.
<input type="checkbox"> Creates a checkbox.
<input class="search-bar" type="text">
.search-bar {
font-size: 30px; Changes the font-size when typing into the text box.
}
.search-
bar::placeholder { Changes the font-size of the placeholder.
font-size: 30px;
}
<div> Element
<div> is a container. We generally put other elements (including other <div>s)
inside (nesting).
<div class="container">
<p>Name</p> .container {
<input type="text"> display: inline-block; width: 200px;
</div>
<div class="container">
<p>Quantity</p>
<div>
<button>1</button>
<button>2</button>
</div>
<button>Submit</
button>
</div>
<div>s allow us to group create more complex layouts.
elements together and
}
Nested Layouts Technique
There are 2 types of layouts:
<div style="
background-color: ● Inline style = CSS is written within a line of HTML.
red; color: white; ● Inline styles only affect the element with the
"> style="..." attribute (no selectors are
... needed).
</div>
CSS Grid
.grid {
display: grid; Turns an element into a grid
grid-template-columns: 100px container. Sets how many columns
100px; are in the grid and how wide the
columns are.
column-gap: Sets space between the
20px; row-gap: columns. Sets space between
40px; the rows.
}
.grid {
display: grid;
grid-template-columns: 100px 1fr; 1fr = the column will take up the
remaining
amount of space in the grid container.
grid-template-columns: 1fr 1fr; The columns will take up an equal amount of
the
remaining space (since they're both 1fr).
grid-template-columns: 1fr 2fr; The number in front of fr = relatively how
much
space the column gets. Here, the 2nd
column gets twice the amount of space as
the 1st.
.element-inside-flexbox
{ width: 100px; Sets the width of the flexbox element to
flex: 1; 100px. Take up the remaining amount of
space. The value 1 determines relatively how
much space.
flex-shrink: 0;
Don't shrink the element when resizing.
width: 0;
Allow the element to shrink down when
resizing.
}
flex-direction: column;
.flexbox {
display: flex; Lays out elements vertically inside the flexbox.
flex-direction: Also,
column; justify-content and align-items are reversed.
.element {
position: This is the default value that every element starts with.
static; position: static; causes the element to display
} normally.
Position Fixed
.fixed { Positions the element in the browser window (sticks to
position: the page while scrolling).
fixed;
top: 0; Places the element 0px from the top of the browser
window.
bottom: 10px; 10px from the bottom of the browser
window. left: 50px; 50px from the left of the browser
window. right: 100px; 100px from the right of the browser
window.
● If you set opposite directions (top/bottom or
left/right),
the element will stretch.
top: -5px; Using negative pixels places the element beyond the top
edge.
Position Absolute
.absolute { Positions the element on the page (it will scroll with the
position: page and will not stick when scrolling).
absolute;
top: 0; Places the element 0px from the top of the page.
bottom: 10px; 10px from the bottom of the
page. left: 50px; 50px from the left of the
page. right: 100px; 100px from the right of the
page.
Position Relative
.relative { The element will appear normally (as if it's position:
position: static). We can then push it around with
relative; top/bottom/left/right.
top: 10px; Places the element 10px from the top of its original
position
(pushes it down by 10px). Unlike margin, it won't push the
rest of the page down.
bottom: 10px; Places the element 10px from the bottom of its original
position
(pushes it up by 10px).
left: 50px; Places the element 50px from the left of its original
position.
right: 100px; Places the element 100px from the right of its original
position.
.fixed {
position: This element will appear in front of the position:
fixed; z- absolute;
index: 2; element because it has a higher z-index.
}
.absolute {
position:
absolute; z-
index: 1;
}
.static { This element will appear at the back since it's position:
position: static.
static;
}
Responsive Design
Responsive design = making the website look good on any screen size.
We generally use a gap of .02px between the ranges (like above) because the
browser can support fractional screen widths like 750.50px.
Advanced CSS Selectors
With Comma
.class1, .class2 { ... } Target multiple classes at the same time.
.class1, p { ... } Target a class and all <p>s at the same time.
With Space
.class1 img { ... } Target <img>s that are inside elements with
class="class1"
Inheritance
A text property set on the outer element will be passed down into inner elements:
<div style="color: red;">
<p>Paragraph</ This paragraph will have red text.
p>
</div>
For global text styles (styles we want on the entire page), we can set them on
the <body>: body {
font-family: Roboto, All elements on the page by default
Arial; color: rgb(20, will use font-family: Roboto, Arial
20, 20); and color: rgb(20, 20, 20). This
} can be overridden.
CSS Specificity
If multiple CSS selectors change the same property on the same element (see
example below), CSS Specificity determines which selector "wins" (which style gets
applied).
<body> </p>
<p class="title"> </body>
Paragraph of
text.
In this example, the
.title selector has
the highest priority
(according to CSS
Specificity) so the
text will be green.
CSS Specificity Rules
Here's the full set of CSS Specificity Rules (you don't need to memorise all of these).
Usually, you just need to know a few useful rules and search Google for more if
needed:
1. Inline CSS has higher priority than .class selectors.
2. .class selectors have higher priority than element name selectors (p).
3. Element name selectors (p) have higher priority than inheritance (from body).
4. If 2 selectors have the same priority, the one that is written later wins.
Semantic Elements
Elements that work the same way as <div>. However, they also give the HTML
meaning when screen readers, search engines, or other devices read the website.
Comments
Let us write code that the browser ignores. Useful for documenting how the code
works.
<!-- This is a comment Syntax for a comment in HTML: <!-- ... -->
-->
<p class="title">
Paragraph of text.
</p>
.tooltip {
pointer-events: none; Disables all interactions with the mouse (clicks, hovers,
etc.)
white-space: Prevents the text inside the element from
nowrap; wrapping to multiple lines.
}