前端基础之滚动显示

news2024/11/23 11:58:38

marquee滚动标签

注:该标签已经过时,被w3c弃用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

使用样例:

<marquee>这是个默认的marquee标签</marquee>

多条数据上下滚动:

 代码如下:

<body>
  <marquee id="marquee" height="100" direction="up">
  </marquee> 
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload=function() {
    for (var i=0; i<7;i++) {
      $("#marquee").append("<p>"+(i+1)+": 这是条数据!</p>");
    }
  }
</script>

公告展示效果

<body>
  公告:<marquee id="marquee" style="color: red;" bgcolor="#ddd"
    width="200" height="20" scrolldelay="500" scrollamount="10" direction="up" >
  </marquee> 
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload=function() {
    for (var i=0; i<3;i++) {
      $("#marquee").append("<p>"+(i+1)+": 这是一条重要新闻</p>");
    }
  }
</script>

 横向滚动

注:鼠标移入暂停,移出继续执行。

<marquee   height="100" width="200" direction="left"  
        onMouseOut="this.start()"onMouseOver="this.stop()">
    这是条简单的文本
  </marquee>

参数解释:

属性名描述

behavior

设置文本在标签内如何滚动,默认scroll

scroll:一圈一圈的走

slide:滑动,只走一圈
alternate:左右来回滚动

bgcolor 

背景颜色颜色名或者十六进制值

direction

设置文本滚动方向,默认值为leftleft,right,up,down
height设置高度,像素或者百分比
width设置宽度,像素或者百分比
hspace设置水平边距,左右margin
vspace设置垂直边距,上下margin
loop设置滚动的次数,默认-1,一直滚动,次数结束后空白
scrollamount设置每次滚动移动的长度,默认6,单位像素
scrolldelay每次滚动的时间间隔,单位毫秒,默认85.

方法:

方法名描述
start开始滚动
stop停止滚动

JS实现滚动-scrollTop

scrollTop:滑动滚动条,使用定时任务改变滚动条的值进行动态滚动

html代码及初始化代码如下:

<body>
  <div id="content">
    <ul id="content-ul">
    </ul>
  </div>
</body>

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload=function(){
    for(i=0;i<5;i++) {
      $("#content-ul").append("<li>"+(i+1)+":这是条测试数据</li>");
    }
    roll("content-ul");
  }
  function roll(id) {
  }
</script>

首先获取ul元素,然后定时任务进行自增scrollTop的值,实现文本滚动效果

let ul = document.getElementById(id);//获取ul元素
    setInterval(() => {
      ul.scrollTop++;
    }, 100);

执行后发现滚动到底就停止了,不会一直循环滚动。有问题的。

因为使用的滚动条,当文本到底后滚动条也就到底了,所以我们需要先把文本拼接长,两倍即可。

ul.innerHTML+=ul.innerHTML;

这样滚动到到二倍长度就会停止不动了,所以我们需要把scrollTop置0。

判断已经把第一遍文本滚动完跳到顶部。获取文本高度,然后滚动条判断

let liNum = ul.getElementsByTagName('li').length;//获取li个数
    let height = ul.getElementsByTagName('li')[0].offsetHeight;//取得li的高度
    // 算出总高度
    let totalHeight = liNum*height;
ul.innerHTML+=ul.innerHTML;
    setInterval(() => {
      ul.scrollTop++;
      if(ul.scrollTop == totalHeight){
        ul.scrollTop = 0;
      }
    }, 100);

这样就可以无限循环滚动了。滚动效果类似如下图,把第一遍滚动到完后跳顶部。 

代码还有需要优化,当文本不超过容器高度的时候也会进行滚动,需要增加一个判断

if(totalHeight<=ul.offsetHeight){
      return;
    }

效果展示

 

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #content {
      height: 100px;
      width: 300px;
    }
    #content-ul {
      height: 100%;
      overflow: hidden;
      list-style: none;
    }
    #content-ul li {
      line-height: 30px;
    }
  </style>
</head>
<body>
  <div id="content">
    <ul id="content-ul">
    </ul>
  </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload = function () {
    for (i = 0; i < 2; i++) {
      $("#content-ul").append("<li>" + (i + 1) + ":这是条测试数据</li>");
    }
    roll("content-ul");
  }
  function roll(id) {
    let ul = document.getElementById(id);//获取ul元素
    let liNum = ul.getElementsByTagName('li').length;//获取li个数
    let height = ul.getElementsByTagName('li')[0].offsetHeight;//取得li的高度
    // 算出总高度
    let totalHeight = liNum*height;
    if(totalHeight<=ul.offsetHeight){
      return;
    }
    ul.innerHTML+=ul.innerHTML;
    setInterval(() => {
      ul.scrollTop++;
      if(ul.scrollTop == totalHeight){
        ul.scrollTop = 0;
      }
    }, 100);
  }
</script>
</html>

JQuery实现滚动-margin-top

数据代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #content {
      height: 100px;
      width: 300px;
    }
    #content-ul {
      height: 100%;
      overflow: hidden;
      list-style: none;
    }
    #content-ul li {
      line-height: 30px;
    }
  </style>
</head>
<body>
  <div id="content">
    <ul id="content-ul">
    </ul>
  </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload = function () {
    for (i = 0; i < 10; i++) {
      $("#content-ul").append("<li>" + (i + 1) + ":这是条测试数据</li>");
    }
    rollNo2("content-ul");
  }
  function rollNo2(id) {
    let ul = document.getElementById(id);//获取ul元素
    
  }
</script>
</html>

这里用到了jquery的animate动画,核心代码,元素动画上移后把第一个追加到最后一个。代码如下。然后在生命周期出添加定时任务运行。

window.onload = function () {
    for (i = 0; i < 10; i++) {
      $("#content-ul").append("<li>" + (i + 1) + ":这是条测试数据</li>");
    }
    setInterval(function() {rollNo2("content-ul")},500);
  }
function rollNo2(id) {
    let ul = $('#'+id);
    var lineHeight = ul.find("li:first").height();
    ul.animate({ "margin-top": -lineHeight + "px" }, 600, function () {
      ul.css({ "margin-top": "0px" }).find("li:first").appendTo(ul);
    });
  }

效果下图:

 注:当文本不超过容器高度的时候也会进行滚动,可以自行添加优化

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #content {
      height: 100px;
      width: 300px;
    }
    #content-ul {
      height: 100%;
      overflow: hidden;
      list-style: none;
    }
    #content-ul li {
      line-height: 30px;
    }
  </style>
</head>
<body>
  <div id="content">
    <ul id="content-ul">
    </ul>
  </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
  window.onload = function () {
    for (i = 0; i < 4; i++) {
      $("#content-ul").append("<li>" + (i + 1) + ":这是条测试数据</li>");
    }
    setInterval(function () { rollNo2("content-ul") }, 500);
  }
  function rollNo2(id) {
    let ul = $('#' + id);
    var lineHeight = ul.find("li:first").height();
    ul.animate({ "margin-top": -lineHeight + "px" }, 600, function () {
      ul.css({ "margin-top": "0px" }).find("li:first").appendTo(ul);
    });
  }
</script>
</html>

123

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL每日一练--销售管理系统

一&#xff0c;创建数据库SaleSys 二&#xff0c;在数据库SaleSys中创建3张表 品牌信息表&#xff08;brand&#xff09; BrandId --品牌编号&#xff0c;整型&#xff0c;自动增长&#xff0c;主键BrandName --品牌名称&#xff0c;字符型&#xff0c; 唯一约束 商品表…

DBi Tech Studio Controls for .NET Crack

DBi Tech Studio Controls for .NET Crack Studio Controls for.NET为企业开发人员提供了一套全面的Windows布局和信息表示软件元素&#xff0c;面向搜索业务分析商业调度和UI表示控制器的程序员。Studio Controls for.NET包含17个免版税的.NET Windows窗体控件&#xff0c;用于…

【谷粒商城】开发篇:微服务架构搭建

项目架构搭建 创建代码仓库 步骤一&#xff1a;在gitee中创建代码仓库 步骤二&#xff1a;在IDEA中 clone 项目 clone 结果展示 项目微服务创建 商品服务、仓储服务、订单服务、优惠券服务、用户服务 商品微服务创建 商品微服务创建 使用 Spring Initializr 创建微服务 通过…

Linux:ansible自动化运维工具

环境介绍 当前所有执行权限我是在root下执行的&#xff0c;如果提示权限之类的&#xff0c;可以在每句命令前 加上 sudo ansible主服务器 192.168.0.194 另外两个客户端分别为 192.168.0.193 192.168.0.192 软件只需要在主服务器上安装&#xff0c;客户端不需…

重注微电子产业,“三大齿轮”能否带起香港经济的“第三轮”

文 | 智能相对论 作者 | 佘凯文 众所周知&#xff0c;微电子产业早已成为现代科技领域的关键钥匙&#xff0c;谁能掌握微电子产业&#xff0c;谁就能拥有全球科技领域的话语权。 从上世纪开始&#xff0c;微电子产业曾经历过几次重大转移&#xff0c;如70年代从美国转向日本…

键入网址到网页显示,期间发生了什么?

目录 1.DNS2.可靠传输 —— TCP3.远程定位 —— IP4.两点传输 —— MAC5.出口 —— 网卡6.送别者 —— 交换机&#xff08;可省略&#xff09;7.出境大门 —— 路由器8.数据包抵达服务器后9.响应过程&#xff1a;带有MAC、IP、TCP头部的完整HTTP报文&#xff1a; 1.DNS 客户端…

阿里云故障洞察提效50%,全栈可观测建设有哪些技术要点?

一分钟精华速览 全栈可观测是一种更全面、更综合和更深入的观测能力&#xff0c;能协助全面了解和监测系统的各个层面和组件&#xff0c;它不仅仅是一个技术上的概念&#xff0c;更多地是技术与业务的结合。在“以业务为导向”的大前提下&#xff0c;全栈可观测正在成为趋势。…

【项目 计网6】 4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

文章目录 4.17 TCP三次握手4.18滑动窗口4.19TCP四次挥手 4.17 TCP三次握手 TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff…

数据结构入门 — 链表详解_单链表

前言 数据结构入门 — 单链表详解* 博客主页链接&#xff1a;https://blog.csdn.net/m0_74014525 关注博主&#xff0c;后期持续更新系列文章 文章末尾有源码 *****感谢观看&#xff0c;希望对你有所帮助***** 系列文章 第一篇&#xff1a;数据结构入门 — 链表详解_单链表 第…

OS 用户级线程

这个程序执行到D&#xff0c;Yield&#xff08;&#xff09;跳到204&#xff0c;然后出栈404出错

2023 ccpc 网络赛 L 题解

Problem L. Partially Free Meal 题面 官方题解 官方题解解读 w(k,x)计算部分 主席树常规做法&#xff0c;在一般主席树中多维护一个这个区间的总和就ok了 根据单调性分治求解部分 接下来我们来推导一下单调性&#xff0c;也就是题解中的 f ( 1 ) < f ( 2 ) < f ( …

六、pikachu之目录遍历

文章目录 一、目录遍历概述二、目录遍历实战 一、目录遍历概述 在web功能设计中&#xff0c;很多时候我们会要将需要访问的文件定义成变量&#xff0c;从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时&#xff0c;便会将请求的这个文件的值&#xff08;比如文件名…

鸡肋的RDP反制

更新时间&#xff1a;2023年07月19日09:18:29 为什么叫鸡肋&#xff1a; 鸡肋者&#xff0c;食之无肉&#xff0c;弃之有味。 你说不能成吧&#xff0c;但是有成功案例&#xff0c;你说成了吧&#xff0c;要求太高&#xff0c;还要看运气的。 一句话&#xff1a;对方需要开启…

如何通过PreMaint状态监测系统发现设备故障?

在现代工业领域&#xff0c;设备故障可能导致严重的生产中断和高额维修成本。然而&#xff0c;通过新兴的技术&#xff0c;如基于状态的维修&#xff0c;我们可以更早地发现故障并采取预防措施&#xff0c;从而实现生产的连续性和成本的降低。其中&#xff0c;PreMaint状态监测…

老板电器:劲草式企业才能穿越周期

材料力学上有两个概念&#xff1a;一个是韧性&#xff0c;用来形容材料在塑性变形和破裂过程中吸收能量的能力&#xff0c;韧性越好&#xff0c;发生脆性断裂的可能性越小&#xff1b;一个是塑性&#xff0c;是材料所受外力超过其弹性限度后具有的能永久保留形变的性质。 这两…

X2000 Linux UVC

参考文档&#xff1a;\doc\开发使用说明\USB使用说明文档\设备\USB_UVC\xburst2\USB_UVC.pdf 一、内核添加USB UVC功能 1、确定所用dts文件 进入到/tools/iconfigtool/IConfigToolApp/路径下&#xff0c;执行./IConfigTool 选择config文件&#xff0c;查看kernel默认配置 配…

油烟监管云平台在油烟净化技术中的应用研究

安科瑞 华楠 摘 要&#xff1a;介绍了生活中餐饮业油烟废气的排放特点、产生过程及其对人体和环境带来的环境&#xff0c;分析了餐饮油烟组成成分的成分特性及相关的致病症状。油烟净化器仍然是目前治理餐饮油烟比较有用的方法&#xff0c;基于高压静电原理的复合型油烟净化技…

前端面试手撕编程

目录 ES6 改变this call typeof this ! function context context || window context._this this delete context._this bind&#xff1a; return _this.apply(context, [...arguments].slice(1)); 深拷贝 !arr|| arr null || typeof arr ! object arr instanceof…

正则中常见的流派及其特性

目前正则表达式主要有两大流派&#xff08;Flavor&#xff09;&#xff1a;POSIX 流派与 PCRE 流派。 1、 POSIX 流派 POSIX 规范定义了正则表达式的两种标准&#xff1a; BRE 标准&#xff08;Basic Regular Expression 基本正则表达式&#xff09;&#xff1b;ERE 标准&am…

Android获取手机已安装应用列表JAVA实现

最终效果: 设计 实现java代码: //获取包列表private List<String> getPkgList() {List<String> packages new ArrayList<String>();try {//使用命令行方式获取包列表Process p Runtime.getRuntime().exec("pm list packages");//取得命令行输出…