[英]Fixed div on scroll
我正在尝试创建一个 div,它只会在滚动时获取一个类,并且当 scroll 的值为 210 时。我有下一个代码:
$(document).ready(function() {
var pageWidth = $(window).width();
if(pageWidth > 700){
var contentLeft = $('#content-left');
var height = 210;
$(window).scroll(function () {
if ($(window).scrollTop() < height) {
contentLeft.attr('class', 'content-left');
} else {
contentLeft.attr('class', 'content-left leftContentFixed');
}
});
}
});
我尝试仅在台式机上应用它。 因此,如果它在智能手机或平板电脑上,我不需要 leftContentFixed 类。
如果我尝试类似的东西:
$(document).ready(function() {
var pageWidth = $(window).width();
if(pageWidth > 700){
alert("Bigger than 700");
}else{
alert("Smaller than 700");
}
});
比它完美,但用我的代码它不起作用。 尽管屏幕小于 700,但添加了 leftContentFixed 类。
有什么建议吗?
您需要在resize
事件时检查屏幕大小,并在用户滚动页面时检查其值。 您可以创建mobile
变量并使其true/false
取决于屏幕大小,然后在scroll
回调中检查其值并选择正确的类。
$(document).ready(function() { var pageWidth = $(window).width(), height = 210, contentLeft = $('.content-left'), mobile = false; $(window).on('load resize', function() { pageWidth = $(this).width(); // Save mobile status if (pageWidth > 700) { mobile = false; } else { mobile = true } }) $(window).on('scroll', function() { if ($(window).scrollTop() > height) { // Set default class var _class = 'content-left leftContentFixed'; // If mobile then modify class if (mobile) { _class = 'content-left'; } contentLeft.attr('class', _class); } else { var _class = 'content-left'; contentLeft.attr('class', _class); } }); });
html { height: 2000px } .content-left { background: gold; width: 50px; height: 100px; } .content-left.leftContentFixed { position: fixed; top: 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="content-left"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.