Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS] Div Który nie przesuwa innych.
Forum PHP.pl > Forum > Przedszkole
Monter08
Witam,
Próbuje zrobić menu które tnie sobie obrazek i ustawia element normalny hover, i mam mały problem z ustawieniem pozycji każdego elementu w menu, otóż przycisk hover jest trochę szerszy niż w spoczynku i podczas gry najeżdżam myszką na element przycisk się powiększa i przesuwa inne divy, jest to strasznie uciążliwe i nie mam pomysłu jak sobie z tym poradzić. Czy jest jakiś sposób aby ustawić żeby div nie działał na inne (tzn nie przesuwał ich). Jeszcze jedno pytanie z innej beczki, jaki sposób jest najlepszy to pozycjonowania elementów, position: relative to dobry pomysł?
jg44
1) Najlepiej wrzuć kod*, będzie łatwiej dla wszystkich. Najprościej to chyba byłoby ustawić szerokość przycisku w spoczynku do takiej samej szerokości jak szerokość hover.
EDIT: albo wrzuć to menu do pojemnika odpowiedniej szerokości (czyli takiej jak ten przycisk hover), wtedy nic nie będzie Ci się przesuwać.

2) position: relative; to bardzo dobry pomysł.


___________________
* Bo nie wiem, czy Cię dobrze zrozumiałem.
Monter08
Dobrze mnie zrozumiałeś, z tym żeby ustawić takie same szerokości to właśnie wpadłem, przed przeczytaniem Twojego postu, lecz nadal mam problem, ponieważ gdy używam position: relative; przesuwam obiekt powiedzmy o 200px w górę, lecz przesuniecie diva obok nadal zostaje, chodzi mi tutaj tekst który przesunął się w divie.
Coś wydłubałem żeby pokazać tutaj.
jg44
Hmm, przyznam, że teraz jednak przestałem rozumieć. Przy najeżdżaniu na menu nic się nie przesuwa ani nie podskakuje. Napisz dokładnie, bez skrótów myślowych o co Ci chodzi, bo jakoś nie umiem skumać smile.gif
Przede wszystkim nie rozumiem tego zdania:
Cytat
przesuwam obiekt powiedzmy o 200px w górę, lecz przesuniecie diva obok nadal zostaje, chodzi mi tutaj tekst który przesunął się w divie.

W szczególności co to znaczy "przesunięcie diva obok nadal zostaje"?
wink.gif
Monter08
Chodzi mi dokładnie o to, zauważ że "O nas" przewraca wszystko w divie i idzie na górę, chciałbym tylko, żeby nie ruszał innych.
jg44
Ok, to teraz napisz, jakiej używasz przeglądarki. Ja używam IE9, sprawdzałem też w najnowszym Firefoxie (chyba beta 10, czy coś takiego), i nic mi się nie przewraca ani nie przesuwa, wszelkie divy stoją tak jak stały. A sam przycisk ładnie wygląda... wink.gif

EDIT: ok, jednak widzę, co jest źle. Dałeś
  1. display: inline;
dla elementów menu?
Monter08
Niestety ale nie, efekt jaki chce uzyskać to menu poukładać wokół loga, poprzez position: relative.
jg44
Aa, to trzeba było mówić od razu, że wokół loga wink.gif
W takim układzie zrobiłbym to tak, że każdy element, który ma być linkiem (czyli pozycją menu) wstawiłbym do odpowiedniego pudełka (czyli tyle pudełek, ile linków) i wszystko wypozycjonował wokół loga.
Oczywiście wielkość pudełka musi być odpowiednia, żeby chmurki Ci się mieściły i nie powodowały podskoczeń inncyh warstw. Przykładowy kod dla 6 linków (w tym przypadku zamiast position: relative; lepiej użyć float: left/right;):
  1. #strona
  2. {
  3. width: 600px;
  4. height: 300px;
  5. background: yellow;
  6. margin: 20px auto;
  7. }
  8.  
  9. #logo
  10. {
  11. width: 100px;
  12. height: 50px;
  13. background: green;
  14. float: left;
  15. }
  16.  
  17. #gora
  18. {
  19. width: 100px;
  20. height: auto;
  21. background: #099;
  22. margin-left: 50px;
  23. }
  24.  
  25. #srodek
  26. {
  27. width: 200px;
  28. height: auto;
  29. background: #079;
  30. clear: both;
  31. }
  32.  
  33. #dol
  34. {
  35. width: 100px;
  36. height: auto;
  37. background: #059;
  38. clear: both;
  39. margin-left: 50px;
  40. }
  41.  
  42. #link1
  43. {
  44. width: 50px;
  45. height: 20px;
  46. background: cyan;
  47. float: left;
  48. }
  49.  
  50. #link2
  51. {
  52. width: 50px;
  53. height: 20px;
  54. background: magenta;
  55. float: right;
  56. }
  57.  
  58. #link3
  59. {
  60. width: 50px;
  61. height: 20px;
  62. background: blue;
  63. float: left;
  64. margin-top: 15px;
  65. }
  66.  
  67. #link4
  68. {
  69. width: 50px;
  70. height: 20px;
  71. background: red;
  72. float: right;
  73. margin-top: 15px;
  74. }
  75.  
  76. #link5
  77. {
  78. width: 50px;
  79. height: 20px;
  80. background: grey;
  81. float: left;
  82. }
  83.  
  84. #link6
  85. {
  86. width: 50px;
  87. height: 20px;
  88. background: orange;
  89. float: right;
  90. }


Strona:
  1. <article id="strona">
  2. <section id="gora">
  3. <section id="link1">
  4. Link 1
  5. </section>
  6.  
  7. <section id="link2">
  8. Link 2
  9. </section>
  10. </section>
  11.  
  12. <section id="srodek">
  13. <section id="link3">
  14. Link 3
  15. </section>
  16.  
  17. <section id="logo">
  18. Logo
  19. </section>
  20.  
  21. <section id="link4">
  22. Link 4
  23. </section>
  24. </section>
  25.  
  26. <section id="dol">
  27. <section id="link5">
  28. Link 5
  29. </section>
  30.  
  31. <section id="link6">
  32. Link 6
  33. </section>
  34. </section>
  35. </article>

Chyba że nie o to Ci chodzi, to krzycz wink.gif
by_ikar
Poukładać do okoła loga? Co przez to rozumiesz? Jeżeli chcesz to poukładać tak, że jeden element wchodzi na drugi, to żeby jeden element nie przesuwał drugi, to najlepiej jak użyjesz pozycjonowania absolutnego, wyłączając jakby dane elementu. Dzięki czemu jeden będzie mógł być blisko drugiego jednocześnie nie wpływając na jego pozycje. Elementy pozycjonowane relatywnie, zachowują się jak bloki i jeżeli ułożysz je obok siebie, i zmienisz dynamicznie któremuś wysokość/szerokość, to automatycznie pozostałe elementy zostaną przesunięte i to jest w sumie całkiem normalne zachowanie tych elementów. Nadaj elementowi nadrzędnemu position:relative. A elementom które są jego dziećmi (czyli twoje przyciski menu), nadaj position:absolute i baw się w przesuwanie. U mnie aktualnie w 1920x1080 przyciski wyglądają tak: http://dl.dropbox.com/u/36249378/taft.png i pozycja tych elementów jest zależna od rozdzielczości przeglądarki. Nie wiem do końca jaki efekt chcesz osiągnąć, ale raczej nie taki: http://dl.dropbox.com/u/36249378/taft2.png
Monter08
Dziękuje wszystkim za pomoc smile.gif Zrobiłem to tak: ustawiłem margin: 0 auto; na ul żeby na różnych rozdzielczościach nie skakało i pozycja relative żeby była taka sama i działa 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.