怎么优化滚动条事件?

时间:2020-11-29 17:09:41
代码时这样的:

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }

然后出现了一个问题,因为我开发环境是我的笔记本电脑,所以是小屏,虽然没在大屏上测试过,但我分析一下代码,肯定会出现这样的问题:如果屏幕太大,无法出现滚动条,那么里面的事件是无法触发,#two的内容就无法显示出来。
这种情况,该怎么办?强行“扩大”初始的窗口吗?(我初始的窗口是900px;)

附一下网站demo:  www.seventh77.com   密码:111111

5 个解决方案

#1


触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');

#2


引用 1 楼 showbo 的回复:
触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');


这样一打开网页就直接触发了,我是希望滚动时才触发。

#3


引用 2 楼 zpjshiwo77 的回复:
Quote: 引用 1 楼 showbo 的回复:

触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');


这样一打开网页就直接触发了,我是希望滚动时才触发。

问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发

#4


引用
问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发


哦,我懂了,之所以我打开网页就触发了,是我这边逻辑上有些问题。好的,谢谢了。

#5


引用
问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发


再次感谢,这个问题已经解决了,想再问一个问题:一般大屏幕,网页窗口的最高高度是多少像素啊?

#1


触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');

#2


引用 1 楼 showbo 的回复:
触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');


这样一打开网页就直接触发了,我是希望滚动时才触发。

#3


引用 2 楼 zpjshiwo77 的回复:
Quote: 引用 1 楼 showbo 的回复:

触发一下就好了,不管是否出现滚动条

$(window).bind("scroll",function () {
            var scrollTop = $(this).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                $("#two").slideDown("slow");
                $(".frame").slideDown(1500);
                $(".frame").css("height","560px");
                $("#background").css("height","1200px");
        }
     }) .trigger('scroll');


这样一打开网页就直接触发了,我是希望滚动时才触发。

问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发

#4


引用
问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发


哦,我懂了,之所以我打开网页就触发了,是我这边逻辑上有些问题。好的,谢谢了。

#5


引用
问题是你没有滚动条就无法触发了。。所以触发这个事件直接判断是否出现这种情况,如果出现就直接显示你的two。如果你想延后执行,可以用计时器setTime来延时触发


再次感谢,这个问题已经解决了,想再问一个问题:一般大屏幕,网页窗口的最高高度是多少像素啊?