实现文字超过显示宽度每间隔1s自动向左滚动显示(原生JS和vue两种实现方式)

原生JS:

html:

<div id="wrapper" class="wrapper"><div class="inner"><p>文字如果超出了宽度自动向左滚动文字如果超出了宽度自动向左滚动。我是一个粉刷匠,粉刷本领强,我要把那新房子刷的更漂亮</p>    </div>
</div>

js:

 var wrapper = document.getElementById('wrapper');var inner = wrapper.getElementsByTagName('div')[0];var p = document.getElementsByTagName('p')[0];var p_w = p.offsetWidth;var wrapper_w = wrapper.offsetWidth;window.onload=function fun(){if(wrapper_w > p_w){ return false;}inner.innerHTML+=inner.innerHTML;setTimeout("fun1()",2000);}function fun1(){if(p_w > wrapper.scrollLeft){wrapper.scrollLeft++;setTimeout("fun1()",30);}else{setTimeout("fun2()",2000);}}function fun2(){wrapper.scrollLeft=0;fun1();}

css:

*{margin:0;padding:0;}body{font:12px/1 '微软雅黑';}.wrapper{font-size:0.85rem;color:#333;padding-top:0.75rem;margin:0 0.75rem;white-space:nowrap;overflow:hidden;width:300px;}.inner{width:1000px;overflow:hidden;}.inner p{display:inline-block;}

vue

封装组件:

<template><div class="scrollText" ref="outer"><div class="st-inner" :class="{'st-scrolling': needToScroll}"><span class="st-section" ref="inner">{{text}}</span><span class="st-section" v-if="needToScroll">{{text}}</span><!-- 加两条是为了滚动的时候实现无缝衔接 --></div></div>
</template>
<script>
export default {data() {return {needToScroll: false,text: ""};},mounted() {this.startCheck();},beforeDestroy() {this.stopCheck();},methods: {// 检查当前元素是否需要滚动check() {this.setText();this.$nextTick(() => {let flag = this.isOverflow();this.needToScroll = flag;});},// 判断子元素宽度是否大于父元素宽度,超出则需要滚动,否则不滚动isOverflow() {let outer = this.$refs.outer;let inner = this.$refs.inner;let outerWidth = this.getWidth(outer);let innerWidth = this.getWidth(inner);return innerWidth > outerWidth;},// 获取元素宽度getWidth(el) {let { width } = el.getBoundingClientRect();return width;},// 获取到父组件传过来的内容复传给this.textsetText() {this.text =(this.$slots.default &&this.$slots.default.reduce((res, it) => res + it.text, "")) ||"";},// 增加定时器,隔一秒check一次startCheck() {this._checkTimer = setInterval(this.check, 1000);this.check();},// 关闭定时器stopCheck() {clearInterval(this._checkTimer);}}
};
</script>
<style lang="scss" scoped>
.scrollText {overflow: hidden;white-space: nowrap;
}
.st-inner {display: inline-block;
}
.st-scrolling .st-section {padding: 0 5px;
}// 向左匀速滚动动画
.st-scrolling {animation: scroll 10s linear infinite;
}@keyframes scroll {0% {transform: translate3d(0%, 0, 0);}100% {transform: translate3d(-50%, 0, 0);}
}
</style>

使用:

<template><div class="about"><div class="content"><scrollText>一二三四五六七八九十哈哈哈哈哈哈哈哈测试</scrollText></div></div>
</template>
<script>
import scrollText from "@/components/scrollText";
export default {components: { scrollText },data() {return {};}
};
</script>
<style lang="scss" scoped>
.content {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;// 设置容器最大宽度为200width: 200px; font-size: 40px;border: 1px solid lightblue;margin: 40px;
}
</style>

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

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

相关文章

大数据前馈神经网络解密:深入理解人工智能的基石

文章目录 大数据前馈神经网络解密&#xff1a;深入理解人工智能的基石一、前馈神经网络概述什么是前馈神经网络前馈神经网络的工作原理应用场景及优缺点 二、前馈神经网络的基本结构输入层、隐藏层和输出层激活函数的选择与作用网络权重和偏置 三、前馈神经网络的训练方法损失函…

最优化方法Python计算:无约束优化应用——逻辑回归模型

S型函数 sigmoid ( x ) 1 1 e − x \text{sigmoid}(x)\frac{1}{1e^{-x}} sigmoid(x)1e−x1​将全体实数 R \text{R} R映射到 ( 0 , 1 ) (0,1) (0,1)&#xff0c;称为逻辑函数。其图像为 该函数连续、有界、单调、可微&#xff0c;性质量好。拟合函数为 F ( w ; x ) sigmoi…

探索Apache Commons Imaging处理图像

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊图像处理。在这个数字化日益增长的时代&#xff0c;图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑&#xff0c;还是专业领域的图像分析&#xff0c;图像处理无处不在。而作为…

盘点 | 飞凌嵌入式这5款100%全国产核心板值得推荐

近期&#xff0c;飞凌嵌入式有5款核心板产品通过了中国赛宝实验室的权威认证&#xff0c;实现了100%的电子元器件国产化率&#xff0c;本篇文章小编就带大家盘点一下这5款产品。 一、FET3568-C系列核心板 FET3568-C和FET3568J-C核心板基于Rockchip RK3568系列处理器开发设计&am…

three.js绘制网波浪

无图不欢&#xff0c;先上图 使用方法&#xff08;以vue3为例&#xff09; <template><div class"net" ref"net"></div> </template><script setup> import { ref, onMounted } from vue import NetAnimation from /utils…

EBDP:解锁大数据的奥秘✨

大数据时代已经来临&#xff0c;你是否也想掌握这门“显学”&#xff1f;&#x1f31f; EBDP&#xff0c;这个让众多专业人士趋之若鹜的认证&#xff0c;究竟有何魅力&#xff1f;今天就带你一探究竟&#xff01; &#x1f31f;EBDP&#xff1a;大数据的“敲门砖”&#x1faa…

Koordinator 助力云原生应用性能提升:小红书混部技术实践

作者&#xff1a;宋泽辉&#xff08;小红书&#xff09;、张佐玮&#xff08;阿里云&#xff09; 编者按&#xff1a; Koordinator 是一个开源项目&#xff0c;是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生&#xff0c;是行业首个生产可用、面向大规模场景的开源混…

CNAS中兴新支点——源代码审计对企业有哪些好处?

源代码扫描&#xff0c;对应用程序进行静态漏洞扫描&#xff0c;分析源代码中存在的安全风险&#xff0c;运行应用于模拟器中对应用进行实时漏洞攻击检测。 你是否了解源代码扫描对企业的好处&#xff1f; 一、源代码扫描&#xff0c;通常能够帮助企业解决这些问题&#xff1…

BDD - Python Behave 配置文件 behave.ini

BDD - Python Behave 配置文件 behave.ini 引言behave.ini配置参数的类型配置项 behave.ini 应用feature 文件step 文件创建 behave.ini执行 Behave查看配置默认值 behave -v 引言 前面文章 《BDD - Python Behave Runner Script》就是为了每次执行 Behave 时不用手动敲一长串…

VSCode Python开发环境配置

目录 1 插件安装2 Debug和测试配置常见问题 1 插件安装 1.1 基础编译插件&#xff0c;Python、Pylance 1.2 修改语言服务器类型&#xff0c;进入用户配置页面搜索Python: Language Server&#xff0c;选择Pylance&#xff08;一定要修改可以提供很多语法提示&#xff09; 1…

根据commitID删除某一次提交

1.查看提交历史 git log --prettyoneline2.找到需要删除的那个commit,然后找到上次提交的commitID 比如想要删除下面这一条 我们找到上次提交的commitID 3.执行rebase git rebase -i efa11da0a684977bf8ac047ebb803e2ded2063a4 进入编辑状态显示如下 将需要删除的那个提交前…

探索 EndNote:卓越文献管理工具的功能与应用

引言 在当今科研与学术写作的领域&#xff0c;文献管理是每一位研究者都不可避免面对的挑战。为了有效地整理、引用和协作&#xff0c;研究者需要强大而灵活的文献管理工具。EndNote作为一款备受推崇的文献管理软件&#xff0c;在解决这一问题上发挥着关键作用。本文将深入探讨…

设备健康管理系统助力制造企业实现数字化转型

在当今快速变革的制造业环境中&#xff0c;数字化转型已成为制造企业保持竞争力和实现可持续发展的关键。在这个数字化转型的浪潮中&#xff0c;设备健康管理系统正发挥着重要的作用。设备健康管理系统通过实时监测、预测分析和智能诊断等功能&#xff0c;为制造企业提供了全面…

JSON 简介

JSON是什么&#xff1f;(了解) JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于Web应用程序之间的数据传输。 JSON格式是一种文本格式&#xff0c;用于描述数据的结构和内容。它由两种基本元素组成&#xff1a;键值对和…

基于PyQt5自定义UI的详细教程

PyQt5和Qt designer的详细安装教程&#xff1a;https://blog.csdn.net/qq_43811536/article/details/135185233?spm1001.2014.3001.5501Qt designer界面和所有组件功能的详细介绍&#xff1a;https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001…

八股文打卡day7——计算机网络(7)

面试题&#xff1a;HTTPS和HTTP的区别 我的回答&#xff1a; 1.加密方式&#xff1a;HTTP是明文传输&#xff1b;HTTPS使用了SSL/TLS进行加密传输。 2.安全性&#xff1a;由于HTTP是明文传输的&#xff0c;所以数据内容容易被第三方截获和读取。而HTTPS通过SSL/TLS进行加密传…

Vue中使用require.context自动引入组件的方法介绍

我们项目开发中&#xff0c;经常需要import或者export各种模块&#xff0c;那么有没有什么办法可以简化这种引入或者导出操作呢&#xff1f;答案是肯定的&#xff0c;下面就为大家介绍一下require.context require.context 是 webpack 提供的一个 API&#xff0c;用于创建 con…

运行天地图Cesium.js三维服务案例

零、技术选型及相关网址 技术选型&#xff1a;Vue2、VueCli5、Cesium.js、天地图 相关网址&#xff1a;三维服务 - 天地图 帮助文档 一、cesium 初始化参数解析 initializeCesium() {this.viewer new Cesium.Map("cesiumContainer", {shouldAnimate: true, // 是否…

基于二进制包的mysql安装

下载二进制包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz查看是否存在mariadb安装 [rootbogon ~]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64#卸载包。 --nodeps 不检验依赖 [rootbogon ~]# rpm -e --…

gem5学习(7):内存系统中创建 SimObjects--Creating SimObjects in the memory system

目录 一、gem5 master and slave ports 二、Packets 三、Port interface 1、主设备发送请求时从设备忙 2、从设备发送响应时主设备忙 四、Simple memory object example 1、Declare the SimObject 2、Define the SimpleMemobj class 3、Define the SimpleMemobj class…