前端基础之滚动显示

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>

手动控制滚动-margin-top

使用上一个代码的方式进行滚动,首先改造滚动代码,元素用div代替,上下都可以滚动。

上的时候margin-top正数,下的时候margin-top负数就行。

function rollNo2(id, flag) {let ul = $('#' + id);var lineHeight = ul.find("div:first").height();if (flag != 'up') {ul.animate({ "margin-top": -lineHeight + "px" }, 600, function () {ul.css({ "margin-top": "0px" }).find("div:first").appendTo(ul);});} else {ul.animate({ "margin-top": lineHeight + "px" }, 600, function () {ul.css({ "margin-top": "0px" }).find("div:last").prependTo(ul);});}}

监听按键事件,进行调用滚动代码

    document.onkeydown = function (evt) {evt.preventDefault();var key_code = event.which ? event.which : event.keyCode;switch (key_code) {case 38:// 上rollNo2("div2", 'up');break;case 40:// 下rollNo2("div2");break;default:return key_code;break;}}

效果如下:

完整代码

 

<!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>.div1 {width: 200px;height: 70px;border: 1px solid #000;overflow: hidden;white-space: nowrap;}.div1 div {width: 200px;height: 50px;border: 1px solid #ff0000;}</style>
</head><body><div class="div1"><div id="div2"></div></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++) {$("#div2").append("<div>" + (i + 1) + ":这是条测试数据</div>");}function rollNo2(id, flag) {let ul = $('#' + id);var lineHeight = ul.find("div:first").height();if (flag != 'up') {ul.animate({ "margin-top": -lineHeight + "px" }, 600, function () {ul.css({ "margin-top": "0px" }).find("div:first").appendTo(ul);});} else {ul.animate({ "margin-top": lineHeight + "px" }, 600, function () {ul.css({ "margin-top": "0px" }).find("div:last").prependTo(ul);});}}document.onkeydown = function (evt) {evt.preventDefault();var key_code = event.which ? event.which : event.keyCode;switch (key_code) {case 38:// 上rollNo2("div2", 'up');break;case 40:// 下rollNo2("div2");break;default:return key_code;break;}}}
</script></html>

123

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝商品详情采集接口item_get-获得淘宝商品详情(可高并发线程)

获得淘宝商品详情页面数据采集如下&#xff1a; taobao.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;注册key账号接入secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff0…

基于SSM+vue框架的个人博客网站源码和论文

基于SSMvue框架的个人博客网站源码和论文061 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm &#xff08;设计&#xff09;研究背景与意义 关于博客的未来&#xff1a;在创办了博客中国(blogchina)、被誉为“…

华为手机实用功能介绍

一、内置app介绍 分四块介绍&#xff0c;包括出门款、规划款、工作款和生活款。 出门款&#xff1a;红色框框部分&#xff0c;照镜子化妆/看天气 规划款&#xff1a;黄色框框部分&#xff0c;日程表/计划表/番茄时间/计时 工作款&#xff1a;蓝色框框部分&#xff0c;便笺/录…

最新AI系统ChatGPT程序源码/微信公众号/H5端+搭建部署教程+完整知识库

一、前言 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01…

五、性能测试之linux分析命令

linux分析命令 一、服务器基础知识二、linux文件结构三、linux文件权限四、linux命令1、安装应用fedora家族: 如centosdebain家族&#xff1a;如ubuntu 2、获取帮助第一种&#xff1a;command --help第二种&#xff1a;man command第三种&#xff1a;info 3、服务器性能分析基础…

英国选校8.27

目录 IC帝国理工学院 UCL伦敦大学学院 爱丁堡 曼彻斯特 KCL伦敦国王学院 Bristol布里斯托 华威 南安普顿 IC帝国理工学院 UCL伦敦大学学院 爱丁堡 曼彻斯特 KCL伦敦国王学院 24qs专业位置双非con雅思气候备注40 移动&个人通信 24fall不要双非&#xff1f; 24fall新…

C语言基础之——指针(上)

前言&#xff1a;小伙伴们又见面啦&#xff01;本期内容&#xff0c;博主将展开讲解有关C语言中指针的上半部分基础知识&#xff0c;一起学习起来叭&#xff01;&#xff01;&#xff01; 目录 一.什么是指针 二.指针类型 1.指针的解引用 2.指针-整数 三.野指针 1.野指针…

12. Oracle中case when详解

格式&#xff1a; case expression when condition_01 then result_01 when condition_02 then result_02 ...... when condition_n then result_n else result_default end 表达式expression符合条件condition_01&#xff0c;则返回…

【算法专题突破】双指针 - 快乐数(3)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;202. 快乐数 - 力扣&#xff08;Leetcode&#xff09; 这道题的题目也很容易理解&#xff0c; 看一下题目给的示例就能很容易明白&#xff0c; 但是要注意一个点&#…

pycharm 右键运行代码时总是测试模式运行(run pytest)

*# 问题 使用pycharm时&#xff0c;右键运行代码&#xff0c;结果是这样的&#xff1a; 运行_‘pytesr(xxx.py 内)’ 英语界面可能是这样&#xff1a;run_‘pytesr(xxx.py)’我并不想使用测试模式。如何改回正常模式&#xff1f; 解决办法 本着遇到什么问题就搜什么问题的态…

【mindspore学习】环境配置

本次实验搭配的环境是 CUDA 11.6 CUDNN v8.9.4 TensorRT-8.4.1.5 mindspore 2.1.0。 1、配置 Nvidia 显卡驱动 如果原来的主机已经安装了 nvidia 驱动&#xff0c;为避免版本的冲突&#xff0c;建议先清除掉旧的 nvidia驱动 sudo apt-get --purge remove nvidia* sudo apt…

苍穹外卖总结

前言 1、软件开发流程 瀑布模型需求分析//需求规格说明书、产品原型↓ 设计 //UI设计、数据库设计、接口设计↓编码 //项目代码、单元测试↓ 测试 //测试用例、测试报告↓上线运维 //软件环境安装、配置第一阶段&#xff1a;需求分析需求规格说明书、产品原型一般来说…

系统架构设计师-计算机系统基础知识(1)

目录 一、计算机系统概述 1、冯诺依曼计算结构​编辑 二、存储系统 三、操作系统概述 1、特殊的操作系统 四、进程管理 1、进程与线程的概念 2、进程的同步与互斥 3、PV操作 4、死锁与银行家算法 一、计算机系统概述 1、冯诺依曼计算结构 二、存储系统 从上到下依次&#…

记录一个问题~beego中的配置文件autorender

事情的经过是这样的: 在学习beego框架时,遇到了一个问题: tpl模板文件不显示内容; 原因所在: beego配置文件: appname hello httpport 8080 runmode dev world world dataSourceInfo root:955945tcp(localhost:3306)/gmusic?charsetutf8 #自动渲染 这里关闭后就关闭了自…

【PHP面试题81】php-fpm是什么?它和PHP有什么关系

文章目录 &#x1f680;一、前言&#xff0c;php-fpm是什么&#x1f680;二、php-fpm与PHP之间的关系&#x1f680;三、php-fpm解决的问题&#x1f50e;3.1 进程管理&#x1f50e;3.2 进程池管理&#x1f50e;3.3 性能优化&#x1f50e;3.4 并发处理 &#x1f680;四、php-fpm常…

Redis7安装

1. 使用什么系统安装redis 由于企业里面做Redis开发&#xff0c;99%都是Linux版的运用和安装&#xff0c;几乎不会涉及到Windows版&#xff0c;上一步的讲解只是为了知识的完整性&#xff0c;Windows版不作为重点&#xff0c;同学可以下去自己玩&#xff0c;企业实战就认一个版…

LeetCode-406-根据身高重建队列

题目描述&#xff1a; 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造…

探讨uniapp的组件使用的问题

1 view Flex是Flexible Box的缩写&#xff0c;意为“弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。 当设置display: flex后&#xff0c;继续给view等容器组件设置flex-direction:row或column&#xff0c;就可以在该容器内按行或列排布子组件。uni-app推荐使用flex布…

江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电

长期以来&#xff0c;石油天然气、石油石化、发电和管道输送行业在环保、健康和安全保障方面一直承受着巨大的压力&#xff0c;他们必须确保相关规程在各项作业中得到全面贯彻。 阀门作为流体管道运输中的组成部分&#xff0c;其装配密封度是保证流体运输安全的重要一环&#…