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

Efekt migotania tekstu w HTML i JS

Object Storage Arubacloud
0 głosów
577 wizyt
pytanie zadane 4 czerwca 2022 w JavaScript przez Kanapkarz_leżący Nowicjusz (210 p.)

Witam wszystkich,

Mój problem przedstawia się następująco:

NAJPIERW ZAŁOŻENIE

chciałbym aby tekst bądź każdy element z klasą "blink" zmieniał swój kolor z czarnego na biały i na odwrót co sekundę. w celu skupienia uwagi użytkownika na pojedynczym elemencie na stronie

PRZYKŁADOWY ELEMENT:

<!-- NIE MOGŁEM ZNALEŹĆ JĘZYKA HTML W ZAKŁADCE DLATEGO XHTML -->

<div class="blink" id="startBlink">przykładowy tekst</div>

Przygotowałem również kod w JS z dołączoną do niego biblioteką jquerry którego zadaniem jest zmienianie koloru na biały jeżeli zmienna white jest równa false oraz na czarny jeżeli zmienna white jest równa true z tym że po każdej zmianie koloru funkcja BLINK  zmienia wartość white na false jeżeli równa jest true i na odwrót

KOD W JS

var button = document.getElementById("startBlink"); 
button.addEventListener('click', blink);

var white = false;

function blink()
{
    if(white = false)
    {
        $('.blink').css('color', 'white');
        white = true;
    }
    if(white = true)
    {
        $('.blink').css('color', 'black')
        white = false;
    }
}

Ale nie działa nic w tym kodzie w sensie kolor nie rusza z miejsca i tak szczerze mówiąc nie wiem zupełnie co się z tym dzieje. Więc pytanie brzmi: CO ZAWIODŁO?

 

2 odpowiedzi

+1 głos
odpowiedź 4 czerwca 2022 przez VBService Ekspert (252,660 p.)
wybrane 4 czerwca 2022 przez Kanapkarz_leżący
 
Najlepsza

Proponuje "podmieniać" klasy

<div class="blink" id="startBlink">przykładowy tekst</div>
.blink {
  cursor: pointer;
}
.blink--white {
  color: white;
  background-color: black;
}
.blink--black {
  color: black; 
  background-color: white;
}
const button = document.getElementById("startBlink"); 
button.addEventListener('click', blink);

function blink()
{
  if (button.classList.contains('blink--black'))
  {
    button.classList.remove('blink--black');
    button.classList.add('blink--white');
  } 
  else
  {
    button.classList.remove('blink--white');
    button.classList.add('blink--black');
  }
}

 

Tylko, że w ten sposób klikanie inicjuje efekt "blink", trzeba dodać np. setInterval.

1
komentarz 4 czerwca 2022 przez Kanapkarz_leżący Nowicjusz (210 p.)
Dzięki wielkie działa extra
komentarz 4 czerwca 2022 przez VBService Ekspert (252,660 p.)

Kliknięcie zaczyna efekt "blink" kolejne zatrzymuje i tak "w kółko" smiley

const button = document.getElementById("startBlink"); 
button.addEventListener('click', blink);

let clearID;

function blink()
{
  if (!clearID)
  {
    clearID = setInterval(() => {
      if (button.classList.contains('blink--black'))
      {
        button.classList.remove('blink--black');
        button.classList.add('blink--white');
      } 
      else
      {
        button.classList.remove('blink--white');
        button.classList.add('blink--black');
      }
    }, 1000);
  }
  else
  {
    clearInterval(clearID);
  }
}

 

komentarz 4 czerwca 2022 przez VBService Ekspert (252,660 p.)

Bardziej "płynny" efekt zamiany kolorów

.blink {
  cursor: pointer;
  transition: all 0.5s;
}
.blink--white {
  color: white;
  background-color: black;
}
.blink--black {
  color: black; 
  background-color: white;
}

 

komentarz 4 czerwca 2022 przez VBService Ekspert (252,660 p.)

Efekt blink tylko css

<div class="blink" id="startBlink">przykładowy tekst</div>
.blink {
  cursor: pointer;
  animation: blink 2s infinite;
}
@keyframes blink {
  0%, 49% {
    color: white;
    background-color: black;
  }
  50%, 100% {
    color: black; 
    background-color: white;
  }
}

 

komentarz 4 czerwca 2022 przez VBService Ekspert (252,660 p.)

Efekt blink css variables

<div class="blink blink--black-white">przykładowy tekst</div>
<div class="blink blink--red-white">przykładowy tekst</div>
.blink {
  cursor: pointer;
  margin: 1em;
  animation: blink 2s infinite;
}
.blink--black-white {
  --color1: white;
  --color2: black;
}
.blink--red-white {
  --color1: white;
  --color2: red;
}
@keyframes blink {
  0%, 49% {
    color: var(--color1);
    background-color: var(--color2);
  }
  50%, 100% {
    color: var(--color2); 
    background-color: var(--color1);;
  }
}

 

0 głosów
odpowiedź 4 czerwca 2022 przez Oscar Nałogowiec (29,290 p.)
W funkcji blink jeśli zmienna white jest false (to porównanie czy podstawienie?) zmieniasz white na true.

A potem zamiast użyć else sprawdzasz ponownie tą zmienną, tym razem czy jest true. Otoż jest. przed chwilą ją ustawiłeś.
komentarz 4 czerwca 2022 przez Kanapkarz_leżący Nowicjusz (210 p.)
Według mojego założenia w funkcji blink pierwszy if powinien sprawdzać czy white jest równe false i jeżeli tak to zmieniać kolor

 

więc przypuszczalnie jeżeli bym zmienił drugiego if'a na else to mogło by zadziałać ale spróbowałem przed chwilą i nie działa nadal
komentarz 4 czerwca 2022 przez Oscar Nałogowiec (29,290 p.)
Jeszcze musisz pamiętać, że = to podstawienie, porównanie to == lub ===.

Podobne pytania

0 głosów
2 odpowiedzi 462 wizyt
pytanie zadane 16 grudnia 2016 w JavaScript przez Paweł Kieryk Początkujący (450 p.)
0 głosów
1 odpowiedź 630 wizyt
pytanie zadane 4 grudnia 2018 w HTML i CSS przez Hardwell Dyskutant (8,980 p.)
0 głosów
0 odpowiedzi 238 wizyt
pytanie zadane 4 grudnia 2018 w HTML i CSS przez Hardwell Dyskutant (8,980 p.)

92,536 zapytań

141,376 odpowiedzi

319,451 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!

...