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
Post a Comment