动态向下箭头,实现整屏翻页

本文介绍了如何通过HTML5 Canvas创建动态向下箭头,实现整屏翻页的效果。作者首先尝试了使用图片和Bootstrap图标,但最终选择了Canvas来达到理想效果。文中详细讲解了Canvas的使用过程以及动态效果和整屏翻页的实现方法,同时也提到了存在的滚动抖动等小问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实现效果
动态向下箭头
可通过单击图标或向下滚动鼠标进行整屏滚动

二、图标的实现过程
1.最开始我使用的方法是使用图片,但想要找到刚好适合的图片比较难
2.之后我使用的是bootstrap里的图标,不过效果也不尽人意

<span style="color: rgb(192, 192, 192);font-size: 80px;" class="glyphicon glyphicon-chevron-down"></span>

bootstrap的向下箭头图标
3.没办法,只好学习新技术了——html5 canvas。

 <div id="down">
 <canvas id="downCanvas" width="50" height="50">你的浏览器不支持canvas,请下载更新版本的浏览器
 </canvas>
 </div>

function drawDown() {
        var c = document.getElementById("downCanvas"),
            cxt = c.getContext("2d");
        cxt.beginPath();
        cxt.moveTo(5, 20);
        cxt.lineTo(25, 45);
        cxt.lineTo(45, 20);
        cxt.lineWidth = 5;
        cxt.strokeStyle = "gray";
        cxt.lineCap = 'round';
        cxt.lineJoin = "round";
        cxt.stroke();
        cxt.moveTo(5, 5);
        cxt.lineTo(25, 30);
        cxt.lineTo(45, 5);
        cxt.lineWidth = 5;
        cxt.strokeStyle = "gray";
        cxt.lineCap = 'round';
        cxt.lineJoin = "round";
        cxt.stroke();
    }
    drawDown()

三、动态效果的实现

@-moz-keyframes myMove {
  0% {padding-top:30px;}
  100% {padding-top:50px;}
}
@-webkit-keyframes myMove {
  0% {padding-top:30px;}
  100% {padding-top:50px;}
}
@-o-keyframes myMove {
  0% {padding-top:30px;}
  100% {padding-top:50px;}
}
@keyframes myMove {
  0% {padding-top:30px;}
  100% {padding-top:50px;}
}
#down {
  text-align: center;
  height: 150px;
  -moz-animation: myMove 1s linear infinite alternate; 
  -webkit-animation: myMove 1s linear infinite alternate;
  -o-animation: myMove 1s linear infinite alternate;
  animation: myMove 1s linear infinite alternate;
}

注意:应该把动画放在<span>上,而不是<div>上,以免影响下面的样式

三、整屏翻页效果的实现

我只在第一屏设置此效果,各位对号入座~~

 滚动鼠标:
    var absHeight = $(window).height();    
    var scrollTop = 0;
    $(window).scroll(function () {
        var st = $(window).scrollTop();
        if (st > 0) {
           $("#backToTop").css("display", "block");
        } else {
           $("#backToTop").css("display", "none");
        }
        //下滚且在第一屏
        if (st > scrollTop && scrollTop === 0) {
           $("html,body").animate({scrollTop : scrollTop + absHeight}, 1000);            
        }
        //上滚且在第二屏
        if (st < scrollTop && scrollTop === absHeight) {
           $("html,body").animate({scrollTop : scrollTop - absHeight}, 1000);             
        }
        //关键代码:判断鼠标中键的滚动方向
        scrollTop = st;
    });

    点击图标:
    $("#backToTop").click(function () {
        $("html,body").animate({scrollTop : absHeight}, 1000); 
    });

注意

1.$(document).height():整个网页的高度

$(window).height():浏览器可视窗口的高度

$(window).scrollTop():随着滚动条下拉被隐藏的部分的高度

当滚动条拉到最底时,有:
$(document).height()=$(window).height()+$(window).scrollTop();

2.$("html,body"):$("html")兼容IE和Firefox,$("body")兼容chrome和opera(自己试出来的~~)

简单的实现了这个功能,不过还有很多small bug, 例如滚动时的抖动问题,哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值