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

chwtanie pseudoelementów w js

Object Storage Arubacloud
+1 głos
238 wizyt
pytanie zadane 30 marca 2021 w JavaScript przez kajman_Rrzeczny Użytkownik (960 p.)

Witom!

Jak "chwycić" pseudoelement ::after?

<div>
    text
    ::after
</div>

chcę złapać ten pseudoelement w js, by pozycjonować jego rodzicem div'em i nim samym (jeżeli w ogóle się da). 

próbowałem metodą querySelector na różne sposoby

const pseudoEl = document.querySelector("div.tooltip::after");

const pseudoEl = document.querySelector("div.tooltip:after");

const pseudoEl = document.querySelector("div.tooltip.after");

ale finalnie robię tooltip z nadole takim dziubkiem i czubek tego dziubka to mój punkt jakby, jeżeli ustawie pozycje x i y to ten punkt dziubka ma się tam ustawić a nie div w którym jest dziubek.

3 odpowiedzi

+3 głosów
odpowiedź 31 marca 2021 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 1 kwietnia 2021 przez kajman_Rrzeczny
 
Najlepsza

Pseudo elementy są abstrakcją stworzoną przez CSS - tych bytów nie ma w DOM, więc nie dostaniesz się do nich przez metody łapiące elementy, takie jak getElementBy* i querySelector[All].

Możesz odczytać style tego bytu metodą getComputedStyle, ale to nie zwróci Ci pseudo elementu jako takiego, bo go nie ma w DOM.


W jakiej sytuacji chcesz pozycjonować element, z którego wywodzi się jego pseudo element? Czemu nie złapiesz elementu docelowego, tylko chcesz to robić przez pseudo element?

komentarz 1 kwietnia 2021 przez kajman_Rrzeczny Użytkownik (960 p.)
edycja 1 kwietnia 2021 przez kajman_Rrzeczny

tak właśnie zrobiłem i osiągnąłem efekt jaki chciałem, myślę że źle rozumiałem sytuacje, po prostu chciałem spróbować każdą z opcji która mi wtedy przyszła do głowy, teraz już rozumiem że łapanie pseudo elementu i go pozycjonowanie jest bez sensu i że nie działa to w ten sposób.

efekt finalny to ten dymek na dole "link", dymek wy pozycjonowałem względem najechanego elementu, teraz chcę by dymek pojawiał się po np. 1 sekundzie

 

+1 głos
odpowiedź 31 marca 2021 przez Tnifey Pasjonat (24,190 p.)

pseudoelement jak w samej nazwie jest zawarte, nie istnieje jako element i nie da się go "chwycić" inaczej niż przez css :p 

możesz na parencie umieścić css variables, albo użyj wartości attr, które zrobią to co chcesz z pseudoelementem :P

https://codepen.io/felquis/pen/wHAxe

+1 głos
odpowiedź 31 marca 2021 przez VBService Ekspert (253,420 p.)

How to get pseudo element?

Get Pseudo elements using Javascript

Selecting and Modifying CSS Pseudo-Elements with JavaScript

window.getComputedStyle(
	document.querySelector('section'), ':before'
).getPropertyValue('left');

 

Podobne pytania

0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 10 marca 2023 w JavaScript przez MarcelM Początkujący (340 p.)
+1 głos
3 odpowiedzi 321 wizyt
pytanie zadane 25 marca 2021 w JavaScript przez dawid628 Początkujący (400 p.)
0 głosów
0 odpowiedzi 133 wizyt

92,580 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 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!

...