{%hackmd KXd2iUBpSjq7Ib2Z4h3LMg %}
# {𝐅}rontendisti
#### Praha, Seznam.cz <br> 14. února ’24
<small>příště: 13. března, upřesníme kde</small><!-- .element: class="fragment" -->
<small>pozvánka na event [Jest & Yarn](https://oss.institute/events/christoph-nakazawa)</small><!-- .element: class="fragment" -->
note:
- organizačně:
- nechodit po schodech nahoru ani dolů
- odchod z budovy jen s doprovodem
- předat Břéťovi pozvánku
- představit spolek
> Budujeme a vzděláváme komunitu frontendových vývojářů a designérů, a to již 10 let!!!!!!!!!!
- **pozvat Břéťu s Máchalem – organizátory**
- Vítáme nové spíkry! Máš-li zajímavé téma nebo případovku, nenechávej si ji pro sebe. [Call for papers AKA náležitosti na webu Frontendisti.cz](https://docs.google.com/forms/d/e/1FAIpQLSe4mba2CAA8eFSaCJtypDkAQzmVmuhSNAP7VwuOIqLj8xEySA/viewform)
---
# Letem swwwětem
note:
- 10 let, 21. února 2014: preprocesory (Martin Michálek: [Less](https://www.youtube.com/watch?v=d1fbvvleZYk), Michal Matuška: [Stylus](https://www.youtube.com/watch?v=yCx_yrsLbKE), Jonáš Krutil: [Sass](https://www.youtube.com/watch?v=Q4UCtuvMDTI))
---
## WWW minulém díle jste viděli
- Petra Nulíčková: [Když ptáčka lapají… aneb na co si dat pozor než příjmu nabídku](https://youtu.be/KDhjQviA-qM?si=JavAa1yr3NPCeZED)
- Radek Šír: [CORE WEB VITALS: Co nejvíce kazí metriku CLS](https://www.youtube.com/watch?v=3gYyW2752AI)
- [CSS Café](https://www.youtube.com/@9elements/videos) (en)
note:
- Petra sice nemohla dorazit, ale před časem nám prozradila spoustu tipů, na co si dát pozor, chystáte-li se na pohovor [v listopadu 22](https://youtu.be/KDhjQviA-qM?si=15dgd0eX8NSt6Smz): Když ptáčka lapají
- CSS Café: naposledy povídání o tom, jak lze pomocí CSS loupit uživatelská data (z formulářů)
- videa z FrontKonu! Kolik jste jich od listopadu zhlédli?
---
## WWWe výhledu
note:
---
## Dnes WWWečer
- **Josef Krajkář**, Seznam.cz
Vývoj TV aplikací v Reactu
- **Marek Velas**, [EDUPunk](https://edupunk.cz/)
Pracovní portfolio, které mluví za Vás: Umění prezentovat vlastní dovednosti a neztratit se.
- **Petr Koláček**, [Etnetera Core](https://www.etnetera.cz/)
CSS :has power
note:
- změna programu: Petra Nulíčková onemocněla, objeví se někdy příště
---
## Letem swwwětem aneb nowwwinky
note:
---
### Prohlížeče
note:
- prohlížeč od Seznamu mi na linuxu nefunuguje 🥺
- ale podíváme se na stav prohlížečů v době prvního srazu Frontendistů v Klubu cestovatelů
---
#### Stav prohlížečů 2/2014
- Internet Explorer: 11<!-- .element: class="fragment" -->
- Chrome: 33<!-- .element: class="fragment" -->
- Firefox: 27<!-- .element: class="fragment" -->
- Safari: 7.0<!-- .element: class="fragment" -->
note:
- IE11 ¼ roku starý!
- Google zrušil Chrome frame - plugin do IE6, který umožnil uvnitř prastarého IE6 surfovat v Chromu
- ještě ani rok od úmrtí mé milované a jistých ohledech stále nepřekonané Opery
---
#### Stav prohlížečů 2/2014
| prohlížeč | podíl |
| ---------- | ------- |
| Chrome | 36,48 % |
| IE | 17,34 % |
| Firefox | 14,88 % |
| Safari | 12,57 % |
| Android | 7,08 % |
| Opera | 4,21 % |
| UC Browser | 2,65 % |
---
#### Microsoft Edge 121
_vydán 25. ledna 2024_
note:
- Jako posledně… jdeme dál
---
#### Firefox 122
_vydán 23. ledna 2024_
- `:has` od verze 121
note:
- 119=>122
- Máme má (podpora `:has` ve FF od prosince) více dnes Petr Koláček
- `:has` je asi největší trhák loňského roku
---
#### Chrome 122
_vydán 14. února 2024_
- zjednodušený pravopis pro zanořování selektorů
```css=
/* původní zápis zanořených selektorů */
.card {
& h1 {
/* … */
}
}
/* od verze 120 (FF 117…) */
.card {
h1 {
/* … */
}
}
```
<!-- .element: class="c-text-sm fragment" -->
---
- `supports` pro `@import`
```css=
@import url("fallback-layout.css") supports(not (display: flex));
@supports (display: flex) {
...
}
```
<!-- .element: class="c-text-xs fragment" -->
note:
- 119=>122
- další posílení stylopisů => odklon od preprocesorů (které navíc toto nedokážou)
---
#### Safari 17.3
_vydáno 22. ledna 2024_
- `counter-set`
note:
- 17.1=>17.3
- dohání to, co uměly ostatní před 3 a více lety
- spousty oprav
---
## Zachyceno v síti
---
### [Interop](https://web.dev/blog/interop-2024)
- [Interop 2024](https://wpt.fyi/interop-2024?stable) => skoro 50 % hotovo,
- [Interop 2023](https://wpt.fyi/interop-2023?stable) => 83 % splněno
note:
- iniciativa prohlížečů postupovat pokud možno jednotně v implementaci nových funkcí
- FF vychází hůře, ale vinou nepodpory opravud pokročilých akcí s proměnnými vlastnostmi, chybějící podporou atributu `popover` a dalších, ovšem je únor a beta FF je na tom mnohem lépe
---
### Jquery 4.0
<img src="https://hackmd.io/_uploads/HytotVIoa.png" style="width: auto" height="400"><!-- .element: class="fragment" -->
note:
- zdravíme Rikiho
---
### Nativní funkce a mixiny v CSS
<iframe src="https://front-end.social/@mia/111920937380059792/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="600" height="500" allowfullscreen="allowfullscreen"></iframe>
---
```css=
@function --negative (--value) {
result: calc(-1 * var(--value));
}
html { padding: --negative(var(--gap)); }
```
note:
- toto není výsledná podoba, pouze návrh, jak bychom v budoucn mohli funkce a mixiny zapisovat
- související [diskuze W3C](https://github.com/w3c/csswg-drafts/issues/9350#issuecomment-1939628591)
---
```css=
@mixin --button (--face, --text, --radius) {
--background: var(--face, teal);
--color: color-mix(in lch, var(--text, white) 85%, var(--background));
--border-color: color-mix(in lch, var(--text, white) 80%, var(--background));
@result {
background: var(--background);
border: medium double var(--border-color);
border-radius: var(--radius, 3px);
color: var(--color);
padding: 0.25lh 2ch;
}
}
button[type='submit'] { @apply --button(rebeccaPurple); }
button.danger { @apply --button(maroon); }
```
<!-- .element: class="c-text-sm" -->
note:
- v Interops 2024 to zatím není
---
### Jak využít zanořování k tvorbě if/else selektorů
```css=
complex-selector {
if-styles;
:not(&) {
else-styles
}
}
```
note:
- [zdroj: Lea Verou](https://front-end.social/@leaverou/111920203377359401)
---
### [Scope v CSS](https://matuzo.at/blog/2023/100daysof-day101)
```css=
@scope(.card) {
.content {
border: 5px solid red;
}
}
```
note:
- zatím jen v Chromu za flagem, ale vypadá to slibně
---
#### Scope v CSS
```htmlembedded=
<div class="wrapper">
<div class="card">
<div class="content">
kaskádu nezastavíš
</div>
</div>
</div>
```
---
#### Scope v CSS
```css=
.card .content {
background-color: green;
}
.wrapper .content {
background-color: blue;
}
/* -> blue */
```
---
#### Scope v CSS
```css=
@scope (.card) {
.content {
background: green;
}
}
@scope (.wrapper) {
.content {
background: blue;
}
}
/* -> green */
```
note:
- nezvyšuje se specificita, `.content` má specificitu 0, 1 ,0
- scoping upřednostní pravidlo pro selektor, který je blíže ke stylovanému prvku
- celé to nabírá grády
- dokud nebude scoping, existuje [hack pomocí přepínačů proměnných vlastností](https://kizu.dev/cyclic-toggles/#and-nand-or-nor-xor-xnor)
- nebudu zabrušovat, skončil jsem s vyvrácenou sanicí u čtvrtého odstavce, navíc nemáme čas
- ukázky kódu lze přinejmenším použít na důkaz toho, že CSS je programovací jazyk
---
### KoutPen
---
Stephanie Eckles: [Nemálo husté užití `:is`, `:has`, `:not`](https://codepen.io/5t3ph/pres/KKEmMXR)
note:
- mrkněte i na [diskuzi pod příspěvkem](https://front-end.social/@5t3ph/111778445324803830), Bramus tam řeší výkonnost daných pravidel
- CodePen: vizuelně nic moc, ale ten kód!
---
Ana Tudor: [jednobarevné emoji pomocí CSS filtrů](https://codepen.io/thebabydino/pen/PoQEqxg)
note:
- 💗 💓 💞 💕 ❣️ 💘 💋 💯 🔥 🧡 💛 💚 💙 💜 🤎 🖤 🤍 💥 💔 💦
---
Díky, prezentace za chvíli na [@frontendisti](https://twitter.com/frontendisti)