Skip to content

Commit a89c365

Browse files
authored
[2025-03-31] Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS? (#266)
1 parent ab7a349 commit a89c365

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
layout: post
3+
title: "Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?"
4+
description: ""
5+
date: 2025-04-07T08:00:00+01:00
6+
published: true
7+
didyouknow: true
8+
lang: pl
9+
author: ptatarski
10+
image: /assets/img/posts/2025-04-07-starting-style/thumbnail.webp
11+
tags:
12+
- angular
13+
---
14+
Do tej pory, aby wykonać animację po przejściu z `display: none` na inną wartość (pozwalającą wyrenderować element) konieczne było użycie dodatkowych trików. Dzięki regule `@starting-style` ten krok jest już zbędny i można uzyskać ten sam efekt, stosując jedynie CSS.
15+
16+
Przykład:
17+
```css
18+
.popup {
19+
display: none;
20+
transition: display 0.7s, translate 0.7s;
21+
}
22+
23+
.popup.open {
24+
display: block;
25+
translate: 0 0;
26+
@starting-style {
27+
/*
28+
Tutaj definiujemy początkowy styl elementu zaraz
29+
po przejściu z display: none na display:block
30+
*/
31+
translate: 0 50vh;
32+
}
33+
}
34+
```
35+
Link do interaktywnego przykładu: [https://jsfiddle.net/xg2sLrwk/27/](https://jsfiddle.net/xg2sLrwk/27/)
36+
37+
Analogicznie możemy postępować z elementami, które domyślnie mają ustawione `display: none` takimi jak `popover` czy `dialog`.
38+
39+
Przykład:
40+
```html
41+
<button popovertarget="popover">Open Popover</button>
42+
<div popover id="popover">Popover</div>
43+
44+
<style>
45+
#popover::backdrop {
46+
background: black;
47+
opacity: .5;
48+
}
49+
50+
#popover {
51+
transition: background 3s;
52+
background: red;
53+
}
54+
55+
#popover:popover-open {
56+
/*
57+
Gdybyśmy po prostu ustawili tutaj background na blue, element
58+
wyświetliłby się niebieski pomijając animacje
59+
background: blue;
60+
*/
61+
@starting-style {
62+
background: blue;
63+
}
64+
}
65+
</style>
66+
```
67+
Link do interaktywnego przykładu: [https://jsfiddle.net/vazq9Lje/11/](https://jsfiddle.net/vazq9Lje/11/)
68+
69+
## Przydatne linki
70+
- [https://caniuse.com/mdn-css_at-rules_starting-style](https://caniuse.com/mdn-css_at-rules_starting-style)
71+
- [https://developer.mozilla.org/en-US/docs/Web/CSS/@starting-style](https://developer.mozilla.org/en-US/docs/Web/CSS/@starting-style)
69.3 KB
Loading

0 commit comments

Comments
 (0)