Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [css][html][jquery]Dopasowanie pozycji img do rozdzielczości
Forum PHP.pl > Forum > Po stronie przeglądarki
sinke
Witam,
mam taką sytuacje:
posiadam podstronę na której po lewej stronie mam kwadraciki z kolorami. Jak najedzie się na dany kwadracik to balonik co jest obok podświetla się na dany kolor:

i w jeden rozdzielczości jest okej, natomiast jak otwieram tą stronie w innej rozdzielczości balonik się rozwala


Czy jest jakiś sposób,aby w każdej rozdzielczości balonik był zawsze na tym samym miejscu?

Podświetlanie balonika na dany kolor zrobiłam za pomocą funkcji hover() w jQuery:
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2.  
  3.  
  4. $("li#st_kw1").hover(
  5. function () {
  6. $(this).append($('<img class="balon" src="includes/gfx/zamowienie/stadardowe/st_ba1.png">'));
  7. },
  8. function () {
  9. $(this).find("img:last").remove();
  10. }
  11. );
[JAVASCRIPT] pobierz, plaintext


fragment z HTML:
  1. <p>W naszej ofercie posiadamy możliwość nadruku na nastepujących balonach:</p>
  2. <img class="balon" src="includes/gfx/zamowienie/stadardowe/st_ba2.png" alt="" >
  3. <img id="stopa" src="includes/gfx/zamowienie/stopa.jpg" alt="" />
  4.  
  5. <ul>
  6.  
  7. <li><span class="kolor_nr">STANDARDOWE</span>
  8. <ul class="rodzaje">
  9. <li id="st_kw1"><img class="pod" src="includes/gfx/zamowienie/stadardowe/st_kw1.png" /></li>
  10. </ul>
  11. </li>
  12. </ul>


Żeby ten balonik pokazywał się z boku nadałam mu position: absolute, bo inaczej ten balon jest pod kwadraikami i cały układ się sypie:


kod css:
  1. .balon, #stopa { float: left; position: absolute; }
  2. .balon { z-index:-1; top: 30%; left: 64%; }
  3. #stopa { z-index:-2; top: 50%; left: 65%;}
Damonsson
Pokaż to online.
sinke
przykład online

U mnie na chromie z rozdzielczością: 1366 x 768 jest ok, ale niestety na firefoxie jest małe przesunięcie... ;/

Na większych rozdzielczościach np na 1920 x 1080 (print screen poniżej) już ten balonik po prawej jest rozłączony od stopki sad.gif, jak temu zapobiec, żeby w każdej rozdzielczości (i każdej przeglądarce też by było fajnie) był "przywiązany"? smile.gif

RiE
Dzieje się tak, dlatego że ustawiłeś procentową wartość.
Obrazek jest położony na wysokości 27% wysokości ekranu i 64% szerokości ekranu. Druga część obrazka ma inne wartości to też przy zmianie rozdzielczości obrazek leży w zupełnie innym miejscu
Obie części obrazka umieść w divie nadaj mu właściwość position:relative ustaw też wysokość(height) całego balona(balon+stopka).
Wewnątrz diva, balonowi nadaj position:absolute i top:0. Stopce- position:absolute i bottom:0. Jeżeli nie będą leżeć prawidłowo to balonowi dodawaj wartości stałe(nie %) top
  1. .balon {
  2. position:relative;
  3. height: //odczytaj wysokości obrazków gora+dol
  4. left:64%;
  5. top:24%;
  6. }
  7. .gora, .dol {
  8. position:absolute;
  9. }
  10. .gora {
  11. top:0;
  12. }
  13. .dol {
  14. bottom:0;
  15. }
  16.  
  17.  
  18.  
  19. <div class="balon">
  20. <img class="gora" />
  21. <img class="dol" />
  22. </div>


Oczywiście to tylko jeden ze sposobów rozwiązania tego problemu smile.gif
sinke
Po Twoich radach udało mi się ustawić balon i stopkę i teraz jest wszystko okej.

Tylko teraz jest inny problem, bo na ten balon co udało się ustawić, powinien się nakładać innego koloru balon w zależności od tego na jaki kolor najedzie się myszką na kwadraciki po prawej strony.
I tutaj jest użyty taki kod w jquery, że po najchaniu na kwadracik po nim powstaje img, który bym chciała przenieś na ten balonik na balonik po prawej stronie i tylko udaje mi się to zrobić po przez nadanie position absolute, a i tak nie da się do końca równo tego zrobić - taka sama sytuacja jak wyżej.

Struktura wygląda tak:
  1. <ul>
  2. <li><img src="kwadracik"></li>
  3. <ul>
  4.  
  5. // po najechaniu myszką na kwadracik jquery dodaje element w tym wypadku obrazek z balonikiem (który chce, żeby się nachodził z tym który jest po prawej stronie)
  6. <ul>
  7. <li><img src="kwadracik,jpg">
  8. <img src="balonik.jpg">
  9. </li>
  10.  
  11. <ul>
  12.  

próbowałam wcisnąć ten div, ale to też nie pomaga... sad.gif
RiE
A czy koniecznie musi być nałożenie innego balonika na istniejący? Nie może być zamiana domyślnego na inny?
W stylach:
  1. .czerwony {
  2. background:url() //adres obrazka
  3. width: //szerokość obrazka
  4. height: //wysokość obrazka
  5. }
  6. .zielony {
  7. background:url() //adres obrazka
  8. width: //szerokość obrazka
  9. height: //wysokość obrazka
  10. }
  11. //itd


JQuery:
  1. var kolor;
  2.  
  3. $("li").hover(
  4. function () {
  5. kolor = $(this).attr('id');
  6. $('.gora').addClass(kolor);
  7. },
  8. function () {
  9. $('.gora').removeClass(kolor);
  10. }
  11. );


HTML
W miejscu gdzie są wszystkie kwadraciki z kolorem do wyboru, nalezy zrobić coś takiego:
Nazwa ID musi odpowiadać nazwie klasy (#czerwony -> .czerwony)
  1. <ul>
  2. <li id="czerwony"><img src="czerwony-kwadracik.jpg"><li>
  3. <li id="zielony"><img src="zielony-kwadracik.jpg"></li>
  4. </li>
  5.  
  6. <ul>


Nazwy elementów przyjąłem z mojego poprzedniego posta. Jeżeli są inne to wystarczy podmienić na własne.
Zaznaczę jeszcze że jest to dość prymitywny sposób, ale szalenie prosty.
sinke
Dzięki za pomysł sprawdzę, teraz który lepszy, bo minutę przed Tobą udało mi się zrobić inne rozwiązanie za pomocą jquery ($this() zamieniłam na na nazwę klasy diva czyli na $(' .balon') ). I że teraz ten balonik co się nakrywa nie jest dodawany do <li> tylko do tego <div> w którym jest balonik + stopka.

W ogóle RiE dzięki za całą pomoc!!! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.