Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][JavaScript][CSS]regula css/js
eminiasty
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Jak napisac w css lub js reguly typu:

Np div "ABC"

jesli div "ABC" ma height > 30 to wysokosc =300

jesli w div "ABC" pojawia sie scroll(overflow y) to wyskosc =300

Ten post edytował eminiasty 17.04.2016, 15:39:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


W CSS się nie da.

W JS to zabawa z elem.offsetHeight i elem.scrollHeight.
Go to the top of the page
+Quote Post
eminiasty
post
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Pierwsze udalo mi sie rozwiazac tak:
  1. var cw = $('.menu').height();
  2.  
  3. if (cw>100){
  4. $('.menu').css({'width':'300px'});
  5. }


Drugie znalazlem cos takiego ale..:
  1. var element = document.querySelector('.menu');
  2. if( (element.offsetHeight < element.scrollHeight) || (element.offsetWidth < element.scrollWidth)){
  3. // your element have overflow
  4. element.style.width = "300px";
  5. element.style.background = "yellow";
  6. }
  7. else{
  8. //your element don't have overflow
  9. element.style.background = "red";
  10. }
  11.  


może po lekkiej modyfikacji nawet by dzialalo jak chce ale lecz, dziala to dopiero po odswiezeniu strony, otwieram menu jest czerwony
otworze sub menu(pokaze sie scroll z overflow) -powinno byc zolte i nie ma, a nie da sie w tym momencie zamknac odswiezyc strony i wykonac tego wtedy.. jak to obejsc?

Ten post edytował eminiasty 17.04.2016, 18:08:18
Go to the top of the page
+Quote Post
patwoj98
post
Post #4





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

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


Zobacz w konsoli co ma element .menu.
W którym miejscu ładujesz skrypt?
Jeśli u góry to proponuję dodać, aby załadowało po załadowaniu strony nasze jquery $(document).ready();
Go to the top of the page
+Quote Post
eminiasty
post
Post #5





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Wiec tak wyglada to tak:
http://viamarimar.cba.pl/green/#
(x przesuwa sie tylko przy malej szerokosci okna przegladarki)

-Jeśli zrozumiałem to element .menu ma dokladnie nav.menu

-skrypt uruchamia sie po otworzeniu jednego menu(slide),nastepnie w zaleznosci czy jest scroll czy nie chce by odrazu nastapilo jego "naprawienie" bez momentu przesuniecia

Dodalem to co proponujesz i tak:

1 przypadek - nawet sie nie otwiera slide menu:

  1. $( document ).ready(function() {
  2. var scrolled = false;
  3.  
  4. $('nav.menu').on('scroll', function() {
  5. scrolled = true;
  6. $('nav.menu').css('width','280px');
  7. });
  8. });


2 przypadek - efekt jest ten sam, zmiana wystepuje po przesunieciu scrola w menu dopiero

  1. $( document ).ready(function() {
  2. var scrolling = false;
  3.  
  4. $('nav.menu').on('scroll', function(e){
  5. if (!scrolling) {
  6.  
  7. if ($('.menu').scrollTop){
  8. $('nav.menu').css('width','280px');
  9. }
  10. else{
  11. $('nav.menu').css('width','none');
  12. }
  13.  
  14. }
  15.  
  16. });


-nav.menu dalem tylko ze wzgledu bo Pan up tak poradzil

Jakieś pomysły jak to obejść? a moze da się jakoś w CCS?

Ten post edytował eminiasty 18.04.2016, 12:44:54
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: 25.08.2025 - 01:56