使用css3 var变量 实现酷炫button效果

2024-02-19 07:32

本文主要是介绍使用css3 var变量 实现酷炫button效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

css3 var 变量定义

无意中发现 css3的拥有一个自定义属性的功能,利用这个功能,我们可以实现灰常牛逼的功能。如图:
hover button

css自定义变量的语法是 --*
取名规则也很广,除了$、[、^、(、%都可以取,甚至可以取中文名。。
举个栗子:

p {--牛逼颜色: #ff4400;color: var(--牛逼颜色);
}

咋一看,跟sassless变量差不多~ 但是它是css原生自带的,很是方便。但是它是不支持设置属性名的,例如:

    p{--test:font-size;var(--test):24px;}

oh,这样写是无效的。。。。

var 的缺省值

还有一个就是缺省值,设置的值不合法的时候,会给出一个默认值来保证正常解析 例如这样:

 p{--color: 20px;background-color:var(--color)}

它会解析成 background-color:transparent;

var 空格尾随特性

p {--size: 20;   font-size: var(--size)px;
}

这样写,实际上会变成这样 font-size:20 px 自动变成一个空格。。。。好坑,千万不要用sass或者less的变量的概念来带节奏。。
正确的写法是这样

p {--size: 20px;   font-size: var(--size);
}

或者

p {--size: 20;   font-size: calc(var(--size) * 1px);
}

具体详细的可以参考 张鑫旭大神的博客

实际应用

让我们用这个神奇的变量来实现一个牛逼的按钮效果吧,直接上代码
html

 <button class="button"><span>我来试试这个!</span></button>
.button {position: relative;appearance: none;background: #f72359;padding: 1em 2em;border: none;color: white;font-size: 1.2em;cursor: pointer;outline: none;overflow: hidden;border-radius: 100px;}
.button span {position: relative;}.button::before {--size: 0;content: '';position: absolute;left: var(--x);top: var(--y);width: var(--size);height: var(--size);background: radial-gradient(circle closest-side, #4405f7, transparent);transform: translate(-50%, -50%);transition: width .7s ease, height .7s ease;}.button:hover::before {--size: 400px;}
document.querySelector('.button').onmousemove = (e) => {const x = e.pageX - e.target.offsetLeftconst y = e.pageY - e.target.offsetTope.target.style.setProperty('--x', `${ x }px`)e.target.style.setProperty('--y', `${ y }px`)}

搞定收工!
[代码出处](https://www.zcfy.cc/article/stunning-hover-effects-with-css-variables# %E8%AF%91%E8%80%85%EF%BC%9Ameakaka)

这篇关于使用css3 var变量 实现酷炫button效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723954

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、