好看的css星星效果边框

embedded/2025/3/26 23:05:06/

给客户做的动效图,结果应证了还是第一版的好,不忍舍弃,放这里,喜欢的人自取;
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Particle Star Border Demo</title><style>css">body, html {background-color: #cccccc;}.item-container {position: relative;width: 300px;height: 150px;margin: 50px auto;border-radius: 16px;padding: 10px;}.item-border-canvas {position: absolute;inset: 0;width: 100%;height: 100%;z-index: 9;pointer-events: none;border-radius: 10px;}.item-content-canvas {position: relative;z-index: 1;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);background: linear-gradient(to bottom, #fff8e1, #fff0c2);border-radius: 10px;width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;font-size: 24px;font-weight: bold;color: #ff9900;}</style>
</head>
<body><div class="item-container"><canvas id="borderCanvas" class="item-border-canvas"></canvas><div class="item-content-canvas">✨布灵布灵的星星✨</div>
</div><script>javascript">
(function () {const show = true; // 控制是否显示星星边框if (!show) return;const canvas = document.getElementById("borderCanvas");const ctx = canvas.getContext("2d");const offset = 15;let w, h, perimeter;let stars = [];let animationId;function initCanvas() {canvas.width = canvas.clientWidth;canvas.height = canvas.clientHeight;w = canvas.width;h = canvas.height;perimeter = 2 * (w + h);initStars();}function initStars() {stars = [];for (let i = 0; i < 40; i++) {stars.push({distance: Math.random() * perimeter,speed: 0.07 + Math.random() * 0.06,flickerPhase: Math.random() * Math.PI * 2,flickerSpeed: 0.006 + Math.random() * 0.009,maxSize: 10 + Math.random() * 5,rotate: Math.random() * Math.PI * 2,});}}function getPointOnPerimeter(distance) {let d = distance % perimeter;if (d < w) return { x: d, y: offset };d -= w;if (d < h) return { x: w - offset, y: d };d -= h;if (d < w) return { x: w - d, y: h - offset };return { x: offset, y: h - (d - w) };}function pulse(t) {return Math.pow(Math.sin(t), 4);}function drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius, alpha, rotation) {let rot = rotation - Math.PI / 2;const step = Math.PI / spikes;ctx.beginPath();ctx.moveTo(cx + Math.cos(rot) * outerRadius, cy + Math.sin(rot) * outerRadius);for (let i = 0; i < spikes; i++) {rot += step;ctx.lineTo(cx + Math.cos(rot) * innerRadius, cy + Math.sin(rot) * innerRadius);rot += step;ctx.lineTo(cx + Math.cos(rot) * outerRadius, cy + Math.sin(rot) * outerRadius);}ctx.closePath();const r = Math.floor(220 + 35 * alpha);const g = Math.floor(190 + 50 * alpha);const b = Math.floor(60 + 30 * alpha);ctx.fillStyle = `rgba(${r},${g},${b},0.95)`;ctx.shadowBlur = 12;ctx.shadowColor = `rgba(${r},${g},${b},0.6)`;ctx.fill();if (alpha > 0.9) {ctx.beginPath();ctx.arc(cx, cy, outerRadius / 2, 0, 2 * Math.PI);ctx.fillStyle = `rgba(255, 245, 200, ${alpha * 0.7})`;ctx.fill();}}function animate() {ctx.clearRect(0, 0, w, h);stars.forEach(star => {star.distance += star.speed;const pos = getPointOnPerimeter(star.distance);const flicker = pulse(star.flickerPhase % (Math.PI * 2));const size = flicker * star.maxSize;drawStar(ctx, pos.x, pos.y, 5, size, size / 2, flicker, star.rotate);star.flickerPhase += star.flickerSpeed;});animationId = requestAnimationFrame(animate);}window.addEventListener("resize", () => {initCanvas();});initCanvas();animate();
})();
</script>
</body>
</html>

http://www.ppmy.cn/embedded/176081.html

相关文章

LeetCode707设计链表

思路&#xff1a;主要是确定&#xff0c;虚拟头节点不算个数&#xff0c;从第一个正式节点开始计数&#xff0c;下标从0开始&#xff0c;这个确定了就写就完了 typedef struct Node // 定义节点 {int val;struct Node* next; } Node;typedef struct MyLinkedList // 定义链表 …

创建自己的github.io

1、创建GitHub账号 GitHub地址&#xff1a;https://github.com/ 点击Sign up创建账号 如果已创建&#xff0c;点击Sign in登录 2、创建仓库 假设Owner为username&#xff0c;则Repository name为username.github.io说明&#xff1a; 1、Owner为用户名 2、Repository name为仓…

SpringMVC全局异常处理机制

异常处理机制 异常处理的两种方式&#xff1a; 编程式异常处理&#xff1a;是指在代码中显式地编写处理异常的逻辑。它通常涉及到对异常类型的检测及其处理&#xff0c;例如使用 try-catch 块来捕获异常&#xff0c;然后在 catch 块中编写特定的处理代码&#xff0c;或者在 f…

Parsing error: Unexpected token, expected “,“

今天在使用Trae AI 编程工具开发大文件切片上传功能&#xff0c;使用的是VUE3,TS技术栈&#xff0c;开发完成运行时&#xff0c;编译报错&#xff08;Parsing error: Unexpected token, expected ","&#xff09;&#xff0c;让AI自行修复此问题多次后还是没有解决&a…

【leetcode hot 100 131】分割回文串

解法一&#xff1a;回溯法动态规划法 回溯法&#xff1a; 假设我们当前搜索到字符串的第 i 个字符&#xff0c;且 s[0…i−1] 位置的所有字符已经被分割成若干个回文串&#xff0c;并且分割结果被放入了答案数组 ans 中&#xff0c;那么我们就需要枚举下一个回文串的右边界 j…

ubuntu人工智能深度学习环境搭建。cuda和cudnn和anaconda和torch的安装。

几乎和wsl差不多&#xff0c;网不好的先下载好软件包&#xff0c;按顺序执行命令。 sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo dpkg -i cuda-repo-ubuntu2404-12-8-local_12.8.1-570.124.06-1_amd64.deb sudo cp /var/cuda-repo-ubun…

Unity开放世界实时GI分块烘焙策略技术详解

一、开放世界光照挑战与分块方案 1. 超大场景光照的核心痛点 单次烘焙不可行&#xff1a;256km场景的完整烘焙需数周计算时间 内存压力&#xff1a;单张8K光照贴图占用128MB&#xff08;BC7压缩&#xff09; 动态更新需求&#xff1a;昼夜循环、天气系统需要局部重烘焙 2.…

centos离线安装docker的那点小事

将docker信息复制到/usr/bin目录下 cp -r docker* /usr/bin/ #ll /usr/bin/docker* -rwxrwxrwx. 1 root root 38442504 Mar 17 02:16 /usr/bin/docker -rwxrwxrwx. 1 root root 71297680 Mar 17 02:16 /usr/bin/dockerd -rwxrwxrwx. 1 root root 708448 Mar 17 02:16 /usr/…