原生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 相关文章推荐
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
微信小程序实现自定义加载图标功能
Jul 19 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 Javascript
javascript实现点亮灯泡特效示例
Oct 15 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 Javascript
js实现滚动条自动滚动
Dec 13 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
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python用threading实现多线程详解
2017/02/03 Python
浅析python的Lambda表达式
2019/02/27 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
什么是URL
2015/12/13 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
大学运动会通讯稿
2014/01/28 职场文书
行政答辩状范文
2015/05/21 职场文书
四群教育工作总结
2015/08/10 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技