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

Wykluczenie pseudoklas ::before i ::after z EventListenera 'mousemove'

+1 głos
221 wizyt
pytanie zadane 8 maja 2016 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)

Napisałem prostą aplikacje, która umożliwia dynamiczne pokazywanie aktualnej barwy koloru na podstawie palety HSL.

Wszystko działa, ale zauważyłem, że EventListener nasłuchujący poruszanie myszki na DIVie łapie również jego pseudoklasy ::before i ::after. Przez to, gdy myszką najadę na opisy osi X (Hue) i Y (Saturation), to wartości te zmieniają się (po prawej stronie DIVa), ale nieprawidłowo, ponieważ wychodzą poza zakres HSL.

W jaki sposób można wykluczyć pseudoklasy ::before: i ::after z EventListener'a? Tzn. co w IF wstawić, jakie atrybuty sprawdzać?

Cały kod: https://jsfiddle.net/Chriss92/q2mjp5xw/

Problematyczny element HTML:

<div id="colorPalette" class="colors color-input"></div>

::before i ::after w CSS:

.color-input::before
{
	content: "Saturation \2191";
	font-weight: bold;
	font-size: 20px;
	position: absolute;
	left: 190px;
}

.color-input::after
{
	content: "Hue \2192";	
	font-weight: bold;
	font-size: 20px;
	position: absolute;
	left: 600px;
	top: 200px;	
}

EventListener w JavaScript:

// when mouse moves
doc.getElementById('colorPalette').addEventListener('mousemove', function (ev)
{
			// clientX = current view of page in browser
	var h = (ev.clientX - ev.target.offsetLeft).toString(),
		s = (ev.clientY - ev.target.offsetTop).toString() + '%';
	
	/*l = tbv.innerHTML + '%';*/
	
	hsl = h + ',' + s + ',' + l;
					
	// set current color for output 
	colors.style.backgroundColor = 'hsl(' + hsl + ')';
	// set current Hue and Saturation value to HTML elements
	hue.innerHTML = h;
	saturation.innerHTML = s;
	
	console.log('EV TARGET: ', ev.target);
}, false);

 

1 odpowiedź

+3 głosów
odpowiedź 9 maja 2016 przez Comandeer Guru (607,330 p.)
wybrane 11 maja 2016 przez ScriptyChris
 
Najlepsza

Hmm… nie wiem, czy jest możliwość wykluczenia tego na poziomie JS, ale jest na poziomie CSS. Dla ::before, ::after dodaj pointer-events: none – wówczas nie powinny reagować na zdarzenia myszy.

Podobne pytania

0 głosów
1 odpowiedź 355 wizyt
pytanie zadane 13 czerwca 2016 w HTML i CSS przez Alterwar Dyskutant (7,650 p.)
0 głosów
1 odpowiedź 345 wizyt
pytanie zadane 7 października 2019 w HTML i CSS przez R.orlinski Mądrala (5,490 p.)
+1 głos
3 odpowiedzi 2,624 wizyt
pytanie zadane 13 września 2015 w HTML i CSS przez molaki Obywatel (1,700 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2459p. - CC PL
  9. 2184p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...