Frontend Crash Course: HTML and CSS

60
Frontend Crash Course: HTML & CSS Wifi network: CrossCamp.us Events http://bit.ly/html-css-la

Transcript of Frontend Crash Course: HTML and CSS

Page 1: Frontend Crash Course: HTML and CSS

Frontend Crash Course: HTML & CSS

Wifi network: CrossCamp.us Events

http://bit.ly/html-css-la

Page 2: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 2

About us

We train developers and data scientists through 1-on-1 mentorship and career prep

Page 3: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 3

About me

Noel Duarte

Los Angeles Area General Manager

UC Berkeley ’15 — worked primarily with R for population genetics analysis, at Thinkful since January 2016

Page 4: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 4

About you

Why are you here? Do you want to work better with developers? Do you want to start working in tech? Do you have an idea that you want to build?

Programming experience? First lines of code will be written tonight? Been self teaching for 1-3 months? Been at this for 3+ months

Page 5: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 5

Goals

Understand core concepts of using HTML/CSS to build websites

Complete drills to put those concepts into practice

Build your first website

Learn to learn programming, especially the feeling of struggling with a concept

Take home challenges to keep going

Page 6: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 6

Not goals

Exhaustive coverage of HTML elements / CSS selectors

JavaScript programming for interactivity

Using developer tools

Page 7: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 7

What is Programming?

Programming is writing instructions for a computer to execute

Page 8: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 8

What is Programming?

Programming is problem-solving

Page 9: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 9

What is Programming?

Programming is a process:

1. Defining problems

2. Finding solutions to those problems

3. Implementing those solutions in a language your computer can understand

Page 10: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 10

Why learn frontend development

Job opportunities

Everyone needs a website. You can build them

Good starting place to see if coding is for you

Medium of expression

Page 11: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 11

How the web works

You type a URL: facebook.com (your computer is the client)

The browser communicates with the DNS server to find the IP address

The browser sends an HTTP ( Hypertext Transfer Protocol) to the server (which it finds using that IP address) asking for specific files

The browser receives those files and renders them as a website

Page 12: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 12

Client / Server

Front-end developer Back-end developer

Client Server

Page 13: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 13

How that relates to what we’re doing

When we write HTML & CSS today, we are creating those files that are stored on a server, sent through a series of tubes, and then rendered by your browser

Page 14: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 14

Setup

Normally, developers use a text editor to write code

Today, we’re using a tool called Codepen Codepen lets you write HTML/CSS and instantly see the results of your work Create an account: https://codepen.io/accounts/signup On second page, fill out your info you want to save your work Create a new “pen”

Page 15: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 15

Your first website

Copy this (don’t worry if you don’t yet understand):

<html> <body>

<h1>Hello world!</h1> </body>

</html>

Page 16: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 16

What is HTML?

HTML is the content and

structure of a webpage

Page 17: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 17

What is HTML?

Page 18: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 18

What is HTML?

Page 19: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 19

What is HTML?

HTML is the content and structure of a webpage

Three key concepts: Tags Elements Attributes

Page 20: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 20

HTML Tags

Every tag starts with a “less than” sign and ends with a “greater than” sign

<html> This is an HTML tag <body> This is a body tag

<h1>Hello world!</h1> This line has two H1 tags, one opening and one closing

</body> </html>

Page 21: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 21

HTML Tags

There are opening tags and closing tags. Closing tags have a backslash before the tag name.

HTML tags have become more semantic with HTML5 (or, the word signals the purpose of the tag). We’ll review some common tags shortly.

Page 22: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 22

HTML Elements

HTML elements usually consist of an opening tag, closing tag, and some content. <html>

<body> This element starts here and ends two lines below <h1>Hello world!</h1> This is an HTML element

</body> </html>

Some consist of just a self-closing tag

<img src=“http://i.imgur.com/Th5404r.jpg">

Page 23: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 23

HTML Elements

A non-exhaustive list of HTML elements: <html> HTML tags wrap your entire page <head> Head tags <body> Body tags <h1> H1 tags signify the largest headline. H2 signifies subhead… through h6 <p> Paragraph tags wrap a paragraph of writing

Page 24: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 24

HTML Elements

<p> Paragraph tags wrap a paragraph of writing <section> Section tags help you organize different sections of your layout <div> Div tags are generic/non-semantic container tags for anything that needs a container <a> Anchor tags are for setting some text to be a link <ul> <li> / <ol><li> Unordered list and ordered lists are for lists of items, containing list item elements <button> This is a button

Page 25: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 25

HTML Attributes

HTML attributes set properties on an element. They belong in the opening tag. Here are three common attributes:

<a href=“https://somewhere.com">This is a link</a> href is an attribute for setting the destination of a link <h1 class=“headline”>This is a headline</h1> class is an attribute that doesn’t show up in the rendered webpage, but will be important when we start talking about CSS <h1 id=“headline”>This is a headline</h1> id is an attribute that doesn’t show up in the rendered webpage, but will be important when we start talking about CSS

Page 26: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 26

About me website

http://codepen.io/danfriedman9/pen/pEOWZA

Let’s walk through the starter code together

Drill: Add another paragraph about yourself

Drill: Add another section to the website similar to the “About me” section called “About my family” with a paragraph of lorem ipsum below it

Page 27: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 27

HTML Drills

Link here, link there: http://codepen.io/team/thinkful/pen/qNOGmP

Images 101: http://codepen.io/team/thinkful/pen/gMaJvq

Creating headers: http://codepen.io/team/thinkful/pen/JKGPdW

Add a header element inside of the body (but before the main content). Inside the header, add a title ("Lorem Ipsum") on one line, followed by a subtitle on the next ("Holding places since the 1st century BCE"). The subtitle text should be smaller than the title text.

Link here, link there solution: http://codepen.io/team/thinkful/pen/aZNGdP Images 101 solution :http://codepen.io/team/thinkful/pen/OXNZXR Creating headers: http://codepen.io/team/thinkful/pen/KMzRzy

Page 28: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 28

HTML review

What is HTML?

Tags

Elements

Attributes

Googling HTML elements

Page 29: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 29

What is CSS?

Cascading Style Sheets determine the visual presentation of your HTML webpages

Page 30: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 30

What is CSS?

Key concepts:

Selectors Property Value Declaration / Declaration block

Two problems we solve with CSS:

Presentation of specific elements Layout

Page 31: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 31

CSS Example

h1 {

color: red;

font-size: 36px;

}

Page 32: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 32

CSS Selectors

CSS selectors determine which HTML elements are targeted for specific styles:

p This selects all paragraph tags .header This selects HTML elements with the class “header” #navigation This selects HTML elements with the ID navigation p.header This selects paragraph tags with the header class

Selectors can be combined.

Page 33: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 33

CSS Properties

CSS properties determine what about the appearance you’re setting:

color This determines the font color font-family This lets you set the typeface as well as backup typefaces background-image This lets you set a background image for an element height This lets you set the height of an element

Page 34: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 34

CSS Properties

Each property has a default value for a given element. When you write CSS, you over-ride that default value with a new value.

For a full list, see: http://www.htmldog.com/references/css/properties/

Page 35: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 35

CSS Values

Each property has a set of acceptable values that you can set:

color: red, blue, green, #CCCCCC These are all acceptable values for the color property font-family: helvetica, arial, sans-serif These are all acceptable values for the font-family property background-image: url("imageFile.jpg") This property looks for a URL value that points to a specific image file height: 40px 50% Height can be set as an explicit width or as a percentage of the containing box

Click on a property to see the acceptable values: http://www.htmldog.com/references/css/properties/

Page 36: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 36

CSS Example

h1 {

color: red;

font-size: 36px;

}

This is a declaration block, containing two declarations:

Page 37: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 37

CSS Target Practice

Classes drill: Add classes to the two divs to create a blue box and a red box, as described in the code comments and paragraphs in the codepen. You’ll need to use background-color, margin-bottom, and border.

http://codepen.io/team/thinkful/pen/jrWKKO

Selector drill: write one ruleset for sections that gives them a margin-bottom of 90px, and a second ruleset for header elements that sets font-family to Helvetica

http://codepen.io/team/thinkful/pen/ZOLmyN

Page 38: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 38

Linking CSS to HTML

We don’t have to deal with this thanks to Codepen

Normally you’d have one HTML file for each webpage (for example, home.html and profile.html), and a single CSS file for the whole website’s styles (styles.css)

To link your stylesheet to your HTML, you’d insert the following line into the <head> section of your HTML webpage:

<link rel="stylesheet" type="text/css" href="theme.css">

Page 39: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 39

CSS Layout

CSS layout determines how elements are arranged around each other. For example, Facebook wrote styles to make the nav bar stick to the top, have the pages and favorites section on the left and the news feed run in the center:

Page 40: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 40

CSS Layout

Key concepts: Display: inline vs display: block The box model Position property

Page 41: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 41

In-line vs block

Every element has a display property set to in-line or block.

A block-level element always starts on a new line and stretches to the full width available An inline element does not start on a new line and only takes up as much width as necessary

Every element has a default value, and that value can be over-ridden by setting an explicit value.

Page 42: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 42

In-line vs block

For a full list of inline elements, see: https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements

For a full list of block-level elements, see: https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements

Page 43: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 43

The box model & position property

Elements are boxes. We use the position property to organize these elements/boxes around each other. The position property has four values:

Static: normal flow. Block elements stack on top of each other. Inline elements are as large as the content they contain. Fixed: outside of normal flow. Stays in same place no matter what. Relative: normal flow. Unlike static, can use left, right, top, bottom properties to move the elements around relative to where they’d otherwise sit. Absolute: outside of normal flow. Stays in a specific spot on a page.

Page 44: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 44

Static positioning

Example: http://codepen.io/team/thinkful/pen/WxGLrr

Page 45: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 45

Fixed positioning

Example: http://codepen.io/team/thinkful/pen/OXRrbJ

Page 46: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 46

Relative positioning

Example: http://codepen.io/team/thinkful/pen/MejZQE

What happens if I change relative to static?

Page 47: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 47

Absolute positioning

Example: http://codepen.io/team/thinkful/pen/vKXPrr

You’ll be tempted to use absolute positioning to jerry-rig a design. Don’t do this. Only use it when you’re working within a small div that’s not going to change a lot.

Page 48: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 48

About You Page!

Using what we’ve learned today, let’s set up a simple about me page that includes:

Headline with your name

Small paragraph about you

Image of yourself, or something that you like

Then, we’ll style it using some of the tools we learned. Some ideas are:

Unique font-family, size, color

Positioning of elements, particularly the photo

Page 49: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 49

Topics we’re not covering / Where to go from here

More practice… especially with layout

Forms and input

Responsive design

Developer tools

JavaScript for interactivity

Page 50: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 50

Take-home challenges

Expand on your About Me page

Build a resume with semantic HTML

Finish the positioning exercise at end of page

Page 51: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 51

Learn to learn

Google is your friend

Practice at the edge of your abilities For HTML/CSS, that usually means picking a webpage and copying it Don’t know where to start? Start with Craigslist. Then do Reddit. Then do Twitter.

For HTML/CSS you don’t need tons of tutorials.

Ignore the hot new thing. Once you’ve started building something, see it through.

Page 52: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 52

More about Thinkful

You’ll learn concepts, practice with drills, and build capstone projects for your own portfolio — all guided by a personal mentor

Page 53: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 53

Mentors have, on average, 10+ years of experience

Our mentors

Page 54: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 54

Job Titles after GraduationMonths until Employed

Our results

Page 55: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 55

Try the program for two weeks, includes six mentor sessions - $50

Learn HTML/CSS/JavaScript

Option to continue onto web development bootcamp

Come talk to me if you’re interested (or email me at [email protected])

Try us out!

Page 56: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 56

How did everyone find out about tonight’s event?

Meetup, Eventbrite, Facebook, etc.

Would you have traveled to Santa Monica for tonight’s workshop? 🚗 🚙 🚕

Quick poll

Page 57: Frontend Crash Course: HTML and CSS

Thank you! Email me with questions or suggestions:

[email protected]

April 2017

Page 58: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 58

Positioning exercise

Note: we likely will not have time for this tonight.

Build this layout:

Page 59: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 59

Positioning exercise

Page 60: Frontend Crash Course: HTML and CSS

© 2017 Thinkful. All Rights Reserved. 60

Positioning exercise: Reasoning about Layout

Images can be downloaded from here: https://github.com/Thinkful-Ed/css_layout_exercises/tree/solutions/images

Steps:

Break the page down into its components Pick one to start with (top to bottom, left to right) List the elements inside of a component Identify if a given element should be inline or block, and pick the most appropriate HTML element Code the first element (once again, top to bottom, left to right)

Trick: put a 1px red box around every element with “* {border: 1px solid red; }”. That will let you visualize the boxes of elements more effectively.