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

Przypisanie element.style.left do zmiennej

Object Storage Arubacloud
0 głosów
354 wizyt
pytanie zadane 5 lutego 2016 w JavaScript przez dwadolary Gaduła (4,650 p.)

Stawiam pierwsze kroki w JS. Piszę małą gierkę, coś w stylu Arkanoid i na początek zająłem się odbijaniem piłki od ścian. Z tym nie mam problemu, piłeczka odbija się ładnie i gładko, ale chciałbym, by startowała z określonego miejsca - konkretnej pozycji określonej w arkuszu stylów (top, left).

Moje pytanie - czy mogę przypisać style.left elementu do zmiennej? Nie wychodzi mi to, zamieniłem na element.offsetLeft i działało. Liczbę ze style.left chciałem wyciągnąć za pomocą parseInt(), taki był zamysł i nie ukrywam, zirytowałem się trochę, że nie mogę tego zrobić ;)

 

var pilka = document.getElementById("ball");
var a = pilka.style.left;
document.write(a);

 

1 odpowiedź

+1 głos
odpowiedź 5 lutego 2016 przez ScriptyChris Mędrzec (190,190 p.)

Najpierw ustaw position: absolute (pozycja będzie wtedy ustalona wg pierwszego rodzica, który ma ustawione position inne niż domyślne lub dla całego okna, jeśli takiego rodzica nie ma). Potem możesz sobie ustalić:

pilka.style.left = 0;
pilka.style.top = 0;

, czyli przy pozycjonowaniu absolutnym przykleisz piłkę do lewego górnego rogu ekranu (jeśli żaden rodzic elementu "piłka" nie ma domyślnego position - bodajże "static" - czyli musisz mieć np. absolute lub relative na tym elemencie względem którego chcesz ustawiać piłkę)..

https://css-tricks.com/almanac/properties/p/position/

komentarz 5 lutego 2016 przez dwadolary Gaduła (4,650 p.)

Nie do końca o to mi chodziło. W arkuszu stylów mam powiedzmy coś takiego:

#cont {
            position: relative;
            width: 600px;
            height: 600px;
            border: 1px solid black;
            
        }
        
 #ball {
            position: absolute;
            top: 100px;
            left: 100px;
            width: 40px;
            height: 40px;
            background-color: black;
            
        }

Kontener i kwadracik wewnątrz z pozycją względem kontenera. Chcę wydobyć wartości Top i Left do zmiennych x i y;

W skrypcie js coś takiego:

var ball = document.getElementById("ball");
        var x = ball.style.left;
        var y = ball.style.top;
        
        var a = ball.offsetLeft;
        var b = ball.offsetTop;
        
        document.write(x + " " + y + "|" + a + " " + b);
        
        

Wyświetla się:   | 100 100. Czyli nie mogę więc wyciągnąć wartości left i top z arkusza za pomocą var x = ball.style.left?

komentarz 5 lutego 2016 przez ScriptyChris Mędrzec (190,190 p.)
edycja 5 lutego 2016 przez ScriptyChris

Metody offset służą odczytowi pozycji elementu względem rodzica:

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft

Natomiast metody element.style.X (czyli w miejsce wstawiasz m.in.: left/top/position/color/background/width/height itd.) ustawiają Ci styl dla danego elementu.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style

[edit]

Do odczytu możesz również wykorzystać metodę window.getComputedStyle();

https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

Przykład:

	var pilka= document.getElementById('ball');
	
	console.log('element.offsetLeft: ', pilka.offsetLeft);
	console.log('window.getComputedStyle: ', window.getComputedStyle(pilka, null).getPropertyValue('left'));

Podobne pytania

0 głosów
2 odpowiedzi 142 wizyt
pytanie zadane 21 kwietnia 2016 w PHP przez verlix6 Nowicjusz (150 p.)
0 głosów
1 odpowiedź 177 wizyt
pytanie zadane 23 lutego 2020 w HTML i CSS przez Dylekter Użytkownik (670 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Brzeczy Początkujący (310 p.)

92,555 zapytań

141,402 odpowiedzi

319,553 komentarzy

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

...