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

pozycja elementu względem jego "dziadka"

Object Storage Arubacloud
0 głosów
410 wizyt
pytanie zadane 12 czerwca 2019 w JavaScript przez Luckyluck87 Użytkownik (660 p.)
edycja 12 czerwca 2019 przez Luckyluck87

Witam, 

Mam taki problem,

potrzebuje pobrać odległość od linka do lewej krawędzi przeglądarki. Robie to w javaScript za pomocą offsetLeft. Wszystko byłoby pieknie gdyby nie to że offsetLeft odnosi się do elementu nadrzędnego który ma "position: relative" a tak się składa że mój wspomniany link jest w znaczniku "<li>" który musi mieć również nadaną pozycję  "relative" .

Jak zrobić żeby "skoczyć" do kolejnego elementu nadrzędnego który ma pozycję relatywną jakim jest w moim przypadku "nav" , i właśnie jego względem chciałbym pobrać "offsetLeft" dla ".link". Próbuje za pomocą "offsetParent" ale coś robię źle, bardzo proszę o pomoc.

HTML:

<nav class="navbar">
    <div class="container">
      <div class="logo"></div>
      <div class="menu">
        <ul class="menu__list">
          <li><a href="" class="link">ZALOGUJ SIĘ</a></li>
        </ul>
      </div>
    </div>
</nav>

CSS: 

.navbar {

position: relative:
width:100%;
height: 100px;

}

li {

position: relative;

}

link {

font-size: 18px;

}

javaScript:

let link = document.querySelector('.link');

link.addEventListener('load', () => {

          console.log(link.offsetLeft)
          console.log(link.offsetWidth)
          console.log(link.offsetParent)
          console.log(link.offsetParent.offsetParent)


          leftPosition = link.offsetLeft + (link.offsetWidth / 2) - (zip.offsetWidth / 2);
          zip.style.left= leftPosition + 'px';

})

Powyższy skrypt zadziałałby gdyby nie to że element "li" ma "position: relative" , ale tak jak wspomniałem musi mieć. Bardzo będę wdzięczny za pomoc, pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 12 czerwca 2019 przez cz3ran Stary wyjadacz (13,380 p.)
wybrane 12 czerwca 2019 przez Luckyluck87
 
Najlepsza

Rozwiązaniem Twojego problemu będzie funkcja getBoundingClientRect. Dzięki niej dla dwóch elementów możesz pobrać, jaki jest ich offset względem okna (nie elementu rodzica). Po odjęciu od siebie tych wartości i wzięciu pod uwagę błędu związanego z szerokością elementu (czyli od otrzymanej różnicy powinieneś odjąc szerokość elementu ustawionego bardziej po lewej), otrzymasz interesujący Cie wynik.

Pozdrawiam

1
komentarz 12 czerwca 2019 przez Luckyluck87 Użytkownik (660 p.)
Super ! własnie kojarzyłem że jest taka funkcja tylko nie pamiętałem nazwy :)

Dziękuję bardzo, pozdrawiam
1
komentarz 12 czerwca 2019 przez cz3ran Stary wyjadacz (13,380 p.)
Ciesze się że mogłem pomóc :)

Podobne pytania

0 głosów
1 odpowiedź 1,046 wizyt
0 głosów
3 odpowiedzi 1,159 wizyt
pytanie zadane 10 czerwca 2017 w HTML i CSS przez michal Mądrala (5,560 p.)
0 głosów
2 odpowiedzi 1,399 wizyt
pytanie zadane 16 lipca 2016 w HTML i CSS przez Royd Obywatel (1,250 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...