有趣的css - 变幻的按钮

news2024/11/20 11:40:33

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个背景不停变幻的按钮,适用在一些比较年轻、青春风格的网站app中,也可在比较多巴胺风、风格强烈的专题页中使用。

最新文章通过公众号「设计师工作日常」发布。


目录

  • 整体效果
  • 核心代码
    • html 代码
    • css 部分代码
  • 完整代码如下
    • html 页面
    • css 样式
    • 页面渲染效果

整体效果

知识点:
1️⃣ background-image 属性
2️⃣ 伪元素 ::before::after
3️⃣ content: attr(...) 用法
4️⃣ transform 变形属性和 transition 过渡属性
5️⃣ :hover 选择器和 :active 选择器
6️⃣ animation 动画

思路:按钮使用渐变背景,然后让渐变背景旋转,再加一点模糊效果。

适用在一些比较年轻、青春风格的网站app中,也可在比较多巴胺风、风格强烈的专题页中使用。


核心代码部分,简要说明了写法思路;完整代码在最后,可直接复制到本地运行。

核心代码

html 代码

<button class="btn63" data-text="Hover"></button>

button 按钮主体标签,绑定 data-text 值。

css 部分代码

.btn63{
  width: 140px;
  height: 54px;
  border: none;
  border-radius: 9px;
  background-color: transparent;  /* 背景透明 */
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;  /* 限制溢出的元素 */
  cursor: pointer;
}
.btn63::before{
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  background-color: #FA8BFF;
  background-image: linear-gradient(90deg, #FA8BFF 20%, #2BD2FF 50%, #2BFF88 80%);
  filter: blur(16px);
  animation: eff63 4s linear infinite;
}
.btn63::after{
  content: attr(data-text);
  font-size: 16px;
  font-weight: bold;
  color: rgba(0,0,0,0.6);
  letter-spacing: 2px;
  position: absolute;
  transition: all .3s linear;
}
@keyframes eff63{
  from{
    transform: rotate(0deg);
  }
  to{
    transform: rotate(360deg);
  }
}
.btn63:hover::before{
  width: 140px;
  height: 140px;
  filter: blur(24px);
}
.btn63:hover::after{
  color: rgba(0,0,0,0.9);
  text-shadow: 0 1px 0 rgba(255,255,255,0.4);
}
.btn63:active {
  transform: scale(0.9) translateY(2px);
}

1、定义按钮主体 button 的基本样式外观,背景为 background-color: transparent; 透明, overflow: hidden; 限制溢出的元素。

2、基于主体 button 分别创建伪元素 ::before::after,伪元素 ::before 作为按钮背景,通过 background-image 将背景色设置为渐变背景色, filter: blur(...) 设置模糊度,最后设置 animation 动画,让伪元素 ::before 循环旋转 360°

3、伪元素 ::after 通过 content: attr(data-text) 获取 button 绑定的 data-text 值,作为按钮上面的文字内容。

4、最后根据 :hover:active 选择器,来改变伪元素 ::before 、伪元素 ::after 以及按钮被点击时的样式变化。

注意: 当伪元素 ::before::after 基于某个主体创建后,如果根据 :hover 等选择器在判断主体时,来改变伪元素的样式变化,请注意写法为 主体标签:hover:before ,例如此文中的 .btn63:hover::after

完整代码如下

html 页面

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <title>变幻的按钮</title>
  </head>
  <body>
    <div class="app">
      <button class="btn63" data-text="Hover"></button>
    </div>
  </body>
</html>

css 样式

/** style.css **/
.app{
  width: 100%;
  height: 100vh;
  background-color: #ffffff;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}
.btn63{
  width: 140px;
  height: 54px;
  border: none;
  border-radius: 9px;
  background-color: transparent;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  cursor: pointer;
}
.btn63::before{
  content: '';
  width: 200px;
  height: 200px;
  position: absolute;
  background-color: #FA8BFF;
  background-image: linear-gradient(90deg, #FA8BFF 20%, #2BD2FF 50%, #2BFF88 80%);
  filter: blur(16px);
  animation: eff63 4s linear infinite;
}
.btn63::after{
  content: attr(data-text);
  font-size: 16px;
  font-weight: bold;
  color: rgba(0,0,0,0.6);
  letter-spacing: 2px;
  position: absolute;
  transition: all .3s linear;
}
@keyframes eff63{
  from{
    transform: rotate(0deg);
  }
  to{
    transform: rotate(360deg);
  }
}
.btn63:hover::before{
  width: 140px;
  height: 140px;
  filter: blur(24px);
}
.btn63:hover::after{
  color: rgba(0,0,0,0.9);
  text-shadow: 0 1px 0 rgba(255,255,255,0.4);
}
.btn63:active {
  transform: scale(0.9) translateY(2px);
}

页面渲染效果

以上就是所有代码,以及简单的思路,希望对你有一些帮助或者启发。


[1] 原文阅读


CSS 是一种很酷很有趣的计算机语言,在这里跟大家分享一些 CSS 实例 Demo,为学习者获取灵感和思路提供一点帮助,希望你们喜欢。

我是 Just,这里是「设计师工作日常」,求点赞求关注!

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

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

相关文章

Spring Boot 3.x使用knife4j

Spring Boot 3.x使用knife4j 1.添加knife4j依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version> </dependency>2.在…

基于Perfetto 解读一帧的生产消费流程 Android >= S Qualcomm

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 1.这个流程里面的东西如果展开其实是有很多的 内容其实还是比较浅显的 sf处就不贴源码了 关一个Vsync就有的解释 当然笔者在流程上先形成一个思维闭环 2.如有小伙伴需要 笔…

备战电赛 | 集创赛提前练 • 第三周

集创赛提前练 | 第三周 &#xff08;点击下面的题目简介即可进入答题界面哦。&#xff09; 题目一 题目难度&#xff1a;中等 题目二&#xff1a;请设计一个可以实现任意小数分频的时钟分频器&#xff0c;例如&#xff0c;8.7分频的时钟信号 题目难度&#xff1a;简单 题目三…

position: absolute对el-dialog的影响

当用到position: absolute,会使元素脱离文档流,从而对原始层级发生变化,导致蒙层无法消失.

酒店线上提前预定小程序源码系统 优惠卷+现实秒杀功能 附带完整的安装代码包以及搭建教程

系统概述 酒店线上提前预定小程序源码系统是一款专门为酒店行业打造的智能化预订平台。它通过整合酒店的房源信息、价格策略、预订流程等&#xff0c;为用户提供了一站式的预订服务。该系统采用先进的技术架构&#xff0c;具有高度的稳定性和安全性&#xff0c;能够满足酒店和…

CentOS 7安装prometheus

说明&#xff1a;本文介绍如何在CentOS操作系统上安装prometheus Step1&#xff1a;下载安装包 访问Github仓库&#xff0c;下载对应版本的prometheus安装包 https://github.com/prometheus/prometheus/releases 操作系统的版本信息&#xff0c;可通过下面这两个命令查看&am…

六种常用设计模式

单例设计模式 单例模式指在整个系统生命周期里&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式&#xff0c;两者之间的区别在于创建实例的时间不同&#xff1a; 懒汉式&#xff1a;指系统运行中&#…

大语言模型是通用人工智能的实现路径吗?【文末有福利】

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 关于大语言模型的内容&#xff0c;推荐参考这个专栏。 内容大纲 相关说明一、哲学与人工智能二、内容简介三、书籍简介与福利粉…

飞睿智能超宽带UWB标签模组,简化设备开发流程,实时高速率数传交互应用

在科技飞速发展的今天&#xff0c;UWB超宽带技术因其高精度、低功耗和高安全性的特点&#xff0c;正逐渐成为智能设备定位和数据传输的新宠。 UWB技术是一种无线通信技术&#xff0c;它通过使用非常宽的频带进行数据传输&#xff0c;从而实现高数据传输速率和高精度定位。 飞…

「51媒体」线下活动媒体同步直播,云分发,分流直播

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 线下活动除了邀请嘉宾&#xff0c;邀请媒体&#xff0c;邀请行业大咖KOL&#xff0c;来为活动站台&#xff0c;背书外&#xff0c;我们也可以将线下的活动同步在线上进行直播&#xff0c…

构建 Elastic Cloud Serverless

作者&#xff1a;来自 Elastic Jason Tedor Elastic Cloud Serverless 架构 2022 年 10 月&#xff0c;我们引入了 Elasticsearch 的无状态架构。 我们该计划的主要目标是发展 Elasticsearch&#xff0c;以利用云原生服务提供的操作、性能和成本效率。 该计划成为我们最近宣…

解决Ubuntu无法使用root登录的问题

1、登录普通用户 2、使用vi编辑器打开/etc/pam.d/gdm-autologin并注释掉auth required pam_succeed_if.so user ! root quiet_success 3、使用vi编辑器打开/etc/pam.d/gdm-password并注释掉auth required pam_succeed_if.so user ! root quiet_success 4、注销用户重新用roo…

【Linux安全】Firewalld防火墙

目录 一.Firewalld概述 二.Firewalld和iptables的关系 1.firewalld和iptables的联系 2.firewalld和iptables的区别 三.Firewalld区域 1.概念 2.九个区域 3.区域介绍 4.Firewalld数据处理流程 四.Firewalld-cmd命令行操作 1.查看 2.增加 3.删除 4.修改 五.Firewa…

最新FinalShell专业版激活

支持的版本 可以激活任意版本的FinalShell为专业版&#xff0c;包括最新版4.3.10 激活方式 打开FinalShell&#xff0c;点击左下角 激活/升级。 账号密码任意输入几个字符&#xff0c;点离线激活。 复制机器码&#xff0c;将机器码发送给微信公众号【小白学算法】,即可获…

数据结构学习/复习15--排序部分复习总结

一、学过的排序 1.插入排序 2.希尔排序 3.直接选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.计数排序 二、各项排序的思想及改进(无特殊说明均以升序为例) 1.插入排序及其改进希尔排序 &#xff08;1&#xff09;插入排序的思想及具体操作细节 将一个数字按顺…

pytorch使用gpu训练模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 因为网上博客参差不齐&#xff0c;我也踩了很多坑&#xff0c;留下我自己成功的经验哈哈。 1.安装CUDA和CUDNN 参考这个博客&#xff1a; https://blog.csdn.net/shdabai/article/details/131248257 2.安装gpu版本 pytorch …

【openlayers系统学习】3.6-3.7添加可视化选择器,手动选择可视化的图像源

六、添加可视化选择器&#xff08;选择可视化的图像类型&#xff09; 在前面的示例中&#xff0c;我们已经看到了同一Sentinel-2图像的真彩色合成、假彩色合成和NDVI渲染。如果能让用户从这些可视化中选择一个或更多&#xff0c;而不必每次都更改我们的代码&#xff0c;那就太…

【热门话题】一文带你读懂公司是如何知道张三在脉脉上发了“一句话”的

按理说呢&#xff0c;A公司和脉脉属于不同的平台&#xff0c;而且脉脉上大家可以匿名发言&#xff0c;所以&#xff0c;即便我坐在你边上&#xff0c;我发了一句话上去&#xff0c;你也不知道是谁发的。但通过一些技术&#xff0c;我们却可以分析出&#xff0c;公司是如何知道张…

Git远程控制

文章目录 1. 创建仓库1.1 Readme1.2 Issue1.3 Pull request 2. 远程仓库克隆3. 推送远程仓库4. 拉取远程仓库5. 配置Git.gitignore配置别名 使用GitHub可以&#xff0c;采用Gitee也行 1. 创建仓库 1.1 Readme Readme文件相当于这个仓库的说明书&#xff0c;gitee会初始化2两份…

docker容器安装nexus3以及nexus3备份迁移仓库数据

一、安装步骤 1.搜索nexus3镜像 docker search nexus3 2.拉取镜像 docker pull sonatype/nexus3或者指定版本 docker pull sonatype/nexus3:3.68.0 3.查看拉取的镜像 docker images | grep "nexus3" 4.启动nexus服务 直接启动 docker run -d --name nexus3 -…