[英]How can i remove the rellax class when the screen width is smaller than 810px?
[英]How to remove clone() rule in Javascript when screen width is smaller than
我一直在摆弄我的导航菜单,并决定当您向下滚动超过某个点时导航功能添加一个功能,即NAV向下滑入视口,这样用户不必向上滚动到页面顶部即可导航。 这是最近变得很流行的东西。
因此,我摆弄了一下,这个javascript做到了这一点(请注意,我一点也不精通jquery):
jQuery(document).ready(function($){
$(".menu_wrapper").before($(".menu_wrapper").clone().addClass("shrink"));
$(window).on("scroll", function () {
$("body").toggleClass("slidedown", ($(window).scrollTop() > 700));
});
});
现在,我将其读取为...重复或'clone'(另作一个).menu_wrapper元素,然后+在其上添加类.shrink ...并且仅当我们滚动超过700px时,我们才会看到此重复项由于.slidedown类而导致的NAV
CSS:
.shrink { position:fixed; top:-400px; left:0; width:100%; border-top: 0px solid #35d3c3; z-index:99999}
.slidedown .shrink { top:0;}
现在这可以正常工作100%,但是我很烦(但是这从来都不是顺风顺水!)现在,当我将视口更改为小于767px的屏幕宽度时,我遇到了问题-是的,我的网站具有响应能力,是通过使用CSS和javascript将我的资产净值更改为典型下拉列表(即使没有上述javascript /效果)的地方:
jQuery(document).ready(function($){
$('.menu_wrapper').prepend('<div id="menu-icon">Menu</div>');
$("#menu-icon").on("click", function(){
$("#menu").slideToggle();
$(this).toggleClass("active");
});
});
我的问题是,现在有一个重复的下拉式前置NAV(在另一个之上),如下所示:
一个NAV有效,但另一个不起作用...无论如何,当我的媒体查询达到“移动状态”(低于767px)并且NAV出现下拉菜单时,这就是我不想整个滑落的时候-effect-clone(上面发布的第一个jquery)的东西了。 当我的屏幕宽度小于767px时,我希望该规则几乎不存在或不适用。 我怎样才能做到这一点?
我已经尝试过以下一种显而易见的方法:
.shrink { display:none}
.slidedown .shrink { display:none}
几乎好像我已经中奖了,只剩下1个前置菜单:
但是当我单击它时什么也没发生-它不会向下滑动并显示菜单列表项。
但是我在想为javasacript添加一个规则:
jQuery(document).ready(function($){
$(".menu_wrapper").before($(".menu_wrapper").clone().addClass("shrink"));
$(window).on("scroll", function () {
$("body").toggleClass("slidedown", ($(window).scrollTop() > 700));
});
});
当我们获得低于767px的宽度时,我们忽略了clone()函数/规则等?
我已经完成了removeclass等的一些搜索,但是由于我是javascript的骨干人物,所以我可能做错了一切。
任何帮助,我将不胜感激?
由于您要基于某些视口尺寸隐藏该菜单,因此为什么不使用媒体查询?
@media all and (max-width: 766px){
.shrink{ display: none; }
}
要么
.shrink{ display: none; }
@media all and (min-width: 767px){
.shrink{ display: block; }
}
(那可能不是在那里使用的最佳宽度值或CSS属性,但这应该可以帮助您入门。)
编辑:如果您想在javascript中做整个事情, 那么matchMedia()
API也在那里。
如果ajm发布的CSS媒体查询方法对您不起作用,则可以在遇到媒体查询时尝试仅执行代码。 仅当宽度大于767px时, handleMediaQuery()
的代码才会运行;
//Media query listeners
var mql = window.matchMedia("(min-width: 767px)");
mql.addListener(handleMediaQuery);
handleMediaQuery(mql);
function handleMediaQuery(mql) {
if (mql.matches) {
// Do stuff here that you want done when the query matches
}
else {
// Do stuff here that you want done when the query does not match
}
}
有关更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.