We take developers from good to great

WE ARE THE JSLEAGUE

Intro to Web
HTML+CSS+JS


Whoami
Diana Miron
5+ years experience as front-end dev
CEO JSLeague, JSgirls
co-organizer JSHacks
web animations enthusiast


Assistants


Agenda Day 1
10-30 - 11:00 Web history
11:00 - 11:25 Introduction to HTML, Front-end versus Back-end
11:25 - 11:45 What is CSS and JavaScript, Text Editors
11:45 - 12:00 Coffee break
12:00 - 12:20 Web page structure (elements, tags, attributes, syntax, nesting)
12:20 - 13:00 Primary tags (paragraphs, headings, lists, links, images, forms, tables)
13:00 - 14:00 Lunch break
14:00 - 16:00 Let's make some heroes
16:00 - 16:15 Coffee break
16:15 - 17:00 CSS: ids, classes and selectors, attributes
17:00 - 18:00 Let's make some pretty things

2x 15' coffee break + 1h lunch break
We expect cooperation from all participants to help ensure a safe environment for everybody.
We treat everyone with respect, we refrain from using offensive language and imagery, and we encourage to report any derogatory or offensive behavior to a member of the JSLeague community.
We provide a fantastic environment for everyone to learn and share skills regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices.
We value your attendance and your participation in the JSLeague community and expect everyone to accord to the community Code of Conduct at all JSLeague workshops and other events.

Code of conduct

Partners







JSLeague
Let's write some code

90's kids will remember
Web history
A short history of web 👩🏻💻

Web history


- The World Wide Web was invented by Tim Berners-Lee and developed at CERN in 1989-1990
- The first web browser was released to the public on August 1991

Web history
1991
- First Linux kernel released by Linus Torvald
- Intel 486 chip released
- Creative Labs releases first sound card
- Street Fighter 2 released
- Symantec releases Norton Anti Virus
- Terminator 2: Judgment Day released
- The Soviet Union dissolved - end of Cold War
- Start of Gulf War and Balkan War
- Nirvana releases Nevermind album
- Freddie Mercury died


The first web page

First browsers



1993 - Mosaic browser - first commercial browser
1995 - Netscape and Internet Explorer



Early days

Second generation websites





Table based layouts

Table based layouts

Spacer gif


Web timeline
- 1991 - HTML
- 1994 - HTML 2
- 1996 - CSS 1 + Javascript
- 1997 - HTML 4
- 1998 - CSS 2
- 2000 - XHTML 1
- 2002 - Tableless Web design
- 2005 - AJAX
- 2009 - HTML 5
- 2012 - CSS 3

New generation websites


New generation websites

Today

654 Million websites

The website trio
Introduction to HTML
HTML + CSS + JS = 💙

The Mighty Trio


HTML + CSS + JS
HTML = Hyper Text Markup Language
CSS = Casscading Style Sheets
JS = JavaScript
JavaScript != Java

Front-end vs. Back-end

Java
C#
Objective-C
Python
Scala
Go Lang
.....
700 programming languages https://en.wikipedia.org/wiki/List_of_programming_language

Code


Text editors


Text editors



What web is made of
Web page structure
Sugar, spice and everything nice 🌈

HTML
- HTML = Hyper Text Markup Language
- is a mark-up language
- can be used by anyone
- can be written in a variety of text editors (Notepad, Notepad ++, Sublime, Atom etc.)
- can be processed by a variety of devices (computer, mobile phone, tablet etc).

HTML
- All HTML code is made up of tags
- These are two-fold:
- pair (close)
- unpaired (no need to be closed)


HTML
<html>
<head>
<title> Prima mea pagina </title>
</head>
<body>
<div>
<p>>Hello, there!</p>
</div>
</body>
</html>

HTML


Tags
Primary tags
Tag, you're it! 🙀

HEAD
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no, minimum-scale=1">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=
Open+Sans:300,400,600,700&lang=en" />
<link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">
<link rel="stylesheet" href="stylesheet.css">
<script type="text/javascript" src="script.js"></script>
<title>My First Hero App</title>
</head>

Exercise
<section></section>
<header></header>
<footer></footer>
<aside></aside>
<div></div>
<p></p>
<h1></h1> .... <h6></h6>
<span></span>
<small></small>
<form></form>
<input/>
<select></select>
<button></button>
<ul></ul>
<ol></ol>
<table></table>
<a></a>
<img/>
<hr/>
<br/>

Attributes
<div class="hero jean" id="strange">
<a class="hero--btn previous" href="https://jsleague.ro"
onclick="previousHero()"><</a>
<div class="hero--left">
<div class="hero--image-container">
<img class="hero--image" src="img/Doctor_Strange.jpg" />
<img class="hero--image-back" src="img/Doctor_Strange_2.jpg" />
</div>
</div>


Exercise
Let's make some heroes

CSS: Ids, classes and selectors, attributes
CSS
The pretty part 🎁
<img class="hero--image img-green spanac" src="img/Doctor_Strange.jpg" id="hero-diana" />

ID vs Class
Ids are unique:
- relationship 1-1
- an item can have a single id
- an id with a given name can be used for a single element
- identified by #
Classes are not unique:
- multi-many relationship
- an element can have as many classes as possible
- the name of a class can be used for as many items as possible
- identified by dot

ID vs Class
<img class="hero--image img-green spanac"
id="hero-diana"
src="img/Doctor_Strange.jpg" />
HTML
CSS
.hero--image {
border: none;
}
.spanac {
color: green;
}
#hero-diana {
background: pink;
}

Syntax
.hero {
width: 70%;
min-width: 900px;
position: absolute;
left: 15%;
top: 115px;
will-change: auto;
transition: left .45s ease-out;
}

Implementation
1. External file as link
<head>
<link rel="stylesheet" href="stylesheet.css">
</head>
2. External file - in HEAD
<head>
<style>
.spanac {
color: green;
}
</style>
</head>
2. External file - in HEAD
<h1 style="color: green;" class="spanac">SUNT UN SPANAC VERDE</h1>

Example


Example


Text


Box model


Margins


Border



Display


Position


Float


Colors



Coffee ?

Let's make some pretty things
JSLeague
yay 🚀

Day one over!
Intro to Web
OMG

Day two
Intro to Web
What a beautiful day for science 💣

Agenda Day 2
10-30 - 11:00 Day 1 recap
11:00 - 11:45 CSS Exercises
11:45 - 12:00 Coffee break
12:00 - 12:30 CSS Animations
12:20 - 13:00 Let's animate the web
13:00 - 14:00 Lunch break
14:00 - 15:00 Intro to JS, syntax, data types, console, debugging
15:00 - 16:00 Let's play
16:00 - 16:15 Coffee break
16:15 - 17:30 JS time
17:30 - 18:00 Discussion, pics and feedback

Day one recap
Intro to Web
'till you get it right! ✏️

CSS exercises
CSS
The web is so pretty 🎀


CSS Animations
CSS
Whaaaaat ?

Animations
/* The animation code */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Keyframes
"from" and "to" (which represents 0% (start) and 100% (complete)
/* The animation code */
@keyframes example {
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}

Animations

Animations
- ease - Specifies an animation with a slow start, then fast, then end slowly (this is default)
- linear - Specifies an animation with the same speed from start to end
- ease-in - Specifies an animation with a slow start
- ease-out - Specifies an animation with a slow end
- ease-in-out - Specifies an animation with a slow start and end
- cubic-bezier(n,n,n,n) - Lets you define your own values in a cubic-bezier function
animation-timing-function
#div1 {animation-timing-function: linear;}
#div2 {animation-timing-function: ease;}
#div3 {animation-timing-function: ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5 {animation-timing-function: ease-in-out;}

Animations
div {
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}

Animations
Shorthand property
div {
animation: example 5s linear 2s infinite alternate;
}


Animations

CSS Filters
img {
-webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
filter: grayscale(100%);
}
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();




Complex animations

CSS Drawing

Let's animate the web
CSS Animations
Finally


Intro to JS
JavaScript
Syntax, data types, console, debugging
- What is JS?
- Variables, objects,
- Data types
- Functions
- Control Flow
- onClick, onload
- Hands on!

JavaScript


Implementation
<script type="text/javascript" src="script.js"></script>
1. External - as link
<script>
document.getElementById('demo').innerHTML = 'This is so awesome';
</script>
2. Internal - inside HTML

Usage
document.getElementById ("idulMeu")
//accesses an HTML element with a unique unique id
innerHTML
//a property that defines the HTML content of an item
window.alert ("Alert: Pay attention!")
alert on the screen
//document.write ()
web page prints
//console.log (myVariable + "message")
console printing, debugging

Example


Variables


Operators


Operators


Data types
- Object
- Array
- Boolean
- Symbol
- Error
- Number
- String
- RegExp
- Math
- Set

Objects


== vs ===
77 == 77 //true
77 == “77” //true
false == 0 //true
“abc” == “abc” //true
50 == 60 //false
“Hero” = “hero” //false
3 === 3 //true
“abc” === “abc” //true
false === false //true
80 === “80” //false
“super” === “hero” //false
true === 1 //false

Arrays


Objects
let person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};

Functions


Loops


onclick()


onload()


Let's play
JavaScript
Today we are programmers

Snacks ?


JS Time
JavaScript
Do we really have to ?

Cool JS stuff

Discussions & Pics
The End
Best weekend ever! 🙈

Q&A

Thank you!
diana@jsleague.ro
dianadesign19

JSLeague Intro to Web @PN
By Diana Gabriela Miron
JSLeague Intro to Web @PN
- 1,237