原生js实现公告滚动效果


Posted in Javascript onJanuary 10, 2021

本文实例为大家分享了js实现公告滚动展示的具体代码,供大家参考,具体内容如下

1.html结构

<body>
 <div id="notice" class="notice">
 <ul id="noticeList">
  <li>我是公告1</li>
  <li>我是公告2</li>
  <li>我是公告3</li>
  <li>我是公告4</li>
 </ul>
 </div>
</body>

2.css样式

<style type="text/css">
 body,
 div,
 ul,
 li {
  margin: 0;
  padding: 0;
 }
 
 ul,
 li {
  list-style: none;
 }
 
 .notice {
  width: 300px;
  height: 30px;
  border: 1px solid black;
  text-align: center;
  overflow: hidden;
 }
 
 li {
  padding: 3px;
 }
 </style>

3.js行为

<script type="text/javascript">
 window.onload = function() {
  var notice = document.getElementById("notice");
  var noticeList = document.getElementById("noticeList");
 
  // 获取ul下第一个li元素,好计算li的高度,因为后面滚动的时候每次要滚动一个高度,这里li都是一样高的,
  // 所以获取第一个的高度就行了,不然要遍历获取每一个li的高度。
  var noticeFirstItem = noticeList.querySelector("li");
 
  // 获取li的高度,这里获取的是offsetHeight,关于js各种高度的定义可以注意以下
  var scrollHeight = noticeFirstItem.offsetHeight;
  // 是否可以进行动画
  var opt = {
  animated: true,
  interval: 1000
  };
 
  notice.onclick = function() {
  // 动画之前首先重置
  // noticeFirstItem.style.transition = "";
  noticeFirstItem.style.marginTop = 0;
  if (opt.animated) {
   opt.animated = false;
   animate(noticeList, scrollHeight, opt);
  }
  };
 };
 
 // 动画函数,obj——要产生动画的对象,sHeight——每次要滚动的距离,interval——多久滚动一次
 function animate(obj, sHeight, option) {
  // 当滚到最后一条公告的时候就不用动画了。
  var stopHeight = sHeight - obj.scrollHeight;
  var marginTopNum = 0;
  var timer = setInterval(function() {
  marginTopNum -= sHeight;
  obj.style.marginTop = marginTopNum + "px";
  obj.style.transition = "margin-top 1.5s ease";
  // 注意这里的比较符号,前面得到的高度都进行四舍五入了
  if (marginTopNum <= stopHeight) {
   clearInterval(timer);
   // option.animated = true;
  }
  }, option.interval);
 }
 </script>

4.运行结果

原生js实现公告滚动效果

动画在进行中时注意控制不能进行其他动画!

结束语:不要把动画想得很难,当你想实现复杂的动画时,比如jquery的animate方法,你可以先实现针对一个属性的动画,然后再想办法扩展到多个属性(即以对象方式去传参,然后遍历对象中的每个样式属性,然后给每个样式属性添加动画)。以前都是用js去实现每一帧每一帧的移动,即在肉眼无法反应过来的时间里产生移动,这样就能产生连续移动的效果,现在css3出来了,可以方便的利用css3来实现过渡效果了,而不用复杂的js来实现了。这个真的太棒了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Mootools 1.2教程 Fx.Tween的使用
Sep 15 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
js constructor的实际作用分析
Nov 15 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
Feb 16 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
微信小程序时间选择插件使用详解
Dec 28 Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 Javascript
微信小程序实现文字无限轮播效果
Dec 28 #Javascript
小程序实现左右来回滚动字幕效果
Dec 28 #Javascript
原生JS实现的自动轮播图功能详解
Dec 28 #Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 #jQuery
微信小程序实现简单跑马灯效果
May 26 #Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 #Javascript
详解puppeteer使用代理
Dec 27 #Javascript
You might like
PHP反射机制用法实例
2014/08/28 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
PHP递归的三种常用方式
2019/02/28 PHP
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
Nest.js 授权验证的方法示例
2021/02/22 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python字典排序的方法
2019/10/12 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
机械专业应届生求职信
2013/09/21 职场文书
干部现实表现材料
2014/02/13 职场文书
大学生村官承诺书
2014/03/28 职场文书
私人委托书格式
2014/09/10 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
工会积极分子个人总结
2015/03/03 职场文书
户外亲子活动总结
2015/05/08 职场文书
担保书格式范文
2015/09/22 职场文书