Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] [jQuery] Zmiana wysokości div-a
muumiin
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam!
Mam dwa div-y, które mają być elastyczne - wysokość zależna od zawartości, ale oba div-y mają być cały czas równej wysokości (tzn jeśli pierwszy div się rozciągnie, bo jest więcej tekstu, drugi też powinien się tak samo rozciągnąć.

Napisałam coś, co myślałam, że będzie poprawne, bo wzorowałam się na czymś, co działało, ale nie działa... Mój kod:

  1. $(document).ready(function (){
  2. $(window).resize(function (){
  3. $('.div2').css({
  4. height: ($('.div1').height()
  5. });
  6. });
  7. $(window).resize();
  8. });


Fajnie, żeby przeliczało wysokość przy każdym załadowaniu strony oraz przy zmniejszaniu okna. Zwykle div1 będzie większy od div2, więc głównie zależy mi na tym, żeby w tą stronę to działało

Ten post edytował muumiin 4.02.2015, 13:31:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/56m2tL80/

Nie wiem czy o taki efekt chodzi
Go to the top of the page
+Quote Post
muumiin
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


u mnie to coś nie chciało działać (IMG:style_emoticons/default/wink.gif)

ale coś takiego zadziałało:

  1. $(document).ready(function() {
  2. height2 = $('.div2').height()
  3. $('.div1').css({
  4. height: height2,
  5. });
  6. });


Ale trochę się miesza gdy zaczynam zwężać pole przeglądarki - za sprawą css-a pierwszy div się zmniejsza, a drugi zostaje taki sam. Jak to można poprawić? Żeby ta funkcja uruchamiała się za każdym razem, gdy zmienia się szerokość okna przeglądarki?

Ten post edytował muumiin 4.02.2015, 14:18:27
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. $(document).ready(function() {
  2. height2 = $('.div1').height();
  3. width2 = $('.div1').width();
  4. $('.div2').css({
  5. height: height2,
  6. width: width2
  7. });
  8.  
  9. $( window ).resize(function() {
  10. height2 = $('.div1').height();
  11. width2 = $('.div1').width();
  12. $('.div2').css({
  13. height: height2,
  14. width: width2
  15. });
  16. });
  17. });


  1. <div class="div1" style="background: red; width: 50%; height: 50%;">
  2.  
  3. </div>
  4. <div class="div2" style="background: black;">
  5.  
  6. </div>
Go to the top of the page
+Quote Post
muumiin
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


rad11, Ty to jesteś spec od jquery, już kolejny mój problem rozwiązujesz (IMG:style_emoticons/default/smile.gif)

Jeszcze jeden problem:
Jak to jest możliwe, że przy ładowaniu wyświetla za duży div2, a przy zmienianiu rozmiaru okna wszystko jest idealnie równe? a kod identyczny dla obu opcji (IMG:style_emoticons/default/sad.gif) teoretycznie pomaga, gdy w pierszym przypadku odejmę trochę pixeli, ale na każdej rozdzielczości (mam css dla 5 rozdzielczości) trzeba by odjąć inną ilość pixeli. A margin, padding i border mam ustawiony globalnie, próbowałam też zamieniać height() na innerHeight() i outerHeight(), z wszystkimi tymi opcjami ten sam problem (IMG:style_emoticons/default/sad.gif)
  1. $(document).ready(function() {
  2. height2 = $('.div2').height();
  3. $('.div1').css({
  4. height: height2
  5. });
  6. $( window ).resize(function() {
  7. height2 = $('.div2').height();
  8. $('.div1').css({
  9. height: height2
  10. });
  11. });
  12. });


Ten post edytował muumiin 4.02.2015, 16:12:45
Go to the top of the page
+Quote Post
rad11
post
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Moze sie tak dziac bo jeden element jest w % a drugi w px choc teoretycznie js powinien sobie to sam dobrze przeliczyc hmmm....

sproboj tak i powiedz czy poprawilo sie:
  1. $(document).ready(function() {
  2.  
  3. height2 = parseInt($('.div2').height());
  4. $('.div1').css({
  5. height: height2+'%'
  6. });
  7.  
  8. $( window ).resize(function() {
  9. height2 = parseInt($('.div2').height());
  10. $('.div1').css({
  11. height: height2+'%'
  12. });
  13. });
  14. });


Ten post edytował rad11 4.02.2015, 20:12:45
Go to the top of the page
+Quote Post
muumiin
post
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


to w ogóle nie chce działać... Kompletnie nie mam pojęcia o co chodzi - ten poprzedni kod działał jak trzeba tylko w części po $(window).resize. Ta pierwsza część powiększała diva aż za bardzo (IMG:style_emoticons/default/sad.gif)

ok, mam to:

  1. $(document).ready(function() {
  2. $(window).load(function () {
  3. height2 = $('.faq').height();
  4. $('.security').css({
  5. height: height2
  6. });
  7. });
  8. $( window ).resize(function() {
  9. height2 = $('.faq').height();
  10. $('.security').css({
  11. height: height2
  12. });
  13. });
  14. });


jak na razie działa (IMG:style_emoticons/default/wink.gif)

rad11, dzięki wielkie za cierpliwość do mnie, należałoby postawić Ci jakieś piwko (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:23