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

Skrócenie kodu CSS

0 głosów
389 wizyt
pytanie zadane 17 listopada 2016 w HTML i CSS przez mowmiheniek Stary wyjadacz (11,900 p.)

Witam.

Mam kod który wydaje się mi nadmiarowy, ale nieużywam jeszcze żadnego preprocesora css, żeby go skrócić.

Mam wyskakujący div z przyciskiem, po naciśnięciu przycisku div się chowa, tło się przesuwa i wyskakuje nowy div z nowym przyciskiem. 

.movie-bg1 {
    animation-duration: 4s;
    animation-name: zoom-out;
    animation-fill-mode: forwards;
}
@keyframes zoom-out {
    from {background-size: 250% 250%;}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 85% 0;}
}

Czy muszę powtórzyć ten kod 6 razy (tyle mam divów), aby tylko zmienić background-position (dla każdego diva inny)?

komentarz 17 listopada 2016 przez niezalogowany
Pokaż co masz, HTML + CSS, najlepiej z tym kodem powtórzonym 6x - z miejsca ktoś Ci wtedy powie czy da się to skrócić.
komentarz 17 listopada 2016 przez mowmiheniek Stary wyjadacz (11,900 p.)

HTML:

<section class="row how-working" id="bg-city">

                <div id="window-one" class="window-one item windows">
                     <button  id="btn-bg1" aria-label="Następny przykładowy post"><span> > </span></button>
                </div>

            <div id="window-two">
                <button  id="btn-bg2" aria-label="Następny przykładowy post"><span> > </span></button>
            </div>

            <div id="window-tree">         
                <button  id="btn-bg3" aria-label="Następny przykładowy post"><span> > </span></button>
            </div>

            <div id="window-four">
                <button  id="btn-bg4" aria-label="Następny przykładowy post"><span> > </span></button>
            </div>

            <div id="window-five">          
                <button  id="btn-bg5" aria-label="Następny przykładowy post"><span> > </span></button>
            </div>
</section>

CSS:

.movie-bg1, .movie-bg2, .movie-bg3, .movie-bg4, .movie-bg5 {
    animation-duration: 4s;
    animation-fill-mode: forwards;
}

.movie-bg1 {
    animation-name: zoom-out;
}
@keyframes zoom-out {
    from {background-size: 250% 250%;
          background-position: 0 0}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 85% 0;}
}
.movie-bg2 {
    animation-name: zoom-out2;
}
@keyframes zoom-out2 {
    from {background-size: 250% 250%;
        background-position: 85% 0;}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 80% 60%;}
}
.movie-bg3 {
    animation-name: zoom-out3;
}
@keyframes zoom-out3 {
    from {background-size: 250% 250%;
        background-position: 80% 60%;}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 100% 100%;}
}
.movie-bg4 {
    animation-name: zoom-out4;
}
@keyframes zoom-out4 {
    from {background-size: 250% 250%;
        background-position: 100% 100%;}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 10% 30%;}
}
.movie-bg5 {
    animation-name: zoom-out5;
}
@keyframes zoom-out5 {
    from {background-size: 250% 250%;
        background-position: 10% 30%;}
    50% {background-size: 100% 100%;}
    66% {background-size: 100% 100%;}
    to  {background-size: 250% 250%;
        background-position: 0 0;}
}

 

JS:

<script>
    document.getElementById('btn-bg1').addEventListener('click', function(){
        document.getElementById('bg-city').classList.add('movie-bg1');
        document.getElementById('window-one').classList.add('hiding');
        document.getElementById('window-two').classList.add('showing');
    });
    document.getElementById('btn-bg2').addEventListener('click', function(){
        document.getElementById('bg-city').classList.add('movie-bg2');
        document.getElementById('window-two').classList.remove('showing');
        document.getElementById('window-two').classList.add('hiding');
        document.getElementById('window-tree').classList.add('showing');
    });
    document.getElementById('btn-bg3').addEventListener('click', function(){
        document.getElementById('bg-city').classList.add('movie-bg3');
        document.getElementById('window-tree').classList.remove('showing');
        document.getElementById('window-tree').classList.add('hiding');
        document.getElementById('window-four').classList.add('showing');
    });
    document.getElementById('btn-bg4').addEventListener('click', function(){
        document.getElementById('bg-city').classList.add('movie-bg4');
        document.getElementById('window-four').classList.remove('showing');
        document.getElementById('window-four').classList.add('hiding');
        document.getElementById('window-five').classList.add('showing');
    });
    document.getElementById('btn-bg5').addEventListener('click', function(){
        document.getElementById('bg-city').classList.add('movie-bg5');
        document.getElementById('window-five').classList.remove('showing');
        document.getElementById('window-five').classList.add('hiding');
        document.getElementById('window-one').classList.add('showing');
    });
</script>

 

komentarz 17 listopada 2016 przez mowmiheniek Stary wyjadacz (11,900 p.)
Jeszcze jedno pytanie. Gdy cały cykl się wykona i wróci do window-one, animacja nie chce się ponownie uruchomić. Dlaczego?
komentarz 17 listopada 2016 przez mowmiheniek Stary wyjadacz (11,900 p.)
Już wiem dlaczego. Nie pousuwałem klas movie-bg z bg-city.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 3,592 wizyt
0 głosów
1 odpowiedź 456 wizyt
0 głosów
1 odpowiedź 483 wizyt
pytanie zadane 16 kwietnia 2022 w Python przez niezalogowany

93,428 zapytań

142,423 odpowiedzi

322,652 komentarzy

62,789 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...