Kristoffer Brabrand
Senior developer @ Behalf
đâš
08:30 - 09:30 Grunnleggende om semantikk
09:30 - 10:45 BEM og designsystem i kode
10:45 - 11:30 Ting som komponenter
11:30 - 12:30 Lunsj
12:30 - 13:30 Litt grunnleggende JS
13:30 - 16:30 JS i React
08:30 - 10:30 Oppgavetid
10:30 - 11:30 State og props
11:30 - 12:30 Lunsj
12:30 - 14:30 Ă hente data
14:30 - 15:30 Oppgavetid
15:30 - 16:30 Begynner Ă„ lage ting đ
đș o' clock
(ca. 15:00?)
08:30 - 08:45 Stand-up m/ âïž
08:45 - 09:30 Ulike CMS-modeller
09:30 - 11:30 Lage greier
11:30 - 12:30 Lunsj
12:30 - 15:15 Vi prĂžver Ă„ gjĂžre ferdig noe
15:15 - 15:30 Avrunding
15:30 - 16:30 P&P?
vi har ikke-semantiske elementer som
<div>, <span>
og semantiske elementer som
<table>, <ul>, <nav>, <article>, <form>
Det betyr at hvis du har data som ser ut, eller brukes som en tabell, sĂ„ skal de vĂŠre en tabell.Â
Â
«Ting» man trykker pÄ og som sender brukeren til en annen URL er en link. De skal vÊre lenker.
Â
Ting som gjÞr noe med tilstanden, f.eks. Ä Äpne/lukke en meny, er en knapp.
Â
VĂŠr snill â€ïž
Bruk noe annet hvis du kan. Bruk main, nav, ul, ol, dl osv.
Â
Det er greit for Ă„ styre presentasjon, men de har ingen semantisk mening og bidrar derfor ikke til Ă„ stĂžtte innholdet.
https://blog.gale.com/why-semantic-html-matters-to-accessibility/
Tenk pÄ det som en disposisjon. Den skal ikke ha mer enn én tittel, bÞr ikke ha hull
For oss som ser ting i visuell kontekst er det irriterende med «klikk her», men for de som kun ser lenkene er det ubrukelig.
Semantikk er bra for alle, men brukere av skjermlesere og andre hjelpemidler trenger semantikken for Ä kunne navigere internettet.
Â
Siden vi ikke er slemme, og siden tilgjengelighet er en hygienefaktor prĂžver vi pĂ„ ordentlig. Uten Ă„ si at det handler om «de blinde» đ
Alle visuelle elementer pĂ„ siden som er meningsbĂŠrende skal ha en alternativ tekst som beskriver innholdet. Dersom et bilde ikke er meningsbĂŠrende kan du legge inn en tom alt-tagg â da hopper skjermlesere over.
https://axesslab.com/alt-texts/
et sett med attributter som gjĂžr det mulig Ă„ gi hint til skjermleseren om ting ved dokumentet (nettsiden) som semantikken ikke dekker.
Â
Dette handler ofte om at et omrĂ„de pĂ„ siden blir oppdatert nĂ„r noe annet endrer seg (ARIA Live Regions) eller beskrivelse av skjemaelementerÂ
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-labelledby_attribute
Block Element Modifier
http://getbem.com/introduction/
BEMâââBlock Element Modifier is a methodology that helps you to create reusable components and code sharing in front-end development
http://getbem.com/introduction/
Den stĂžrste bestanddelen. Ett rotelement:
Â
Â
Â
Â
Skal kun ha ett nivÄ med elementer under seg.
<div class="card">...</div>Elementer som utgjĂžr en block. Kan for eksempel vĂŠre tittelen i en .card-block
Â
Â
Â
Â
Â
Â
Â
Â
Skal kun ha ett nivÄ med elementer under seg.
<div class="card">
<h2 class="card__title">Dat title</h2>
<div class="card__content">
...
</div>
</div>Variant av block eller element. Typ stor knapp, alternativ layout osv.
<div class="card">
<h2 class="card__title">Dat title</h2>
<div class="card__content">
...
<button class="button button--cta">
Do it
</button>
</div>
</div>...
So style. Much attitude
amaze
Such snow. Many spin. wOW
media-list
media-list__item
media-list__title
media-list__image
...
So style. Much attitude
amaze
Such snow. Many spin. wOW
media-list
media
media__title
media__image
media-list__item
Bruk variabler for farger, breakpoints og marger
UnngÄ @extend
Ikke lag for mye smartness med funksjoner og mixins
Bruk &-operatoren der du kan, sÄ slipper du masse skriving
Ikke override ting pĂ„ utsiden av komponenten â dĂ„ fĂ„r du side-effects som er vanskelige Ă„ hanskes med over tid đ
Bruk relative stĂžrrelser (rem og em)Â
.card {
// like marger pĂ„ tvers er đ
padding: $padding-medium;
&__title {
text-transform: uppercase;
margin-bottom: $padding-large;
&--pink {
color: hotpink;
}
}
}(ulike mÄter Ä lage layout)
ikke bruk. har gÄtt ut pÄ dato. vondt Ä jobbe med.
bredest stÞtte. funker bra ogsÄ i IE10+ (med noen quirks)
fortsatt litt kilent Ä jobbe med, ikke sÄÄ god stÞtte i IE/Edge ennÄ
grid-basert layoutsystem der man konseptuelt "lager plass" ved Ä slÄ sammen celler i rutenettet.
Â
Alle elementene i HTML-dokumentet ditt bĂžr vĂŠre der av en grunn. Hvis de er der av en grunn har de en funksjon, og da er de mest sannsynlig komponenter.
Hvis vi tenker BEM, men skriver kvasi-HTML, har vi noe som dette:
<card>
<cardTitle>Dem linkz</cardTitle>
<cardContent>
<list tile>
<listItem large>
<a href="http://bit.ly/2HGH1sF">A song</a>
</listItem>
<listItem>
<a href="http://bit.ly/2HVwQ2L">A video</a>
</listItem>
</list>
</cardContent>
</card>Steget vi mÄ ta for Ä lage gjenbrukbare komponenter er Ä tenke pÄ komponentene som en kombinasjon av
Komponenten
Data
(Intern tilstand)
Komponenten sin jobb, uansett rammeverk og CMS, er Ă„ oversette fra kombinasjonen av disse tingene til markup med de riktige klassene.
...her kommer React.js, Vue, Angular og andre rammeverk inn i bildet. De gir oss basisen for Ă„ bygge komponenter.
(fungerende prosjekt med React og SCSS đ)
(Milosz)
Â
Â
Roses are Red
Violets are Blue
Naming variables is hard
So let's call it foo
41 + 1; // 42
'Say' + ' something!'; // 'Say something!'
'3' + 4 + 5; // "345"
3 + 4 + '5'; // "75"2 > 4 // false
4 < 2 // false
2 <= 2 // true
3 >= 4 // true
42 == 42 // true{
name:'Bruce Wayne',
heroName: 'Batman',
superPower: 'does bats and stuff'
}const scaryStuff = ['boogeyman', 'spaghetti monster', 'pregnant wife'];
scaryStuff.length // 3function add(x, y) {
let total = x + y;
return total;
}
add(); // NaN
add(2, 3); // 5FUN TIMEz!
heeeeeeelt basic... mer kommer i morgen
Veldig greit Ă„ ha.
npx create-react-app my-app
cd my-app
npm startLa oss fyre opp en react app
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
// or
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}creates a new array with the result of calling the provided function for each value in the array
const list = [1, 2, 3, 4]
const squares = list.map(a => a * a)
console.log(squares) // [1, 4, 9, 16]Showtime
By Kristoffer Brabrand