html+css 实现文字滚动的按钮

news2024/11/24 8:41:02

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

文章目录

  • 效果
  • 原理解析
    • 1.给每一个按钮添加一个hover效果,并初始化一个==animation动画效果==。
    • 2.当按钮上有鼠标时,hover效果触发,触发文字移动效果。
    • 3.具体的变换参数,直接==看代码==,可以一键复制,查看效果
  • 上代码,可以直接复制使用
    • 目录
    • html
    • css

效果

文字滚动按钮效果展示

原理解析

1.给每一个按钮添加一个hover效果,并初始化一个animation动画效果

animation: marquee 1s linear infinite;

2.当按钮上有鼠标时,hover效果触发,触发文字移动效果。

/*当hover时的变化*/
.btnMar:hover .marquee__inner {
  animation-play-state: running;
  opacity: 1;
  transition-duration: 0.4s;
}
.btnMar:hover>span {
  opacity: 0;
}

3.具体的变换参数,直接看代码,可以一键复制,查看效果

上代码,可以直接复制使用

目录

文字滚动目录

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>html+css 实现文字滚动的按钮</title>
    <link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="container">
    <h1 style="text-align: center;color:#fff;margin-bottom: 50px;padding-top: 50px; text-shadow: 0 3px 3px #4c6ed3;">
        html+css 实现文字滚动的按钮</h1>

    <div class="wrapper">
        <button class="butdef btnMar">
            <span>求点赞</span>
            <div class="marquee" aria-hidden="true">
                <div class="marquee__inner">
                    <span>求点赞</span>
                    <span>求点赞</span>
                    <span>求点赞</span>
                    <span>求点赞</span>
                </div>
            </div>
        </button>
        <button class="butdef btnMar">
            <span>求关注</span>
            <div class="marquee" aria-hidden="true">
                <div class="marquee__inner">
                    <span>求关注</span>
                    <span>求关注</span>
                    <span>求关注</span>
                    <span>求关注</span>
                </div>
            </div>
        </button>
        <button class="butdef btnMar">
            <span>求收藏</span>
            <div class="marquee" aria-hidden="true">
                <div class="marquee__inner">
                    <span>求收藏</span>
                    <span>求收藏</span>
                    <span>求收藏</span>
                    <span>求收藏</span>
                </div>
            </div>
        </button>
        <button class="butdef btnMar">
            <span>求转发</span>
            <div class="marquee" aria-hidden="true">
                <div class="marquee__inner">
                    <span>求转发</span>
                    <span>求转发</span>
                    <span>求转发</span>
                    <span>求转发</span>
                </div>
            </div>
        </button>
    </div>
</div>

</body>
</html>

css

*
{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
:root
{
  --btn-bg-color:#fff;
  --font-color-black: #000;
  --btn-bg-color-hover: #FF5833;
}
.container{
  min-height: 100vh;
  background-color: #0e1538;
}
.wrapper{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap:40px;
}
.butdef {
  pointer-events: auto;
  cursor: pointer;
  background: var(--btn-bg-color);
  border: none;
  padding: 15px 30px;
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  position: relative;
  display: inline-block;
}

.butdef::before,
.butdef::after {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.btnMar {
  font-family: "微软雅黑", sans-serif;
  font-weight: 500;
}

.btnMar>span {
  display: inline-block;
}

.marquee {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  overflow: hidden;
  pointer-events: none;
}

.marquee__inner {
  width: fit-content;
  display: flex;
  position: relative;
  --offset: 1rem;
  --move-initial: calc(-25% + var(--offset));
  --move-final: calc(-50% + var(--offset));
  transform: translate3d(var(--move-initial), 0, 0);
  animation: marquee 1s linear infinite;
  animation-play-state: paused;
  opacity: 0;
}

.marquee span {
  text-align: center;
  white-space: nowrap;
  font-style: italic;
  padding: 15px 5px;
}

@keyframes marquee {
  0% {
    transform: translate3d(var(--move-initial), 0, 0);
  }

  100% {
    transform: translate3d(var(--move-final), 0, 0);
  }
}

/*当hover时的变化*/
.btnMar:hover .marquee__inner {
  animation-play-state: running;
  opacity: 1;
  transition-duration: 0.4s;
}
.btnMar:hover>span {
  opacity: 0;
}

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕

整理不易,点赞关注宝码香车

更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作

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

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

相关文章

2024年前端趋势:全栈或许是不容错过的选择!

近年来&#xff0c;前端开发的技术不断推陈出新&#xff0c;2024年也不例外。在这个变化迅速的领域&#xff0c;全栈开发逐渐成为一股不容忽视的趋势。无论你是经验丰富的开发者&#xff0c;还是刚刚入门的新手&#xff0c;掌握全栈技术都能让你在竞争中脱颖而出。而在这个过程…

Spring -- 拦截器

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 1. 自定义拦截器2. 注册配置拦截器3. 拦截器详解3.1 拦截路径3.2 拦截器执行流程 3.3 DispatcherServlet源码分析3.3.1 初始化:3.3.2 处理请求3.3.3 适配器 拦截器是Spring框架提供的…

vue项目删除无用的依赖

1.安装依赖检查工具 npm i depcheck 2.查看无用的依赖 npx depcheck 3.手动删除pageage.json中的无用的依赖&#xff08;如果有sass和sass-loader不要删&#xff0c;会引起项目报错&#xff09; 4.全部删除完成之后&#xff0c;删除package-lock.json和yarn.lock文件&#x…

【文件解析漏洞复现】

一&#xff0e;IIS解析漏洞复现 1.IIS6.X 方式一&#xff1a;目录解析 搭建IIS环境 在网站下建立文件夹的名字为.asp/.asa 的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 访问成功被解析 方式一&#xff1a;目录解析 在IIS 6处理文件解…

图纸加密与零信任沙箱:构建企业数据安全的双重保障

在这个信息爆炸的时代&#xff0c;数据安全如同一场没有硝烟的战争。深信达SDC沙盒防泄密系统&#xff0c;以其零信任沙盒技术&#xff0c;为企业提供了一个坚不可摧的“金钟罩铁布衫”&#xff0c;确保企业图纸安全“坚如磐石”。 一、数据安全的“冰与火之歌” 数据安全是一…

如何简便改文件名

在出OI题的时候&#xff0c;有时候想要方便地把输入输出文件的文件名都改掉&#xff0c;类似于将a1.in,a2.in,…,a50.in都改成b1.in,b2.in,…,b50.in 我用gpt写了一个python代码 import osdef rename_files(base_name, new_name, num_files):for i in range(1, num_files 1)…

函数实例讲解 (一)

文章目录 函数中的引用、运算符、通配符1、引用2、运算符3、通配符 函数的类别、输入方式、结果检查1、函数类别2、输入方式3、结果检查 数组的基本概念1、数组极其元素的概念2、数组的书写3、数组的类型4、内存数组的存储位置5、数组公式与普通公式的区别 逻辑判断函数之IF1、…

【工具】-gdb-学习笔记

准备工作 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项&#xff0c;发布成debug模式 如下源代码经过编译&#xff1a; #…

VS Code C/C++ MSVC编译器

官方教程 通过快捷方式打开VS Code是编译不了的,需要对tasks.json修改(Tasks: Configure default build task) 先创建tasks.json 复制这段配置到tasks.json,记得修改VsDevCmd.bat的路径 {"version": "2.0.0","windows": {"options"…

深度学习中卷积算子和dropout算子的作用

笔者在调网络的时候&#xff0c;有时调细一些在想不同卷积核尺寸的卷积操作有啥区别&#xff0c;在哪些算子后用dropout会比较好呢&#xff1f;于是有了下面一段总结。 文章目录 一、卷积核尺寸1X1和3X3的区别1x1卷积核3x3卷积核 二、dropout的作用使用情况算子组合注意事项 一…

[读论文]-FreeU: Free Lunch in Diffusion U-Net 提高生成质量

摘要 In this paper, we uncover the untapped potential of diffusion U-Net, which serves as a “free lunch” that substantially improves the generation quality on the fly. We initially investigate the key contributions of the U-Net architecture to the denois…

《计算机网络》(第8版)第9章 无线网络和移动网络 复习笔记

第 9 章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能&#xff0c;可分为两大类&#xff1a;有固定基础设施的和无固定基础设 施的。 &#xff08;1&#xff09;IEEE 802.11 IEEE 802.11 是无线以太网的标准&#xff0c;是有固定…

SQL数据库备份

转载&#xff1a;数据库备份与还原 1. 以下过程为记录客户单位备份过程。 一般有E盘选择E盘备份&#xff0c;否则选择D盘备份。选中备份文件需要重命名&#xff0c;以防原文件被覆盖。切换选项&#xff0c;选中压缩备份。

IoTDB 入门教程 问题篇④——外网攻击导致OOM内存溢出,服务崩溃

文章目录 一、前文二、思考问题三、验证问题五、深入思考六、总结 一、前文 IoTDB入门教程——导读 二、思考问题 从上一篇博客得知&#xff0c;因为内存大小设置的不合理&#xff0c;容易导致OOM内存溢出&#xff0c;最终导致服务崩溃。 事后转念一想&#xff0c;又在思考&…

【ADC】欠采样的基本理论及其应用中的抗混叠滤波器设计原则

概述 之前的两篇文章&#xff1a;信号采样中的频谱混叠现象、频谱混叠的MATLAB仿真与抗混叠滤波器设计 介绍了关于 ADC 采样时&#xff0c;有关奈奎斯特采样定律的基本理论、频谱混叠现象的由来&#xff0c;以及抗混叠滤波器的设计与仿真。但这都是基于过采样的情况&#xff0…

如何理解进程?

前言&#xff1a; 我们在前面的对操作系统的学习&#xff0c;目的是为了让我们加深操作系统对“管理”的描述。我们在上一节了解到操作系统存在许多管理&#xff0c;今天我们就来初次了解一下——进程管理。 进程概念&#xff1a; 课本概念&#xff1a;程序的一个执行实例&…

cube studio 修改logo 水印,标题,图标等信息。

修改logo 修改后需重新打包前端镜像 修改登录界面标题 修改配置文件config.py中的app_name变量&#xff0c;线上需要重启后端pod 修改水印 修改后需重新打包前端镜像 修改标题 修改后需重新打包前端镜像 修改个性化图标 修改后需重新打包后端镜像 修改后需重新打包前端镜…

Elasticsearch:使用 API 密钥验证添加远程集群

API 密钥身份验证使本地集群能够通过跨集群 API 密钥&#xff08;cross-cluster API key&#xff09;向远程集群进行身份验证。API 密钥需要由远程集群的管理员创建。本地集群配置为在向远程集群发出每个请求时提供此 API 密钥。远程集群将根据 API 密钥的权限验证 API 密钥并授…

JVM—CMS收集器

参考资料&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09;周志明 CMS收集器&#xff08;Concurrent Mark Sweep&#xff09;是一种以获取最短回收停顿时间为目标的收集器。低并发收集、低停顿。 CMS收集器是基于标记—清除算法实…