爬行的蜗牛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: golang Linux PHP
查看: 43|回复: 0

HTML&CSS:流光按钮,一看就会

[复制链接]

152

主题

48

回帖

1137

积分

管理员

积分
1137
发表于 6 天前 | 显示全部楼层 |阅读模式
这段 HTML 代码创建了一个具有动态颜色旋转效果的按钮

640.gif

HTML&CSS

  1. <!DOCTYPE html>
  2. <html lang="en">

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>公众号关注:前端Hardy</title>
  7.     <style>
  8.         body {
  9.             margin: 0;
  10.             padding: 0;
  11.             background: #212121;
  12.             display: flex;
  13.             align-items: center;
  14.             justify-content: center;
  15.             height: 100vh;
  16.         }
  17.         button {
  18.             background-image: linear-gradient(oklch(59%56%259deg), oklch(59%56%259deg)), conic-gradient(from var(--angle-to-the-dangle), oklch(59%56%259deg) 0deg, white 20deg, oklch(59%56%259deg) 40deg);
  19.             background-clip: padding-box, border-box;
  20.             background-position: center center;
  21.             background-size: 170px500px;
  22.             border-radius: 12px;
  23.             color: white;
  24.             padding: 1rem2rem;
  25.             font-size: 1.5rem;
  26.             border: 2px solid transparent;
  27.         }
  28.     </style>
  29. </head>

  30. <body>
  31.     <button id="rotateButton">添加资源</button>
  32.     <script>
  33.         const button = document.getElementById('rotateButton');
  34.         let angle = 0;
  35.         function rotateColors() {
  36.             angle = (angle + 2) % 360;
  37.             button.style.setProperty('--angle-to-the-dangle', `${angle}deg`);
  38.             requestAnimationFrame(rotateColors);
  39.         }
  40.         rotateColors();
  41.     </script>
  42. </body>

  43. </html>
复制代码

HTML 结构
rotateButton:定义一个按钮,文本为“添加资源”,ID 为“rotateButton”.
CSS 样式
body 样式:设置页面的边距为 0,背景颜色为深灰色,使用 flex 布局使内容居中显示,页面高度为视口高度(100vh).
button 样式:定义按钮的背景图像、剪裁、位置、尺寸、边框、颜色、内边距和字体大小.
background-image:使用线性渐变和圆锥渐变组合,创建一个动态的颜色旋转效果.
linear-gradient(oklch(59% 56% 259deg), oklch(59% 56% 259deg)):线性渐变,颜色从一个角度到另一个角度变化.
conic-gradient(from var(--angle-to-the-dangle), oklch(59% 56% 259deg) 0deg, white 20deg, oklch(59% 56% 259deg) 40deg):圆锥渐变,颜色从一个角度到另一个角度变化,使用自定义属性--angle-to-the-dangle 控制旋转角度.
background-clip:设置背景图像的剪裁区域,padding-box 和 border-box 分别表示内边距区域和边框区域.
background-position:设置背景图像的位置为居中.
background-size:设置背景图像的尺寸为 170px 500px.
border-radius:设置按钮的圆角大小为 12px.
color:设置按钮文本的颜色为白色.
padding:设置按钮的内边距为 1rem 2rem.
font-size:设置按钮文本的字体大小为 1.5rem.
border:设置按钮的边框为 2px 宽,颜色为透明.
JS
获取按钮元素.
定义变量 angle 用于存储旋转角度.
rotateColors 函数:更新旋转角度,设置按钮的自定义属性--angle-to-the-dangle,使用 requestAnimationFrame 递归调用自身,实现颜色的动态旋转效果.
调用 rotateColors 函数开始颜色旋转动画.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表