• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Animacja css z display none do display block

Object Storage Arubacloud
+1 głos
623 wizyt
pytanie zadane 1 kwietnia 2021 w HTML i CSS przez Szyszka Gaduła (3,490 p.)
Witam. Muszę zrobić animację powolnego przejścia z display none do display block. Jendak nie mam zielonego pojęcia, jak się za to zabrać. Prosił bym o potrzebne 'funkcje' css'owe i wizje działania. Muszę to zrobić w CSS'ie. Mówiąc powolne przejście, mam na myśli powolną zmiane widoczności diva.

3 odpowiedzi

+2 głosów
odpowiedź 1 kwietnia 2021 przez VBService Ekspert (252,660 p.)
wybrane 2 kwietnia 2021 przez Szyszka
 
Najlepsza

Why Transition properties does not work with display properties ?

CSS3 transition doesn't work with display property

display: none; removes a block from the page as if it were never there. A block cannot be partially displayed; it’s either there or it’s not. The same is true for visibility; you can’t expect a block to be half hidden which, by definition, would be visible! Fortunately, you can use opacity for fading effects instead.

<div class="gui">
  <header>Kreator klas</header>
  <hr />
  <input type="text" placeholder="Nazwa klasy, np. 8c" />
</div>
.gui {
  position: relative;
  background: #ffffff;
  width: 732px;
  height: 266.666666667px;
  border: 2px solid #636363;
  border-radius: 0px 100px 0px 100px;
  box-shadow: -30px 30px 30px #000000;
  left: 50%;
  top: 50%;
  opacity: 0;
  transform: translate(-50%,-50%);
  transition: opacity 2s;
}

 

Nie "używam" TypeScript  smiley, więc jest js.

window.onload = () => {
  const gui = document.querySelector('.gui');
  gui.style.opacity = 1;
}

 

komentarz 2 kwietnia 2021 przez Szyszka Gaduła (3,490 p.)
VBService, to działa. Ale ponieważ nie jest to zmienianie display, to mam kolejny problem. Mianowicie dwa divy .gui nie mogą na siebie wejść. Przez co tworzą się jeden pod drugim. Nie mogę ustawić ani position absolute, ani position fixed, ponieważ wtedy na niskich rozdziałkach przy absolute element nie jest na środku i całego nie widać, a przy fixed po prostu całego nie widać. Jest jakieś rozwiązanie?
komentarz 2 kwietnia 2021 przez VBService Ekspert (252,660 p.)
edycja 2 kwietnia 2021 przez VBService

Mianowicie dwa divy .gui nie mogą na siebie wejść. Przez co tworzą się jeden pod drugim.

css: z-index

Nie mogę ustawić ani position absolute, ani position fixed, ponieważ wtedy na niskich rozdziałkach przy absolute element nie jest na środku i całego nie widać, a przy fixed po prostu całego nie widać.

css: @media screen  [ przyk.  wink ]

komentarz 2 kwietnia 2021 przez Szyszka Gaduła (3,490 p.)

Zrobiłem tak:

div class="relative">
    <div class="gui" #IaddClass>
      <header>Kreator klas</header>
      <hr />
      <input type="text" placeholder="Nazwa klasy, np. 8c" />
  </div>
    <div class="gui" #IremoveClass>
      <header>Destruktor klas</header>
      <hr />
    </div>
  </div>

CSS:

.relative {
  position: relative;
}

a .gui ma position absolute. To działa. Dzięki!

+2 głosów
odpowiedź 1 kwietnia 2021 przez niezalogowany
komentarz 1 kwietnia 2021 przez niezalogowany

Myślę że możesz pokombinować dodatkowo z :

opacity , visibility

komentarz 1 kwietnia 2021 przez Szyszka Gaduła (3,490 p.)

@niezalogowany, mam coś takiego:

.gui {
  position: relative;
  background: #ffffff;
  width: 732px;
  height: 266.666666667px;
  border: 2px solid #636363;
  border-radius: 0px 100px 0px 100px;
  box-shadow: -30px 30px 30px #000000;
  left: 50%;
  top: 50%;
  transform: translate(-50%,-75%);
  transition: opacity 1s display 1s;
}

i html:

  <div class="gui" style="display: none;" #IaddClass>
    <header>Kreator klas</header>
    <hr />
    <input type="text" placeholder="Nazwa klasy, np. 8c" />
  </div>

Gdy zmienie w TypeScripcie display na block, to nie pojawia się ten div powoli. Dlaczego?

komentarz 1 kwietnia 2021 przez niezalogowany

Nie mam pojęcia laugh Nie używam TypeScriptcheeky 

Grzebnij głębiej może na Stacku ???

komentarz 1 kwietnia 2021 przez Szyszka Gaduła (3,490 p.)

Wydaje mi się, że tu sprawa ma się tylko z CSS'em. Bo w TypeScripcie wygląda to tak:

  showGui(gui: HTMLDivElement) {
    gui.style.display = 'block';
  }

Czyli divowi zmieniam tylko "display: none" na "display: block".

+1 głos
odpowiedź 1 kwietnia 2021 przez Comandeer Guru (600,330 p.)

Nie da się, display jest nieanimowalne. Musiałbyś pobawić się np. z visibility: hidden i opacity.

Jeśli koniecznie chcesz animować display, to musiałbyś całą logikę napisać ręcznie.

Podobne pytania

0 głosów
2 odpowiedzi 380 wizyt
0 głosów
3 odpowiedzi 203 wizyt
0 głosów
1 odpowiedź 1,787 wizyt
pytanie zadane 29 stycznia 2018 w HTML i CSS przez Kamil Różański Nowicjusz (170 p.)

92,536 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...