知识点:onmousewheel,addEventListener,scrollTo,setTimeout
过程:
1.body 宽,高钉死,100vw,100vh,overflow:hidden 使得不出现滚动条,不然不好看
2.图片放进去,排起来,(注意:默认空隙的处理,可以使用flex布局,空隙就不见了)
3.制作相对于视窗的按钮,几张图片就几个按钮,(position: fixed计算一下高度,可以利用calc计算top使得上下居中)
4.美化一下,css写写
5.先写简单的按钮事件
6.写监听滑动事件(onmousewheel在火狐无效,DOMMouseScroll只在火狐有效)
react在componentDidMount的时候监听
7.补充写一下火狐的
9.测试检查一下。
完成啦,啦啦啦~
我的截图:
缺点:这里我是一直对页面进行监听,导致滑动过快对时候动画效果开始执行对时间延后。体现为滑动对轻,整个就流畅一点。
ps:写这种带计算带页面,我觉得是考验思维的,你可以对这里的知识点不熟练,但是你必须得能理解每一步的加加减减。
1、什么是单例模式?
保证一个类只有一个实例, 并提供一个访问它的全局访问点。
2、如何实现一个单例模式
实现一个简单的单例模式:
创建一个类,类中有一个方法能够创建该类的实例对象,还有一个标记,记录是否创建过实例对象。创建过则直接用实例对象的引用。否则再次创建
3、什么情况可以使用单例模式(有什么用处)
(1)缓存数据(点击触发获取实验字段时)
(2)获取实例值不确定使用位置获取实例时是否已经有实例。每次调用都走一遍内部逻辑获取实例
使用场景:
Rn
h5页面中同一个路由下写在最上层时
每一个import进来的组件其实都属于一个单例模式
将变量缓存再windows上也是一个单例模式、但windows随意挂载变量的话后续不好维护
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>两数区间求和</title>
<style type="text/css">
.resCls{
width: 100%
height: auto
border: solid 1px #ddd
word-break: break-all /* 允许任意非CJK(Chinese/Japanese/Korean)文本间的单词断行 */
word-wrap: break-word /* 允许英文单词内断句换行 */
box-shadow: 4px 6px 8px #ccc
}
input{
box-shadow: 2px 4px 6px #ccc
width: 80px
}
p{
text-shadow: 4px 3px 4px #678
}
</style>
<script src="jquery-1.8.3.min.js"></script>
</head>
<body>
<p>输入两个非负整数:</p>
<input type="text" id="tx0" value="0" />
<input type="text" id="tx1" value="130" />
<input type="button" value=" 求和 " onclick="getSum()"/>
<br><br>
<span id="sum0"></span>
<div id="sum"></div>
<script>
$(function(){
//0~9的keyCode: 主键区48~57 , keyup/keydown:数字小键盘96~105 , keypress:全同
$("#tx0").bind("keypress",function(e){
if(!(e.keyCode>47 && e.keyCode<58)){
return false
}
})
$("#tx1").bind("keypress",function(e){
if(!(e.keyCode>47 && e.keyCode<58)){
return false
}
})
})
function getSum(){
var int0=Number($("#tx0").val())
var int1=Number($("#tx1").val())
if(isNaN(int0)){ //如果为“非数值”
return
}
if(isNaN(int1)){
return
}
var sum=0
var process=""
if(int0<int1){
for(var i=int0i<=int1i++){
sum+=i
process+=i+"+"
}
}else{
for(var i=int1i<=int0i++){
sum+=i
process+=i+"+"
}
}
process=process.substring(0,process.lastIndexOf("+"))+" = "
$("#sum").text(process + sum).addClass("resCls")
}
</script>
</body>
</html>