前言

我最近在一点一点研究我 博客园 的前端代码,算是边敲边学吧,还算是挺有意思的。

是这样的,之前见过一个效果,就是先显示博客的背景,然后博客主界面缓缓的上升到正确位置,于是乎,干他!开撸代码!

各位来自五湖四海的大帅哥小姐姐懂我的意思就行啊哈哈,原谅我是个灵魂画手

实现过程

到这可能有的人说,jQuery里面不是有slideUp和slideDown方法吗?兄台,且听我慢慢道来~

slideUp():

slideUp() 方法以滑动方式隐藏被选元素。

注意:隐藏的元素不会被完全显示(不再影响页面的布局)。

来自菜鸟教程jQuery slideUp() 方法

注意关键词!以滑动的方式隐藏被选元素!

我刚开始没看到,直接用上,效果吓哭我这个弱鸡了,主体界面直接没了!

来,上个demo,诶?老夫的demo呢?马上来!为了代码能简洁,css写成了内联样式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>滑动上升demo</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<style type="text/css">
/*body背景图*/
body {
/*设置背景图片*/
background: rgba(12, 100, 129, 1) url('https://img2020.cnblogs.com/blog/1916157/202003/1916157-20200320155023660-1382835829.png') fixed no-repeat;
background-size: cover;/*完全覆盖整个body*/
}
/*页面主体*/
#home {
margin: 0 auto;/*实现布局居中*/
width: 80%;/*原始65*/
background-color: rgba(245, 245, 245, 0.7);/*背景颜色*/
padding: 30px;/*内边距*/
margin-top: 200px;/*上边外延边距*/
margin-bottom: 50px;/*下边外延边距*/
box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);/*阴影效果*/
border-radius:30px/*圆角化*/;
}
</style>
</head>
<body>
<div id="home"></div>
<script type="text/javascript">
$("#home").css("margin-top",window.innerHeight);//将页面主体放到刚好屏幕下方一点的位置
$("#home").slideUp(3000);
</script>
</body>
</html>

由于gif展示效果太差,大家可以复制这段html代码去看下嘿嘿

slideDown():

slideDown() 方法以滑动方式显示被选元素。

注意:slideDown() 适用于通过 jQuery 方法隐藏的元素,或在 CSS 中声明 display:none 隐藏的元素(不适用于通过 visibility:hidden 隐藏的元素)。

诶诶?这个方法似乎也不错,但是就是从上到下滑动出现的,似乎有点卡顿(可能因为我电脑关系吧,但此处是为了讲我的高帧方法,啊哈哈不好不好)

将上面代码中的javascript的部分替换为以下两行代码就行啦

$("#home").css("display","none");
$("#home").slideDown(3000);

重头戏来了

我们来重写一个方法来实现这个效果,不要怕,让我一点点的给你分析

这个上升滑动动画的实质就是margin-top值的改变,至于为什么,就不过多细讲啦,相信大家都知道(其实是因为我讲不清,有兴趣的同学可以搜下css盒子模型)

动画其实就是一帧一帧的画面,那么我们让它的margin-top每秒减少一定的值就能实现了

But!但是这个值究竟怎么控制才最为完美呢?

我们先来粗略尝试一下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>滑动上升demo</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<style type="text/css">
/*body背景图*/
body {
/*设置背景图片*/
background: rgba(12, 100, 129, 1) url('https://img2020.cnblogs.com/blog/1916157/202003/1916157-20200320155023660-1382835829.png') fixed no-repeat;
background-size: cover;/*完全覆盖整个body*/
}
/*页面主体*/
#home {
margin: 0 auto;/*实现布局居中*/
width: 80%;/*原始65*/
background-color: rgba(245, 245, 245, 0.7);/*背景颜色*/
padding: 30px;/*内边距*/
margin-top: 200px;/*上边外延边距*/
margin-bottom: 50px;/*下边外延边距*/
box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);/*阴影效果*/
border-radius:30px/*圆角化*/;
}
</style>
</head>
<body>
<div id="home"></div>
<script type="text/javascript">
$("#home").css("margin-top",window.innerHeight);//将页面藏到屏幕下方一点
function Up(){
$("#home").css("margin-top",parseInt($("#home").css("margin-top"))-50);
console.log($("#home").css("margin-top"));
if(parseInt($("#home").css("margin-top"))==207){//这个207是我计算出来的,因为我屏幕的高度是657,所以会减少到这个值
clearInterval(id);
alert("停止");
}
}
var id = setInterval("Up()",1000);
</script>
</body>
</html>

大家试一试上面的代码,感觉效果很差,很卡,有没有!

这个代码的意思是每一秒上升50个像素,所以看起来一卡一卡的,跳太多了!

那么我们怎么实现高帧的效果呢?简单粗暴点,先来个60帧试试水

众所周知,动画的制作原理是利用了人眼的视觉暂留效应,好吧我们粗暴点,直接上原理。

60帧意思就是每秒刷新60次,

1s=1000ms

那么1000/60≈17,也就是说17ms刷新一次,就是60帧了!

我们还是将上面代码中的javascript的代码替换为以下几行就行了!

$("#home").css("margin-top",window.innerHeight);//将页面藏到屏幕下方一点
function Up(){
$("#home").css("margin-top",parseInt($("#home").css("margin-top"))-2);
console.log($("#home").css("margin-top"));
if(parseInt($("#home").css("margin-top"))<210){//这个210是我计算出来的合适位置
clearInterval(id);
alert("停止");
}
}
var id = setInterval("Up()",17);

大家可以复制去感觉以下!!!简直不要太丝滑!!!

同理你也可以实现90帧,120帧等等...

建议帧数越高,改变的数字差值小一点。

如果能够帮到你,或者学到点东西,请给我点赞哦!

你的点赞就是对我最大的鼓励!

如何将jq动画做出高帧的感觉?(丝滑顺畅)的更多相关文章

  1. 丝滑顺畅:使用CSS3获取60FPS动画

    原文链接: Smooth as Butter: Achieving 60 FPS Animations with CSS3 在移动端使用动画元素是很容易的. 如果你能遵循我们的这里的提示, 在移动端适 ...

  2. JS/jQ常用宽高及应用

    关于js的宽高,随便一搜就是一大堆.这个一大堆对我来说可不是什么好事,看的头都大了.所以今天就总结了一些比较会常用的,并说明一下应用场景. 先来扯一下documentElement和body的微妙关系 ...

  3. (21)jq动画

    jq动画的优点 优点: 1.可以知道动画结束的表示(结束的回调函数) 2.可以利用jq动画插件完成复杂的动画 动画有三个参数:动画的样式是字典.动画持续的事件,动画结束回调函数 <!DOCTYP ...

  4. css动画和jq动画的简单区分

    有很多不怎么用css3写动画的同学经常会对其中css3的transform,transition,translate,animation,@keyframes等等动画属性混淆错乱,经常使用了发现没有效 ...

  5. spine 所有动画的第一帧必须把所有能K的都K上

    spine 所有动画的第一帧必须把所有能K的都K上.否则在快速切换动画时会出问题.

  6. 高仿QQ6.0側滑菜单之滑动优化(二)

    好了,昨天已经实现了高仿QQ6.0的側滑大致框架.如有兴趣.能够去看下仿QQ6.0側滑之ViewDragHelper的使用(一) 可是之前的实现.仅仅是简单的能够显示和隐藏左側的菜单,可是特别生硬,并 ...

  7. Android系统编程入门系列之界面Activity响应丝滑的传统动画

    上篇文章介绍了应用程序内对用户操作响应的相关方法位置,简单的响应逻辑可以是从一个界面Activity跳转到另一个界面Activity,也可以是某些视图View的相对变化.然而不管是启动一个界面执行新界 ...

  8. Android 学习笔记多媒体技术之 Drawable类+Tween(补间动画)+Frame(帧动画)

    学习内容: 1.了解Drawable类的作用 2.如何使用Drawable... 3.了解Tween动画... 4.如何创建和使用Tween动画... 1.Drawable类...   Drawabl ...

  9. 【CSS3】动画animation-关键帧keyframes

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. jq动画设置图片抽奖(修改效果版)

    效果:点击开始,图片转动,按钮显示"停止",点击停止,选出中奖号码,,最后一个数字停止时,按钮变为"again",点击"again"开始转动 ...

随机推荐

  1. JS逆向实战10——某集团RSA长加密

    由于本网站较为特殊 目标网站加密与其他稍有不同 目标网站 68747470733a2f2f65632e6d696e6d6574616c732e636f6d2e636e2f6f70656e2f686f6 ...

  2. java 面向对象 --static

    java 面向对象 --static package charpter5.Demo09; //static public class Student { private static int age; ...

  3. 我和 chatGPT 对线操作系统!

    大家都知道现在 chatGPT 已经在多个领域展现了及其强大的工地,比如文案策划,毕业论文方便,甚至很多程序员都直接让 chatGPT 帮忙写代码了,在一些模板化的代码方面,chatGPT 更展示了优 ...

  4. 把一个列表拆成N个子列表的四种方法

    编程的方法往往不止一种,比如怎么把一个Python种的列表拆成N个子列表,我们可以很容易找到N种方法,也许这就是编程的魅力所在. 一.列表表达式法 这种方法最为简洁,不过可读性差一些 这个方法中,即使 ...

  5. 技术分享:Proxy-Pool代理池搭建IP代理

    技术分享:Proxy-Pool代理池搭建IP代理 前言本章内容仅供参考,不涉及实际使用,主要使用Python环境和Redis数据库进行环境搭建,工具网盘存储如下,有问题可以私聊我.网址:https:/ ...

  6. 有关SpringMVC的一些知识点

    Spring的获取对象 1.获取原生对象,直接在在方法李传http相关的对象.2.接受简单数据类型,接受简单数据类型(八种基本类型)参数直接在handler方法里声明,会自动把相同类型进行绑定,但是接 ...

  7. pysimplegui之运行多个窗口

    运行多个窗口 这就是 PySimpleGUI 继续简单的地方,但问题空间刚刚进入"复杂"领域. 如果您希望在事件循环中运行多个窗口,那么有两种方法可以做到这一点. 当第二个窗口可见 ...

  8. [JavaScript]Base64 ←→ 图像

    1 Base64 → 图像 [demo1] document.getElementById('img').setAttribute( 'src', 'data:image/png;base64,iVB ...

  9. Cesium案例(八) Terrain

    第一步正常建viewer,需要注意的是官网例子属性值比较老,最新版本的属性值有所差异,全copy官网会无法运行,提示函数未定义. 第一处差异 官网: 1 const viewer = new Cesi ...

  10. 2.JWT实现单点登录的概念

    1.总结: 昨天主要是了解了JWT的作用.构成以及RSA的作用和构成,再就是分布式认证的流程和集中式的差别 JWT的作用:JWT用于生成和校验token JWT的构成:头部.载荷以及签名 头部:设置规 ...