前端例程20220818:边框跑马霓虹灯效按钮

2023-11-03

演示

在这里插入图片描述

原理

  • 按钮使用阴影实现外发光效果;
  • 按钮设置倒影效果;
  • 使用四个块元素以按钮为基础绝对定位到上下左右四边作为边框;
  • 通过给边框元素设置动画,并设置动画时间差以实现边框跑马效果;

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <title>边框跑马霓虹灯效按钮</title>

    <style>
        * {
            padding: 0;
            margin: 0;
            user-select: none;
            box-sizing: border-box;
        }

        html,
        body {
            height: 100vh;
        }
    </style>

    <style>
        /* 全局色表 */
        :root {
            --color-bg: #202020;
            --color-btn1: #f556e0;
            --color-btn2: #5182f7;
        }

        body {
            display: flex;
            background: var(--color-bg);
            align-items: center;
            justify-content: center;
        }

        .btn {
            width: 200px;
            height: 50px;
            margin: 20px;
            background: transparent;
            border: none;
            font-size: 24px;
            letter-spacing: 4px;
            transition: 0.3s;
            /* 倒影。通过遮罩透明度变化实现近处明亮远处黯淡的效果 */
            -webkit-box-reflect: below 1px linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.3));
        }

        .btn:nth-child(1) {
            color: var(--color-btn1);
        }

        .btn:nth-child(2) {
            color: var(--color-btn2);
        }

        .btn:focus {
            outline: none;
        }
    </style>

    <!-- 按钮悬停样式 -->
    <style>
        .btn:hover {
            color: var(--color-bg);
        }

        .btn:nth-child(1):hover {
            background: var(--color-btn1);
            /* 多层阴影增加发光效果的层次感 */
            box-shadow: 0 0 10px var(--color-btn1),
                0 0 25px var(--color-btn1),
                0 0 50px var(--color-btn1),
                0 0 100px var(--color-btn1);
        }

        .btn:nth-child(2):hover {
            background: var(--color-btn2);
            box-shadow: 0 0 10px var(--color-btn2),
                0 0 25px var(--color-btn2),
                0 0 50px var(--color-btn2),
                0 0 100px var(--color-btn2);
        }
    </style>

    <!-- 边框跑马样式 -->
    <style>
        .btn {
            position: relative;
            overflow: hidden;
        }

        .btn span {
            position: absolute;
            display: block;
        }

        /* 下面是各条边框位置与动画设置,通过位置和动画时间差实现跑马效果 */

        .btn span:nth-child(1) {
            top: 0;
            left: -100%;
            width: 100%;
            height: 2px;
            animation: animate1 1s linear infinite;
            animation-delay: 0s;
        }

        @keyframes animate1 {
            0% {
                left: -100%;
            }

            50%,
            100% {
                left: 100%;
            }
        }

        .btn span:nth-child(2) {
            top: -100%;
            right: 0;
            width: 2px;
            height: 100%;
            animation: animate2 1s linear infinite;
            animation-delay: 0.25s;
        }

        @keyframes animate2 {
            0% {
                top: -100%;
            }

            50%,
            100% {
                top: 100%;
            }
        }

        .btn span:nth-child(3) {
            bottom: 0;
            right: -100%;
            width: 100%;
            height: 2px;
            animation: animate3 1s linear infinite;
            animation-delay: 0.5s;
        }

        @keyframes animate3 {
            0% {
                right: -100%;
            }

            50%,
            100% {
                right: 100%;
            }
        }

        .btn span:nth-child(4) {
            bottom: -100%;
            left: 0;
            width: 2px;
            height: 100%;
            animation: animate4 1s linear infinite;
            animation-delay: 0.75s;
        }

        @keyframes animate4 {
            0% {
                bottom: -100%;
            }

            50%,
            100% {
                bottom: 100%;
            }
        }

        /* 下面是各条边框颜色设置 */

        .btn:nth-child(1) span:nth-child(1) {
            background: linear-gradient(to right, transparent, var(--color-btn1));
        }

        .btn:nth-child(2) span:nth-child(1) {
            background: linear-gradient(to right, transparent, var(--color-btn2));
        }

        .btn:nth-child(1) span:nth-child(2) {
            background: linear-gradient(to bottom, transparent, var(--color-btn1));
        }

        .btn:nth-child(2) span:nth-child(2) {
            background: linear-gradient(to bottom, transparent, var(--color-btn2));
        }

        .btn:nth-child(1) span:nth-child(3) {
            background: linear-gradient(to left, transparent, var(--color-btn1));
        }

        .btn:nth-child(2) span:nth-child(3) {
            background: linear-gradient(to left, transparent, var(--color-btn2));
        }

        .btn:nth-child(1) span:nth-child(4) {
            background: linear-gradient(to top, transparent, var(--color-btn1));
        }

        .btn:nth-child(2) span:nth-child(4) {
            background: linear-gradient(to top, transparent, var(--color-btn2));
        }
    </style>
</head>

<body>
    <!-- button中四个span元素作为上下左右四条流动的边框 -->
    <button class="btn">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        BUTTON
    </button>
    <button class="btn">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        BUTTON
    </button>
</body>

</html>

更多例程

更多例程可以参考下面代码仓库:
https://github.com/NaisuXu/front-end-web-examples

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端例程20220818:边框跑马霓虹灯效按钮 的相关文章

  • 我可以根据同一容器中另一个元素的大小强制内联文本换行吗?

    考虑这个 jsbin http jsbin com ElIKOKe 3 edit html css output 我有这个html div class container span The lime outlined container h
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • 如何从 bootstrap-markdown.js 调用 .getContent 和 .parseContent

    我是使用 Bootstrap 插件的新手 刚刚通过代码学院 http www codecademy com en skills make an interactive website 我真的很想用这个很棒的引导 Markdown 插件 ht
  • 更改

    标签中一个单词的颜色

    我正在处理一份 html 文档 并且只想在我的文档中创建一个单词 p 标记不同的颜色 如果不做完全不同的事情 这可能吗 p p tag p p I want to make only THIS word blue p p style dis
  • 滚动时将菜单栏固定在顶部[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我见过一些网站 当用户向下滚动页面时 会在右侧或左侧弹出一个框 另外 注意到这个模板 http www mvpthemes com m
  • 使用 jQuery 更改父元素样式

    我有下一个 html 设置 div class one div class two a href class three Click a div div 我想更改具有类的元素的背景颜色 one当我点击元素时 three使用 jQuery 这
  • 如何处理 Django 中的错误

    我想让我的 django 应用程序尽可能对用户友好 并且我想处理适当的错误并让它推出类似于 javascript 中的警报的错误消息 我想在没有上传文件时执行此操作 因此 当按下上传按钮并且尚未上传任何内容时 将会发出一条警报消息 我的看法
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • 嵌套计算操作

    希望这很简单 我想使用CSS calc操作来执行两个计算 我想将宽度设置为等于 100 7 2 但是 如果我尝试在 CSS 计算操作中执行多个操作 则会失败 width calc 100 7 2 如何在一个 CSS 语句中执行多个计算操作
  • 如何使整个跨度落入新行?

    这个片段显示了我想要的 http jsfiddle net 945Df 3 http jsfiddle net 945Df 3 div class sup strong a href Rosario Santa Fe Argentina a
  • 使用纯 CSS 创建向上和向下箭头图标或按钮

    我正在尝试使用纯 CSS 且无背景图像创建如下所示的 向上和向下 控制按钮 但是当我在 中添加箭头的CSS时li className after or li className before 主盒子的位置移动了 这是我遇到的问题的小提琴 g
  • 是否可以设置输入文本值的样式?

    我想知道是否可以设置输入框值的样式 such http jsfiddle net aCwhY as
  • 重新加载更新的 javascript> 代码而不完全重新加载 html 页面

    我正在开发一个单页 Web 应用程序 它具有许多不同的功能和形式 当开发一个深度 我的意思是主页上没有的 功能时 我会经历这个循环 开发代码 编辑类和函数 刷新整个页面 一路点击 直到到达我需要测试的部分 有时加起来大约一分钟 测试新代码
  • TDD/测试 CSS 和 HTML? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法测试 CSS 和 HTML 例如 有时某些通知会受到某些 CSS 更改的影响 我不想每次进行更改时都手动测试所有通知 Tha
  • 在流体设计中将元素的宽度调整为其高度的百分比,反之亦然? [复制]

    这个问题在这里已经有答案了 我正在制作响应式设计 无论屏幕尺寸是什么 它都必须保持其元素的比例 高度与宽度 所以我不知道任何元素的像素大小 并且我只能以 工作 我可以将宽度或高度设置为浏览器大小的百分比 但我不知道如何设置其他属性值 仅使用
  • 在按钮之间添加空间?

    嗨 我这里有一个代码 除了一件事之外 一切都很完美 代码中每个按钮之间没有空格 我尝试过 margin 但不幸的是它是一个无序列表 所以我有点困惑 我将添加或替换什么以在两个按钮之间留出空间 帮助
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 宽度:适合内容;在 Chrome 上工作,但在资源管理器上不工作

    我构建了一个应用程序 所有内容都在 Chrome 中完美显示 但如果我在 Windows 资源管理器中打开该应用程序 容器会比应有的小 我在用着width fit content 这是只适用于 Chrome 的东西吗 我怎样才能使其适用于所
  • 如何防止弹性项目高度因其内容而溢出[重复]

    这个问题在这里已经有答案了 我刚刚开始学习 Flex 到目前为止我印象深刻 但是 我对包含页眉 页脚和三列的全页应用程序遇到了问题 第一列包含一个项目列表 由于我无法为其父级设置固定高度 因此每次列表增长时 它都会将页脚向下推 这是一个带有
  • 将输入中每个单词的第一个字符设为大写

    我想知道如何在输入区域自动生成单词的第一个字符 目前我的代码是 Name

随机推荐

  • shell脚本编程大全

    文章目录 一 命令行 二 shell 三 文件系统 四 shell命令 五 shell的父子关系 六 内建命令 七 环境变量 八 文件系统权限 九 管理文件系统 十 构建基本shell脚本 十一 使用结构化命令 十二 处理用户输入 十三 呈
  • “赶快上车,会调用你也可以当鉴黄师了”说罢,老司机转眼间将车门焊得死死的!

    都是学习用途 不知道为啥 图片被ban了 如需查看完整图片请转移到从今天开始种树 起因 本人在某平台发布文章时封面用了几张美女图片 内容里都是正常的流程图之类的 却被这个平台告知如下内容 大家评评理这图片违规么 查看完整图片请转移到从今天开
  • 上机作业:日历(java)

    上机作业 日历 java 1 思路框架分析 本着按照手机日历的构造模型作为model 我着手开始了日历java小程序的编写 说到日历 就不得不提一嘴最可恶的闰年 懂得都懂 闰年是bug制造者 这次用java语言编写 我特意拿出一个方法来判断
  • 543.二叉树的直径

    543 二叉树的直径 给定一棵二叉树 你需要计算它的直径长度 一棵二叉树的直径长度是任意两个结点路径长度中的最大值 这条路径可能穿过也可能不穿过根结点 本题需要明确二叉树的直径计算方法 二叉树的直径不一定过根节点 需要遍历左子节点和右子节点
  • 清除pip安装库时的缓存

    目录 1 命令清除缓存 2 路径手动清除 在使用pip安装Python库时 如果之前已经下载过该库 pip会默认使用缓存来安装库 而不是重新从网络上下载 缓存文件通常存储在用户目录下的缓存文件夹中 具体位置因操作系统和Python版本而异
  • maven多环境打包实现web.xml和context.xml中的占位符变量替换

    在springboot或传统springmvc的tomcat项目中 为了实现spring容器文件中的变量替换 我们通常可以在项目的resource目录下新建几个环境目录 例如rd test dev stress online等等 然后再在对
  • Tensorflow:BP神经网络权值初始化

    一 Tensorflow入门 1 计算图 每一个计算都是计算图上的一个结点 而节点之间的边描述了计算之间的依赖关系 支持通过tf Graph生成新的计算图 不同计算图上的张量和运算不会共享 Tensorflow会自动生成一个默认的计算图 如
  • vue 标签点击切换颜色

    1单选
  • Twitter API

    文章转自 https www jianshu com p e6628917878b GET trends available GET热门 可用 返回具有热门主题信息推文的地理位置 返回是对位置的WOEID A WOEID is aYahoo
  • Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(四)- 训练过程

    Tensorflow2 0 DeepLab v3 分割网络原理及代码解析 四 训练过程 在Tensorflow2 0 DeepLab v3 分割网络原理及代码解析 三 特征提取网络实现中 输入图片已经经过主干网络进行了特征提取 最终得到的f
  • Xcode build和version

    参考 一个叫做Version 一个叫做Build version是版本号 build是打正式包每次Archive时的都增加的值 这两个值都可以在Xcode中选中target 点击 Summary 后看到 Version在plist文件中的k
  • HBuilderX选择主题以及自定义主题教程

    文章目录 选择主题 自定义主题 自定义窗体主题 选择主题 在HBuilderX中 您可以点击顶部菜单 工具 主题 选择切换您喜欢的主题颜色 HBuilderX内置了3个主题 分别为 绿柔 雅蓝 酷黑 当前颜色主题 存储在用户设置 设置 源码
  • 点云图像融合(点云着色)——基于PCL、OpenCV和kitti数据集

    文章目录 前言 一 准备 二 点云图像融合 点云着色 1 数据读入 2 变换矩阵准备 3 坐标变换 4 点云显示 三 总结 前言 一种图像数据与激光雷达点云数据融合的c c 方法实现 使用图像像素值给对应的点云着色 基于PCL点云库 Ope
  • [SWPUCTF] 2021新生赛之(NSSCTF)刷题记录 ②

    SWPUCTF 2021 新生赛 NSSCTF刷题记录wp SWPUCTF 2021 新生赛 no wakeup 鹤城杯 2021 easy crypto suctf 2019 EasySQL ZJCTF 2019 NiZhuanSiWei
  • 对比objdump与readelf

    http blog chinaunix net u3 105004 showart 2092229 html 对比objdump与readelf objdump和readelf都可以用来查看二进制文件的一些内部信息 区别在于objdump
  • 快排、二路归并疑难杂症

    蒟蒻小 复习机试 记录一些疑点和注意点 细节见代码注释 快排 快排中的边界条件判断需保证i
  • SiteMesh 过滤不装饰的页面

    意思也即是这个页面不被sitemesh过滤器装饰 我们可新建立一个文件夹 将不被装饰的页面放在里面 下面我们操作两个配置文件即可 1 在sitemesh xml里需要有excludes元素 lt sitemesh gt lt propert
  • 一次元数据空间内存溢出的排查记录

    在应用中 我们使用的 SpringData ES的 ElasticsearchRestTemplate来做查询 使用方式不对 导致每次ES查询时都新实例化了一个查询对象 会加载相关类到元数据中 最终长时间运行后元数据出现内存溢出 问题原因
  • 重要前端面试题,来自一个2022年面试大牛(下)

    五 React 1 react 函数组件和 class 组件区别 类组件视图是怎么更新的呢 首先第一次渲染的时候 会创建一个类的实例 之后在更新的时候 仅仅按照生命周期流程调用render 实例不会变 而函数式组件每次渲染更新都会重新执行调
  • 前端例程20220818:边框跑马霓虹灯效按钮

    演示 原理 按钮使用阴影实现外发光效果 按钮设置倒影效果 使用四个块元素以按钮为基础绝对定位到上下左右四边作为边框 通过给边框元素设置动画 并设置动画时间差以实现边框跑马效果 代码