TailwindCSS

Digital design,

3. semester

Øvelse (Task 0)

Genskab følgende design med HTML og CSS

Det skal ikke være 100 % én til én, men så tæt på, som muligt.

I dag

  • Hvad er et framework?

  • Hvorfor frameworks?

  • Tailwind CSS

C

SS

C

SS

C

SS

C

SS

The Cascade

The Cascade

<button id="send" class="action" type="submit">
  Buy now
</button>

Overskrift

h1 {
  color: blue;
}

h1 {
  color: red;
}

I browseren

Hvilken regel gælder?

🤔

Quiz

Overskrift

h1 {
  color: blue;
}

h1 {
  color: red;
}

I browseren

Hvilken regel gælder?

Vinder, fordi den bliver læst sidst

Quiz

Heading 2

#my-heading {
  color: blue;
}

.heading {
  color: red;
}

I browseren

Hvilken regel gælder?

🤔

<h2 class="heading" id="my-heading">Heading 2</h2>

Quiz

#my-heading {
  color: blue;
}

.heading {
  color: red;
}

I browseren

Hvilken regel gælder?

Vinder, fordi ID er mere specifik end CLASS

Heading 2

Quiz

Paragraf

.paragraph:first-of-type {
  color: blue;
}

p.paragraph {
  color: red;
}

I browseren

Hvilken regel gælder?

🤔

<p class="paragraph">Paragraf</p>

Quiz

.paragraph:first-of-type {
  color: blue;
}

p.paragraph {
  color: red;
}

I browseren

Hvilken regel gælder?

<p class="paragraph">Paragraf</p>

Vinder, fordi den har to klasser

Paragraf

Quiz

p {
  color: blue;
}

#context {
  color: red;
}

I browseren

Hvilken regel gælder?

Paragraf

<div id="context">
  <p>Paragraf</p>
</div>

Quiz

p {
  color: blue;
}

#context {
  color: red;
}

I browseren

Hvilken regel gælder?

Vinder, fordi den er mere specifik

Paragraf

<div id="context">
  <p>Paragraf</p>
</div>

Quiz

.red {
  color: red;
}

.blue {
  color: blue;
}

I browseren

Paragraf 1

<!DOCTYPE html>
<html lang="da">

  <head>...</head>

  <body>

    <p class="blue red">Paragraf 1</p>
    <p class="red blue">Paragraf 2</p>

  </body>

</html>

Paragraf 2

Hvad er resultatet?

<p class="blue red">Paragraf 1</p>
<p class="red blue">Paragraf 2</p>

Quiz

.red {
  color: red;
}

.blue {
  color: blue;
}

I browseren

<!DOCTYPE html>
<html lang="da">

  <head>...</head>

  <body>

    <p class="blue red">Paragraf 1</p>
    <p class="red blue">Paragraf 2</p>

  </body>

</html>
<p class="blue red">Paragraf 1</p>
<p class="red blue">Paragraf 2</p>

Paragraf 1

Paragraf 2

Hvad er resultatet?

Quiz

.red {
  color: red;
}

.blue {
  color: blue;
}

I browseren

<!DOCTYPE html>
<html lang="da">

  <head>...</head>

  <body>

    <p class="blue red">Paragraf 1</p>
    <p class="red blue">Paragraf 2</p>

  </body>

</html>
<p class="blue red">Paragraf 1</p>
<p class="red blue">Paragraf 2</p>

Paragraf 1

Paragraf 2

Hvad er resultatet?

Quiz

p:not(#id) {
  color: green;
}

p.class {
  color: red;
}
<p class="class">text</p>

<p id="id">last text</p>

Quiz

"green"

Quiz

:not(.special) a {
  color: red;
}
<ul>
  <li>
    <a>Link</a>
  </li>
  <li class="special">
    <a>Link</a>
  </li>
  <li>
    <a>Link</a>
  </li>
</ul>

"red"

"red"

"red"

Quiz

#test p {
  color: blue;
}

p:hover {
  color: red;
}
<div id="test">
  <p>Lorem, ipsum dolor.</p>
</div>

The Cascade

Frameworks

Hvad er et framework?

Kode-bibliotek?

  • Noget, der gør ens arbejde lettere og hurtigere
  • Noget, der gør ens arbejde sværere og langsommere 😅
  • Typisk rammer med (stærke) holdninger
  • Begrænset men ensartet
  • Abstraktioner

En analogi

Tailwind CSS

Utility-framework

  • Ét stort stylesheet, som andre har skrevet
  • Mobile- og utility-first (hjælpeklassser)
  • Selv-dokumenterende
  • Designsystem, som kan skræddersyes

Tailwind CSS

Tailwind's klasser

Øvelse (Task 1)

Genskab følgende design med TailwindCSS

Det skal ikke være 100 % én til én, men så tæt på, som muligt.

bg-blue-500

text-blue-200

bg-slate-900

Tailwind i VS Code (Task 2)

  • Installér 'Tailwind CSS IntelliSense'
  • Sæt et Tailwind-project op med skabelon

Noter til skabelon

  • Filerne, I arbejder på, skal ligge i src-mappen (HTML, CSS, JS)
  • Hvis I skal have flere HTML-sider skal de tilføjes til config-filen
  • Jeres assets (dvs. billeder, fonte osv.) skal ligge i public-mappen — fx public/img/billede-1.webp
  • I henviser til assets uden at skrive "public/" i stien
<img src="public/img/billede-1.webp" alt="Billede 1" />

Eksempel på henvisning til billeder fra public-mappen

Noter til skabelon

  • Filerne, I arbejder på, skal ligge i src-mappen (HTML, CSS, JS)
  • Hvis I skal have flere HTML-sider skal de tilføjes til config-filen
  • Jeres assets (dvs. billeder, fonte osv.) skal ligge i public-mappen — fx public/img/billede-1.webp
  • I henviser til assets uden at skrive "public/" i stien
<img src="img/billede-1.webp" alt="Billede 1" />

Eksempel på henvisning til billeder fra public-mappen

Øvelse (Task 2)

Genskab følgende design med TailwindCSS

Det skal ikke være 100 % én til én, men så tæt på, som muligt.

Hvorfor Tailwind?

Er det ikke bare inline-style?

🤪

Bliver min HTML ikke uoverskuelig?

🤪

Flytter jeg ikke bare mængden af kode fra et stylesheet til HTML?

🤪

Flytter jeg ikke bare mængden af kode fra et stylesheet til HTML?

🤪

Constraints & consistency

👏🏻

Performance

👏🏻

The hardest thing about programming is naming stuff!

Bedste argument

👏🏻

Konventioner

Guidelines

  • Use descriptive and consistent names with classes and id's
    • Instead of .smaller-text use .figure-caption
    • Instead of .sidebar-images use .banner
  • Avoid names relying on locational and visual aspects. Componentize!
    • Instead of .red-link and .left-col use .external-link and .main-content
  • Use names that are intuitive to you (— what is well-established? Look at other sites)

Metodologi

Metodologi

<section class="o-section o-section--more-v-spacing o-section--dark 
o-section--above-sidebar c-banner c-banner--dark js-section-above-sidebar">

😬

<body class="forside">
<body class="underside">
.forside {
  background-color: #bada55;
  color: #000;
}
.underside {
  background-color: #5000ca;
  color: #fff;
}
<body class="underside-2">
.underside-2 {
  background-color: #bada55;
  color: #000;
}
<body class="forside">
<body class="underside">
.forside {
  background-color: #bada55;
  color: #000;
}
.underside {
  background-color: #5000ca;
  color: #fff;
}
<body class="underside-2">
.underside-2 {
  background-color: #bada55;
  color: #000;
}

Samme styles

Tailwind CSS

<section>
  <svg>...</svg>
  
  <h2>Constraint-based</h2>
  
  <p>An API for your design system.</p>
  
  <p>Utility classes help you work within the constraints...</p>
...

Hvilke HTML-tags ser I?

<section>
  <svg>...</svg>
  
  <h2>Constraint-based</h2>
  
  <p>An API for your design system.</p>
  
  <p>Utility classes help you work within the constraints...</p>
...

"kicker"

Semantik først

<section>
  <svg>...</svg>
  
  <h2>Constraint-based</h2>
  
  <p class="text-4xl font-extrabold">An API for your design system.</p>
  
  <p>Utility classes help you work within the constraints...</p>
...

"kicker"

Semantik først

Hvorfor Tailwind?

I virkeligheden

  • Fordi CSS er svært
  • For at afspejle branchen
    • Det er en industri standard
    • Det er performant
    • Det gør det "let" at have consistency
    • "Det er sjovt" — citat Jonas

😬

Dig?

Tailwind CSS introduktion

By Dannie Vinther

Tailwind CSS introduktion

Tailwind CSS introduktion

  • 178