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

question-closed Problem z menu sticky

Object Storage Arubacloud
0 głosów
327 wizyt
pytanie zadane 15 stycznia 2018 w HTML i CSS przez SzukającyPrzygód Bywalec (2,310 p.)
zamknięte 17 stycznia 2018 przez SzukającyPrzygód

Witam

Mam ostatnio taki problem z menu sticky a chodzi o samą funkcję sticky wspieraną przez JavaScript , ogólnie menu jest w divie "menu" a ten div jest wypychany przez drugi div "wypychacz" który jest powyżej tego diva "menu" gdzie jest menu i wszystko ładnie gra , div "menu" z menu przykleja się wtedy jak jego górna krawędź spotka się z krawędzią ekranu użytkownika , a kiedy dam w jednostce procentowej wysokość diva "wypychacz" który ma wypychać diva "menu" to przy zmianie wysokości przeglądarki zmienia się wysokość diva "wypychacz" i div "menu' przykleja się do krawędzi ekranu tak jakby div "wypychacz" nie zmienił swojej wysokości przy zmieni wysokości ekranu użytkownika i w czym jest problem , bardzo mi na tym zależy by ten problem wyeliminować laugh

komentarz zamknięcia: uzyskanie odpowiedz
komentarz 15 stycznia 2018 przez Jedras Maniak (54,860 p.)
Kod by się przydał.
komentarz 15 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)
<html>
<script src="jquery-1.11.3.min.js"></script>
<style>
body {
height: 2000px;
}
.wypychacz {
width:100%;
height:30%;
}
.menu { 	
position: absolute;
width: 100%; 
height:100%;		
}
stfhj{	
width: 99px; 	
position: fixed; 	 	
top: 0px;	
z-index: 0;
}
</style>
</html>
<div class="wypychacz"></div>
<div class="menu">
// tu jest menu
</div>
         
	<script>

	$(document).ready(function() {
	var NavY = $('.menu').offset().top;
	 
	var stickyNav = function(){
	var ScrollY = $(window).scrollTop();
		  
	if (ScrollY > NavY) { 
		$('.menu').addClass('stfhj');
	} else {
		$('.menu').removeClass('stfhj'); 
	}
	};
	 
	stickyNav();
	 
	$(window).scroll(function() {
		stickyNav();
	});
	});
	
</script>  

 

komentarz 15 stycznia 2018 przez pablop76 VIP (123,180 p.)
edycja 15 stycznia 2018 przez pablop76
Zmień bloczek na html bo wstawiłeś w plain-text
komentarz 15 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)
<html>
<script src="jquery-1.11.3.min.js"></script>
<style>
body {
height: 2000px;
}
.wypychacz {
width:100%;
height:30%;
}
.menu {     
position: absolute;
width: 100%; 
height:100%;        
}
stfhj{  
width: 99px;    
position: fixed;        
top: 0px;   
z-index: 0;
}
</style>
</html>
<div class="wypychacz"></div>
<div class="menu">
// tu jest menu
</div>
          
    <script>
 
    $(document).ready(function() {
    var NavY = $('.menu').offset().top;
      
    var stickyNav = function(){
    var ScrollY = $(window).scrollTop();
           
    if (ScrollY > NavY) { 
        $('.menu').addClass('stfhj');
    } else {
        $('.menu').removeClass('stfhj'); 
    }
    };
      
    stickyNav();
      
    $(window).scroll(function() {
        stickyNav();
    });
    });
     
</script>

 

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
edycja 16 stycznia 2018 przez pablop76
Brakuje kropki dla klasy stfhj w stylach css. Kod działa prawidłowo.

Zamknięcie html w nieprawidłowym miejscu. Brakuje tagów body doctype head.

STRUKTURA DOKUMENTU DO BANI
komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)

z pośpiechu bo przerabiałem kod bo normalnie miałem to rozbudowane na stronie z plikami .css , zaraz wysle poprawioną wersje laugh

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
Jak poprawisz to będzie działać zgodnie z oczekiwaniem.
komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<title>Problem z menu sticky</title>
<meta name="description" content="Menu sticky" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style>
	body {
	height:200%;
	}
	.sticky {    
	width: 99px;     
	position: fixed;          
	top: 0px;    
	z-index: 0;
	}
	.wypychacz {
	width:100%;
	height:30%;
}
</style>
<script>
	$(document).ready(function() {
	var NavY = $('.menu').offset().top;
	 
	var stickyNav = function(){
	var ScrollY = $(window).scrollTop();
		  
	if (ScrollY > NavY) { 
		$('.menu').addClass('sticky');
	} else {
		$('.menu').removeClass('sticky'); 
	}
	};
	 
	stickyNav();
	 
	$(window).scroll(function() {
		stickyNav();
	});
	});
</script>  	
</head>
<body>
	<div class="wypychacz"></div>
	<div class="menu">
	<!--  tu jest menu -->
	</div>
</body>
</html>

 

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
Jak zmniejszysz okno przeglądarki, to ją odśwież. NavY jest zapamiętany przed zmniejszeniem okna.
komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)
a jak mógłbym dokonać poprawy kodu bez konieczności odświeżania całej strony po zmienieniu wielkości okna
komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
Ale to nie przeszkadza. W praktyce nie manipulujesz oknem przeglądarki, tylko otwierasz stronę na innym urządzeniu.
komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)

a jak mogę napisać kod gdzie ten NavY nie jest zapominany i po zmianie wielkości okna się automatycznie aktualizuje , co muszę dodać do tego kodu w JavaScript , bardzo będę wdzięczny za pomoc laughlaugh bardzo mi na tym zależy tak czy siak

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
resize() jquery

 

komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)

Kiedy zamieniam


$(document).ready(function() { 
});

na

$( window ).resize(function() {
});

to przestaje działać efekt sticky

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)

Ja nie napisałem, żebyś tak zrobił. 

$(document).ready(function() { 
});

sprawdza czy został wczytany DOM i musi być użyta jeżeli script jest przed html chyba,że umieścisz go tuż przed zamknięciem body to wtedy możesz ją pominąć.

komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)

To w takim razie gdzie mógłbym dać 

$( window ).resize(function() {
});

 

komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
stickyNav() to funkcja która musi być odpalona gdy wykryty zostanie rezize.
komentarz 16 stycznia 2018 przez pablop76 VIP (123,180 p.)
W twoim kodzie jest odpalana raz gdy wczytano DOM , drugi raz dgy zachodzi scroll, i musisz dołożyć gdy resize
komentarz 16 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)
A jak to bedzie wyglądało w kodzie JavaScript co podałem ,ten kod co odpowiedzialny jest za sticky , zbytnio nie wiem w jakim momencie mam poprawic ten kod
komentarz 17 stycznia 2018 przez pablop76 VIP (123,180 p.)
	$(document).ready(function() {
	var NavY = $('.menu').offset().top;
	 
	var stickyNav = function(){
	var ScrollY = $(window).scrollTop();
		  
	if (ScrollY > NavY) { 
		$('.menu').addClass('sticky');
	} else {
		$('.menu').removeClass('sticky'); 
	}
	};
	 
	stickyNav();
	 
	$(window).scroll(function() {
		stickyNav();
	});
		$(window).resize(function() {
		NavY = $('.menu').offset().top; //GDY ZACHODZI ZMIANA ROZMIARU ONA USTAWIA NOWA WARTOŚĆ.
	});
	});

 

komentarz 17 stycznia 2018 przez SzukającyPrzygód Bywalec (2,310 p.)

dzieki laugh

1 odpowiedź

0 głosów
odpowiedź 15 stycznia 2018 przez pablop76 VIP (123,180 p.)
W javascript
komentarz 15 stycznia 2018 przez pablop76 VIP (123,180 p.)
Musisz pokazać skrypt

Podobne pytania

0 głosów
2 odpowiedzi 416 wizyt
pytanie zadane 14 marca 2018 w HTML i CSS przez Bembnias Początkujący (450 p.)
0 głosów
0 odpowiedzi 262 wizyt
pytanie zadane 9 kwietnia 2020 w JavaScript przez Whynotslave Początkujący (250 p.)
+1 głos
1 odpowiedź 340 wizyt
pytanie zadane 8 sierpnia 2021 w HTML i CSS przez NA Użytkownik (590 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

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

...