javascript - Automatically alter/reset jQuery's position().left depending on class -


i making menu new website , has following css:

margin: 20px 20px 0; 

f-nav class:

.f-nav {     position: fixed !important;     top: 0 !important;     left: 0 !important;     right: 0 !important;      margin: 0 !important; /* <------------ problem */      -webkit-transition: 0.2s ease-out !important;     -moz-transition: 0.2s ease-out !important;     -o-transition: 0.2s ease-out !important;     -ms-transition: 0.2s ease-out !important;     transition: 0.2s ease-out !important; } 

so code use make menu fixed on top of page, giving class .f-nav. accounts fancy menu line moves on mouse hover, on menu items:

window.onload = function () {     "use strict";     var menu = $("#menu");     menu.append("<div id=\"menu-line\"></div>");      var foundactive = false;     var activeelement;     var lineposition = 0;     var menuline = $("#menu #menu-line");     var linewidth;     var defaultposition;     var defaultwidth;      $("#menu > ul > li").each(function () {         if ($(this).hasclass("active")) {             activeelement = $(this);             foundactive = true;         }     });      if (foundactive === false) {         activeelement = $("#menu > ul > li").first();     }      defaultwidth = linewidth = activeelement.width();      defaultposition = lineposition = activeelement.position().left;      menuline.css("width", linewidth);     menuline.css("left", defaultposition);      $(window).scroll(function () {         if ($(this).scrolltop() > 62) {             menu.addclass("f-nav");             menuline.css("left", defaultposition + 20); // <------- warning         } else {             menu.removeclass("f-nav");             menuline.css("left", defaultposition); // <------- warning         }     });      $("#menu > ul > li").hover(function () {         activeelement = $(this);         linewidth = activeelement.width();         lineposition = activeelement.position().left;         menuline.css("width", linewidth);         menuline.css("left", lineposition);     }, function () {         if (menu.hasclass("f-nav")) {             menuline.css("left", defaultposition + 20);         } else {             menuline.css("left", defaultposition);         }         menuline.css("width", defaultwidth);     });  }; 

the above code works intended. changes line's position according margin. in firefox console following warning:

this site appears use scroll-linked positioning effect. may not work asynchronous panning; see https://developer.mozilla.org/docs/mozilla/performance/scrolllinkedeffects further details , join discussion on related tools , features!

is there way work around warning? want have menu line @ correct position when #menu margin changes, i've been stuck error day :/

any appreciated!

edit: jsfiddle - https://jsfiddle.net/41yu09t4/


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -