2016-11-04 2 views
1

Das ist mein Code arbeiten:

$(window).on("load scroll resize", function() 
{ 
    if($(window).width() >= 767) 
    { 
     $(".boxlogo").css("display","block"); 
     $(".nav > li").css("margin-top","95px");` 

     var s = $(window).scrollTop(); 
     if(s > 1) 
     { 
      $(".boxlogo").css("width","140px"); 
      $(".navbar-color").css("background-color","#fff"); 
      $(".dropdown-menu > li > a") .css("color","#000"); 
      $(".dropdown > a ").css("color","#000"); 
      $(".nav > li > a").css("color","#000");      
      $(".dropdown-menu > li > a") .css("text-shadow","2px 2px #fff"); 
      $(".dropdown > a ").css("text-shadow","1px 1px #fff"); 
      $(".nav > li > a").css("text-shadow","1px 1px #fff"); 
      $(".nav > li").css("margin-top","62px"); 
      $(".dropdown-menu").css("background-color","#fff"); 
     } 
     else 
     { 
      $(".boxlogo").css("width","200px"); 
      $(".navbar-color").css("background-color","transparent");     
      $(".dropdown-menu > li > a") .css("color","#fff"); 
      $(".dropdown > a ").css("color","#fff"); 
      $(".nav > li > a").css("color","#fff"); 
      $(".dropdown-menu > li > a") .css("text-shadow","1px 1px #000"); 
      $(".dropdown > a ").css("text-shadow","1px 1px #000"); 
      $(".nav > li > a").css("text-shadow","1px 1px #000"); 
      $(".dropdown-menu").css("background-color","transparent"); 
      $(".nav > li").css("margin-top","96px"); 
     } 
    }//if windows 
    else { 
     $(".boxlogo").css("display","none"); 
     $(".nav > li").css("margin-top","5px"); 
    } 
});//scroll resize*/` 

Das Problem ist, dass:

$(".boxlogo").css("display","block"); 
$(".nav > li").css("margin-top","95px"); 

nicht, wenn die Fensterbreite 767px ist aber bei 784px ... warum ?? Das ist wichtiger, weil es der Punkt ist, an dem das Menü den Stil ändert. Ich habe versucht, zu verwenden, wenn ($ (window) .innerWidth()> = 767) aber das Problem weiter bestehen. Ich versuche es auch mit css @media, aber überhaupt nicht. Ich benutze Bootstrap.

+0

Versuchen Sie zuerst, einen Ausdruck der relevanten Eigenschaften hinzuzufügen, die Sie benötigen. – FDavidov

Antwort

0

Anstatt $(window).width() oder etwas Ähnliches zu verwenden, können Sie die Eigenschaft document.documentElement.clientWidth versuchen, die die Dokumentbreite (ohne Bildlaufleiste) zurückgibt. Zumindest funktioniert das für mich in einem ähnlichen Fall und über Browser hinweg, soweit ich das beurteilen kann.

+0

Lesen Sie [diese SO-Antwort] (http://stackoverflow.com/a/7205786/1891677) für eine gute Erklärung, was 'document.clientWidth' zurückgibt und wann. –

+0

Außerdem versuchen sie, eine Medienabfrage in ihrem CSS abzugleichen. Ihr Code funktioniert nur, wenn OP auf Seiten ohne Bildlaufleiste erwartet wird und wird sich schlecht benehmen, wenn eine Bildlaufleiste vorhanden ist, wenn der aktuelle Browser die Seite im Desktop-Modus (mit ausgezogenen Seitenleisten) darstellt. –

+0

@AndreiGheorghiu 'document.clientWidth' gibt undefined zurück, weil es nicht existiert. Ich sprach über 'document.documentElement.clientWidth'. Jedenfalls habe ich nicht gesagt, dass dies die perfekte Lösung für alle ist, aber es ist einen Versuch wert. In meinem Anwendungsfall funktioniert es absolut perfekt in IE11, EDGE, FF, Chrome und Brave ... mit oder ohne sichtbaren Bildlaufleisten. Also sehe ich keinen Grund, es nicht zu versuchen. – Flyer53