---
# System prepended metadata

title: 12. února ’25
tags: [frontendisti]

---

---
title: "12. února ’25"
tags: frontendisti
---

{%hackmd KXd2iUBpSjq7Ib2Z4h3LMg %}

<style>
    svg {
        padding: 1em;
        background-color: #1c1200;        
        color: #ffb000;
    }
</style>

<svg xmlns="http://www.w3.org/2000/svg" width="226.634" height="80" viewBox="0 0 59.964 21.167" id="frontendisti-logo">
  <path fill="#fff" d="M17.587 4.913V3.744h-5.499V9.43h1.38V7.277h3.55V6.108h-3.55V4.913Zm2.519 4.517V7.82h2.324l.861 1.609h1.576l-1.032-1.933c.626-.374.942-.958.942-1.755 0-.593-.203-1.08-.6-1.446-.407-.365-.95-.552-1.633-.552h-3.818V9.43zm0-4.509h2.438c.487 0 .78.317.78.837 0 .553-.293.886-.78.886h-2.438Zm9.042-1.323c-2.177 0-3.29 1.014-3.29 2.989 0 1.974 1.113 2.99 3.29 2.99h1.057c2.177 0 3.29-1.016 3.29-2.99 0-1.975-1.113-2.99-3.29-2.99zm.244 4.801c-1.398-.008-2.097-.617-2.097-1.812 0-1.21.7-1.812 2.097-1.812h.569c1.397 0 2.096.601 2.096 1.812 0 1.195-.699 1.804-2.096 1.812zm6.783 1.03V5.597l3.738 3.834h1.38V3.744h-1.38v3.834l-3.738-3.834h-1.38V9.43zm9.668 0V4.922h2.193V3.744H42.27v1.177h2.194V9.43z"/>
  <path fill="currentColor" d="M50.242 10.94h-1.38v5.686h1.38zm-4.521 1.177h2.194V10.94h-5.768v1.177h2.194v4.51h1.38zm-8.937.358c0-.44.236-.56 1.618-.56h.162c1.138 0 1.536.275 1.536.966h1.453c0-1.39-.877-2.087-2.623-2.087h-.813c-1.008 0-1.714.138-2.128.414-.414.284-.617.714-.617 1.307 0 .512.219.91.527 1.162.155.122.35.228.601.317.488.171.959.252 1.617.317h.016c.577.057.951.098 1.317.163.52.105.788.252.788.585 0 .235-.106.398-.309.471-.21.082-.642.122-1.3.122h-.163c-1.527-.032-1.763-.276-1.77-.983h-1.454c.008 1.495.617 2.07 2.859 2.103h.812c1.958 0 2.746-.6 2.746-1.713-.008-.74-.244-1.154-.747-1.414a3.53 3.53 0 0 0-.918-.276c-.422-.065-.715-.09-1.276-.147-1.275-.122-1.934-.292-1.934-.747m-4.101 4.151h1.38V10.94h-1.38zm-1.159-2.843c0-1.893-1.096-2.843-3.281-2.843H24.88v5.686h3.363c2.234 0 3.281-1.047 3.281-2.843m-1.437 0c0 .593-.146 1.016-.447 1.276-.3.268-.853.398-1.641.398H26.26v-3.348h1.739c.788 0 1.34.13 1.641.39.301.268.447.69.447 1.284m-8.277 2.843h1.38V10.94h-1.38v3.834l-3.738-3.834h-1.38v5.686h1.38v-3.834zm-12.088 0h5.5V15.45h-4.12v-1.147h3.477v-1.168h-3.477v-1.017h4.12V10.94h-5.5z"/>
  <path fill="currentColor" d="M6.51 19.184h-.535c-.59 0-1.01-.116-1.26-.348-.25-.232-.374-.679-.374-1.34v-4.555c0-.84-.193-1.428-.577-1.768-.384-.34-.888-.51-1.513-.51v-.16c.625 0 1.13-.17 1.513-.51.384-.338.577-.928.577-1.767V3.67c0-.66.124-1.108.375-1.34.25-.232.67-.348 1.259-.348h.536V0h-.429C4.814 0 3.885.313 3.296.938c-.59.625-.884 1.492-.884 2.599v4.662c0 .518-.103.87-.309 1.058-.205.188-.585.281-1.138.281H0v2.09h.965c.553 0 .933.094 1.138.282.206.187.309.54.309 1.058v4.662c0 1.108.294 1.974.884 2.599.59.625 1.518.938 2.786.938h.429ZM53.453 19.184h.536c.59 0 1.009-.116 1.259-.348.25-.232.375-.679.375-1.34v-4.555c0-.84.192-1.428.576-1.768.384-.34.889-.51 1.514-.51v-.16c-.625 0-1.13-.17-1.514-.51-.384-.338-.576-.928-.576-1.767V3.67c0-.66-.125-1.108-.375-1.34-.25-.232-.67-.348-1.26-.348h-.535V0h.428c1.269 0 2.197.313 2.787.938.59.625.884 1.492.884 2.599v4.662c0 .518.103.87.308 1.058.206.188.586.281 1.139.281h.965v2.09h-.965c-.553 0-.933.094-1.139.282-.205.187-.308.54-.308 1.058v4.662c0 1.108-.295 1.974-.884 2.599-.59.625-1.518.938-2.787.938h-.428Z"/>
</svg>


## Praha, Alma Career<br> 12. února ’25<!-- .element: class="text-center" -->

<small>Brno dnes: Jak CSS5 mění přístup k psaní webu</small><!-- .element: class="fragment" -->
<small>příště: 12. března</small><!-- .element: class="fragment" -->

note: 

- Brno: jak se CSS6 postupně proměňuje v plnohodnotný jazyk pro vizuální logiku
- březen: hospodský sraz???, ale 14. května Mews
- představit spolek 
  > Budujeme a vzděláváme komunitu frontendových vývojářů a designérů
- organizační náležitosti
- 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)


---

## WWW minulém díle jste viděli
<!-- .element: class="text-center" -->

- [Lukáš Chylík - Pozicování pomocí CSS anchor](https://www.youtube.com/watch?v=p8sQyt4YFdk)
<!-- .element: class="c-text-sm fragment" -->
- [Karel Navrátil - Dark patterny. Kde leží hranice mezi motivací a manipulací uživatelů?](https://www.youtube.com/watch?v=iHboYzm93m4)
<!-- .element: class="c-text-sm fragment" -->

[další videa na YT @Frontenditsti](https://www.youtube.com/@FrontendistiCz/videos)
<!-- .element: class="c-text-sm fragment" -->

note:

- [trénink CSS anchor](https://anchoreum.com/) à la [Flexbox froggy](https://flexboxfroggy.com/)

---

## Letem swwwětem

---

### Prohlížeče

**Firefox 135**
_vydán 4. února 2025_
<!-- .element: class="fragment" -->
**Chrome 133**
_vydán 29. ledna 2025_
<!-- .element: class="fragment" -->
**Safari 18.3**
_vydáno 27. ledna 2025_
<!-- .element: class="fragment" -->

note:

---

### Web platform status

---

#### ![štítek Baseline, běžně dostupné](https://hackmd.io/_uploads/rJEtkiR0C.svg =10%x) běžně dostupné: 3/2025

- [`contain: style`](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Using_CSS_containment)
- samostatné transformační vlastnosti: `translate`, `rotate`, `scale`
- `prefers-contrast`

note:

- běžně dostupné (widely available): 2,5 roku od chvíle kdy fičuru implementoval poslední z trojice CH, FF, SF

---

#### ![štítek Baseline, nově dostupné](https://hackmd.io/_uploads/BJaeQjR0A.svg =10%x) nově dostupné: 3/2025

- `::target-text`
<!-- .element: class="fragment" -->
- `scrollbar-width`, `scrollbar-gutter`
<!-- .element: class="fragment" -->
- [popover](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/popover)
<!-- .element: class="fragment" -->
- [`Promise.try()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/try)
<!-- .element: class="fragment" -->

note:

- nově dostupné: aktuální verze CH, FF, SF podporují

---

#### ![štítek Baseline, omezená dostupnost](https://hackmd.io/_uploads/Byn74jCCA.svg =10%x) omezená dostupnost: 3/2025

- [`text-box`](https://developer.chrome.com/blog/css-text-box-trim) (CH, SF); [KoutPen](https://codepen.io/web-dot-dev/pen/RNbyooE)
<!-- .element: class="fragment" -->
- [`attr()`](https://una.im/advanced-attr/) (CH)
<!-- .element: class="fragment" -->

note:

- leading ~ proklad řádků
- dostupné jen v některých prohlížečích

---

#### ![štítek Baseline, omezená dostupnost](https://hackmd.io/_uploads/Byn74jCCA.svg =10%x) omezená dostupnost: 3/2025

##### CSS funkce `attr()`

```htmlembedded!
<div data-clr="blue">My text color is blue</div>
<div>My text color is red (the fallback value)</div>
```
<!-- .element: class="c-text-xs" -->
```css!
div {
    color: attr(data-clr type(<color>), red);
}
```
<!-- .element: class="c-text-xs" -->

---

#### ![štítek Baseline, omezená dostupnost](https://hackmd.io/_uploads/Byn74jCCA.svg =10%x) omezená dostupnost: 3/2025

##### CSS funkce `attr()`

```html!
<div class="star-rating" data-rating="4.5"> ...
```
<!-- .element: class="c-text-xs" -->
```css!
.star-rating {    
    --percent-fill: calc(attr(data-rating type(<number>)) * 20%);
    background: linear-gradient(
        to right, 
        gold var(--percent-fill), 
        transparent var(--percent-fill)
    );
}
```
<!-- .element: class="c-text-xs" -->

[KoutPen](https://codepen.io/t_afif/pen/GgKYbee)
<!-- .element: class="fragment" -->

note:

- přednou hodnotu otypujete, čárkou se odděluje výchozí hodnota (podobně jako u fce `var()`)
    - nelze předávat URL, tj. obrázek na pozadí ne e
- hvězdičkové hodnocení pomocí `<input type="range">`

---

## Zachyceno v síti

---

### [Josh Comeau: Browser support](https://www.joshwcomeau.com/css/browser-support/)

note:

- Josh se zamýšlí nad přístupem k tak banální věci jako je podpora v prohlížečích
- ani 97% podpora nemusí znamenat bezproblémové použití
- přistupuje k věci z pohledu JS vývojáře, má celý kurz [CSS for JS devs](https://css-for-js.dev/)

---

### [Some Things You Might Not Know About Custom Counter Styles](https://css-tricks.com/some-things-you-might-not-know-about-custom-counter-styles/)

```css!
@counter-style style-fourth-item {
  system: fixed 4;
  symbols: "💠";
  suffix: " ";
}

li {
  list-style: style-fourth-item;
}
```
<!-- .element: class="c-text-xs" -->

note:

- [KoutPen](https://codepen.io/geoffgraham/pen/yyBjEQb)
- `@counter-style` nově dostupné od 9/2023 => běžně dostupné v 3/2026

---

```css!
@counter-style dice {
  system: additive;
  additive-symbols: 6 "⚅", 5 "⚄", 4 "⚃", 3 "⚂", 2 "⚁", 1 "⚀";
  suffix: " ";
}

li {
  list-style: dice;
}
```
<!-- .element: class="c-text-xs" -->

note:

- [KoutPen](https://codepen.io/geoffgraham/pen/azoGKxK)

---

### [Stefan Judis: Avoid uneven paragraph spacing](https://www.stefanjudis.com/blog/web-weekly-150/#avoid-uneven-paragraph-spacing)

![image](https://hackmd.io/_uploads/rJw0vNtY1l.png =50%x)


note:

- Stefan připomíná jednotku `lh` (nově dostupná od 11/2023 => běžně dostupná 5/2026)

---

### State of…

- [State of react 2024: výsledky](https://2024.stateofreact.com/en-US)
- [State of AI](https://survey.devographics.com/en-US/survey/state-of-ai/2025)

note:

- Kačka

---

### Nowwwinky z JS

[JavaScript Temporal is coming](https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/)

```js=
// The current date in the system's time zone
const dateTime = Temporal.Now.plainDateTimeISO();
console.log(dateTime); // e.g.: 2025-01-22T11:46:36.144

// The current date in the "Europe/Brno" time zone
const dateTimeInBrno = 
      Temporal.Now.plainDateTimeISO("Europe/Brno");
console.log(dateTimeInBrno);
// e.g.: 2025-01-22T05:47:02.555
```
<!-- .element: class="c-text-xs" -->

note:

- po 30 letech nový objekt, který (snad dříve než za 30 let) nahradí `Date()`
- na MDN přibylo [270 stránek](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal)
- FF Nightly a jen experimentálně
- na příštím brněnském srazu bude přednáška (záznam)

---

## Nástroje a udělátka

---

[rozhodovací mapa pro použití `alt`](https://www.w3.org/WAI/tutorials/images/decision-tree/)

---

[Color Find](https://5jqdmjxdwavv.trickle.host/)

note:

- trénink očí, včera do 26 úrovně

---

### [knihovna scrollovacích animací](https://nerdy.dev/notebook/scroll-driven-animations.html#scroll-driven-animations)

note:

- Adam Argyle v rámci svého [Nerdy notebook](https://nerdy.dev/notebook/index.html)

---

## KoutPen

<iframe height="400" style="width: 100%;" scrolling="no" title="Bouncy input radio" src="https://codepen.io/t_afif/embed/JojjRRB?default-tab=result&theme-id=dark" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
  See the Pen <a href="https://codepen.io/t_afif/pen/JojjRRB">
  Bouncy input radio</a> by Temani Afif (<a href="https://codepen.io/t_afif">@t_afif</a>)
  on <a href="https://codepen.io">CodePen</a>.
</iframe>

note:

- ještě jeden [KoutPen](https://cdpn.io/pen/debug/azoMYWg#) od Manuela Matuzoviće, který [vše rozepsal v článku](https://matuzo.at/blog/2025/scroll-to-top-button)

---

## Dnes wwwečer

- **[Tereza Kosnarová](https://www.terezakosnarova.cz/)**
Inkluzivní mindset - důležitý krok k tvorbě přístupných digitálních služeb?
- **Tomáš Litera**, [ Alma Career](https://www.almacareer.com/cz/kariera)
Jak předcházet chaotické organizaci npm skriptů
- **[Adam Kulhánek](https://adamkulhanek.cz/)**
Code & mind - Jak si udržet výkon, klid a sebevědomí v IT světě

note:

- přestávka po první přednášce: pizza!

---

Díky, prezentace v komentáři na [Meetup.com](https://www.meetup.com/frontendisti/)
