;
}
```
---
class: middle center
## transition
```css
button {
background-color: blue;
width: 200px;
transition: width 2s, background-color 2s, transform 2s;
}
button:hover {
background-color: red;
width: 400px;
transform: rotate(180deg);
}
```
---
class: center middle
# DevTool
## ⌘ + ⌥ + i / ctrl + ⇧ + i
---
class: split
# Oppgave
## 1.Endre bakgrunnsfarge på knappene ved hover
## 2.Legg til fokusmarkering for tabbing
## 3. Endre musepeker til en hånd ved hover
---
class: center middle
# Interaksjon
---
#Events
## Recap:
--
```html
```
--
```javascript
var button = document.querySelector('#btn');
button.addEventListener('click', function() {
console.log('heia');
});
```
---
# Events
```html
```
--
## Må vi legge til 4 individuelle listeners?
---
class: middle center
# Event Propagation
---
# Event Propagation

---
# Event Propagation
```html
```
--
```javascript
var container = document.querySelector('#buttons');
container.addEventListener('click', function() {
console.log('heia');
});
```
---
# Event Propagation
---
# Event Propagation
## `event`-objektet
```javascript
var container = document.querySelector('#buttons');
container.addEventListener('click', function(event) {
var element = event.target;
console.log(element.nodeName) //=>BUTTON
});
```
---
# Event Propagation
## `event`-objektet
```javascript
var container = document.querySelector('#buttons');
container.addEventListener('click', function(event) {
var element = event.target;
if(element.nodeName === 'BUTTON') {
doIncrement();
} else {
//do nothing
}
});
```
--
Les mer om Event på Mozilla Developer Network:
https://developer.mozilla.org/en-US/docs/Web/API/Event
---
class: center middle
# JavaScript-filer
---
# JavaScript-filer
## `fil.html`:
```html
```
---
# JavaScript-filer
## `fil.html`:
```html
```
## `heia.js`:
```js
console.log('heia');
```
---
class: split
# Oppgave
Dere skal gjøre nedtelleren interaktiv!
- Lag en ekstern JavaScript-fil som blir referert fra HTML
- Fang opp klikk-events på knappene
- Oppdatere konsollet på nedtelleren med tallet som ble klikket på
---
class: center middle
# Asynkronitet
---
# Asynkronitet
JavaScript er et asynkront språk. Hva betyr det?
--
## Kode kan bli kjørt ved vilkårlige tidspunkt som reaksjoner på hendelser utenfor programmet ditt.
---
# Asynkronitet
Hva vil bli printet til konsollet?
```javascript
console.log('hello');
setTimeout(function() {
console.log('asyncronous');
}, 100);
console.log('world!');
```
--
```javascript
hello
world
asyncronous
```
---
# Asynkronitet
Hva vil bli printet til konsollet?
```javascript
console.log('hello');
setTimeout(function() {
console.log('asyncronous');
}, 0);
console.log('world!');
```
--
```javascript
hello
world
asyncronous
```
???
Hva er det egentlig som skjer her?
Når JavaScript-motoren tolker denne koden og kommer til setTimeout ser den at
her skal det registreres noe kode som skal kjøres senere. Motoren legger en
beskjed på "stacken" om at denne snutten med kode skal kjøres om 0ms.
Så beveger motoren seg videre, ser neste log-statement og logger det. Nå er
motoren ferdig med all koden i filen og den kikker på "stacken" sin og ser at
her ligger det noe kode som skulle kjøres om 0ms. Siden det har gått minst 0ms
siden kodesnutten ble lagt på stacken så er det OK å kjøre den koden.
---
# Asynkronitet
Hva vil bli printet til konsollet?
```javascript
setTimeout(function() {
console.log('heia');
}, 100);
while(true) {
//Do something
}
```
--
```
//Ingenting!
```
---
# Vil du vite mer?
---
# Funksjoner
```javascript
document.querySelector("#button").addEventListener(function () {
console.log('hello');
});
```
--
```javascript
document.querySelector("#button").addEventListener(function sayHello() {
console.log('hello');
});
```
--
```javascript
function sayHello() {
console.log('hello');
}
document.querySelector("#button").addEventListener(sayHello);
```
---
# Kalle funksjoner
```javascript
function hello() {
return 'Hello you!';
}
console.log(hello);
```
--
```javascript
function hello() {
return 'Hello you!';
}
```
---
# Kalle funksjoner
```javascript
function hello() {
return 'Hello you!';
}
console.log(hello());
```
--
```javascript
Hello you!
```
---
# Kalle funksjoner
```javascript
function sayHello() {
console.log('Hello you!');
}
setTimeout(sayHello(), 1000);
```
--
```javascript
Hello you!
```
---
# Kalle funksjoner
```javascript
function sayHello() {
console.log('Hello you!');
}
setTimeout(sayHello, 1000);
```
--
```javascript
//Etter 1s
Hello you!
```
---
# Kalle funksjoner
```javascript
function sayHello() {
console.log('hello');
}
```
--
```javascript
document.querySelector("#button").addEventListener(sayHello);
```
```javascript
sayHello();
```
---
class: middle center
# Bonus: setInterval
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
--
```javascript
heia
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
```javascript
heia
heia
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
```javascript
heia
heia
heia
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
```javascript
heia
heia
heia
heia
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
```javascript
heia
heia
heia
heia
...
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
setInterval(printHeia, 1000);
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
var id = setInterval(printHeia, 1000);
```
---
# setInterval
```javascript
function printHeia() {
console.log('heia');
}
var id = setInterval(printHeia, 1000);
clearInterval(id);
```
---
class: split
# Oppgave
Dere skal implementere nedtelling!
- Starte nedtelling fra tallet i konsollet når du trykker på start
- Stoppe nedtelling konsollet kommer til null
---
class: center middle bekk-top
# Takk for oss!
bekk.no/jobb