原生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 相关文章推荐
通用JS事件写法实现代码
Jan 07 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
JS与C#编码解码
Dec 03 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
老生常谈的跨域处理
Jan 11 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 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
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
eclipse php wamp配置教程
2016/06/30 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
JS常用知识点整理
2017/01/21 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python字符串连接方式汇总
2014/08/21 Python
Python时间获取及转换知识汇总
2017/01/11 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
《果园机器人》教学反思
2014/04/13 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书