css 流动边框

一、背景流动边框

在这里插入图片描述
实现原理:
用背景进行旋转,超出我们想显示的范围则hidden,就有以上的效果,可以用after或者before元素来实现也可以。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {position: relative;width: 150px;height: 150px;margin: 100px auto;overflow: hidden;border-radius: 4px;}@keyframes rotate {to {transform: rotate(1turn);}}.under {position: relative;width: 0px;height: 0px;border-top: 200px solid yellow;border-right: 200px solid green;border-bottom: 200px solid red;border-left: 200px solid blueviolet;left: -125px;top: -125px;animation: rotate 2s linear infinite;}.box > span {position: absolute;top: 0px;margin: 8px;width: 134px;height: 134px;border-radius: 4px;background-size: cover;background-image: url(https://img-blog.csdnimg.cn/20201011132854978.jpg);background-color: white;}@keyframes rotate2 {0%{transform: rotate(0turn);}to {transform: rotate(-1turn);}}.box .under2 {position: relative;width: 0px;height: 0px;border-top: 200px solid rgb(0, 255, 13);border-right: 200px solid rgb(45, 218, 203);border-bottom: 200px solid rgb(255, 106, 156);border-left: 200px solid rgb(251, 255, 26);left: -125px;top: -125px;animation: rotate2 2s linear infinite;}</style>
</head><body><div class="box"><div class="under"></div><span></span></div><div class="box"><div class="under2"></div><span></span></div>
</body></html>

二、跟随鼠标流动边框效果

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>:root {--bg: hsl(246 44% 7%);--border: hsl(280 10% 50% / 1);--card: hsl(237 36% 10%);--color: hsl(240 18% 80%);--border-width: 2px;--border-radius: 12px;--gradient: conic-gradient(from 180deg at 50% 70%, hsla(0, 0%, 98%, 1) 0deg, #eec32d 72.0000010728836deg, #ec4b4b 144.0000021457672deg, #709ab9 216.00000858306885deg, #4dffbf 288.0000042915344deg, hsla(0, 0%, 98%, 1) 1turn);}*,*:after,*:before {box-sizing: border-box;}@property --start {syntax: '<number>';inherits: true;initial-value: 0;}body {background: var(--bg);display: grid;place-items: center;min-height: 100vh;font-family: "Geist Sans", "SF Pro Text", "SF Pro Icons", "AOS Icons", "Helvetica Neue", Helvetica, Arial, sans-serif, system-ui;font-weight: 70;color: var(--color);}.container {--spread: 60;display: flex;flex-wrap: wrap;flex-direction: var(--direction);gap: calc(var(--gap) * 1px);margin: 0 auto;justify-content: center;place-items: center;position: relative;padding: 2rem;touch-action: none;}article {--active: 0.15;--start: 0;height: 100%;background: var(--card);padding: 4rem;aspect-ratio: 330 / 400;border-radius: var(--border-radius);min-width: 280px;max-width: 280px;display: flex;flex-direction: column;gap: 0.25rem;position: relative;}article:is(:hover, :focus-visible) {z-index: 2;}.glows {pointer-events: none;position: absolute;inset: 0;filter: blur(calc(var(--blur) * 1px));}.glows::after,.glows::before {--alpha: 0;content: "";background: var(--gradient);background-attachment: fixed;position: absolute;inset: -5px;border: 10px solid transparent;border-radius: var(--border-radius);mask:linear-gradient(#0000, #0000),conic-gradient(from calc((var(--start) - (var(--spread) * 0.5)) * 1deg), #000 0deg, #fff, #0000 calc(var(--spread) * 1deg));mask-composite: intersect;mask-clip: padding-box, border-box;opacity: var(--active);transition: opacity 1s;}article::before {position: absolute;inset: 0;border: var(--border-width) solid transparent;content: "";border-radius: var(--border-radius);pointer-events: none;background: var(--border);background-attachment: fixed;border-radius: var(--border-radius);mask:linear-gradient(#0000, #0000),conic-gradient(from calc(((var(--start) + (var(--spread) * 0.25)) - (var(--spread) * 1.5)) * 1deg),hsl(0 0% 100% / 0.15) 0deg,white,hsl(0 0% 100% / 0.15) calc(var(--spread) * 2.5deg));mask-clip: padding-box, border-box;mask-composite: intersect;opacity: var(--active);transition: opacity 1s;}article::after {--bg-size: 100%;content: "";pointer-events: none;position: absolute;background: var(--gradient);background-attachment: fixed;border-radius: var(--border-radius);opacity: var(--active, 0);transition: opacity 1s;--alpha: 0;inset: 0;border: var(--border-width) solid transparent;mask:linear-gradient(#0000, #0000),conic-gradient(from calc(((var(--start) + (var(--spread) * 0.25)) - (var(--spread) * 0.5)) * 1deg), #0000 0deg, #fff, #0000 calc(var(--spread) * 0.5deg));filter: brightness(1.5);mask-clip: padding-box, border-box;mask-composite: intersect;}.badge {border: 2px solid var(--border);align-self: start;border-radius: 100px;padding: 0.5rem 0.7rem;font-size: 0.675rem;display: flex;align-items: center;gap: 0.25rem;font-weight: 50;}a {color: var(--color);text-decoration: none;opacity: 0.5;display: inline-block;align-self: start;transition: opacity 0.2s;}a:is(:hover, :focus-visible) {opacity: 1;}article h2 {margin: 0;padding: 1rem 0;font-weight: 100;font-size: 1.5rem;}.header {position: relative;flex: 1;display: flex;align-items: center;}.header svg {--count: 4;width: 106px;}.header svg:nth-of-type(2),.header svg:nth-of-type(3),.header svg:nth-of-type(4) {position: absolute;z-index: calc(var(--count) - var(--index));translate: calc(var(--index) * 30%) 0;opacity: calc(var(--count) / (2 * (var(--index) * 10)));}.header svg:nth-of-type(2) {--index: 1;}.header svg:nth-of-type(3) {--index: 2;}.header svg:nth-of-type(4) {--index: 3;}.badge svg {width: 16px;}.dg.ac {z-index: 99999 !important;}</style>
</head><body><div class="container" style="--gap:32;--blur:20;--spread:80;--direction:'column'"><article><div class="glows"></div></article><article ><div class="glows" ></div></article></div><script>const CONTAINER = document.querySelector('.container')const CARDS = document.querySelectorAll('article')const CONFIG = {proximity: 40,spread: 80,blur: 20,gap: 32,vertical: false,opacity: 0,}const PROXIMITY = 10const UPDATE = (event) => {// get the angle based on the center point of the card and pointer positionfor (const CARD of CARDS) {// Check the card against the proximity and then start updatingconst CARD_BOUNDS = CARD.getBoundingClientRect()// Get distance between pointer and outerbounds of cardif (event?.x > CARD_BOUNDS.left - CONFIG.proximity &&event?.x < CARD_BOUNDS.left + CARD_BOUNDS.width + CONFIG.proximity &&event?.y > CARD_BOUNDS.top - CONFIG.proximity &&event?.y < CARD_BOUNDS.top + CARD_BOUNDS.height + CONFIG.proximity) {// If within proximity set the active opacityCARD.style.setProperty('--active', 1)} else {CARD.style.setProperty('--active', CONFIG.opacity)}const CARD_CENTER = [CARD_BOUNDS.left + CARD_BOUNDS.width * 0.5,CARD_BOUNDS.top + CARD_BOUNDS.height * 0.5]let ANGLE = Math.atan2(event?.y - CARD_CENTER[1], event?.x - CARD_CENTER[0]) * 180 / Math.PIANGLE = ANGLE < 0 ? ANGLE + 360 : ANGLE;CARD.style.setProperty('--start', ANGLE + 90)}}document.body.addEventListener('pointermove', UPDATE)const RESTYLE = () => {CONTAINER.style.setProperty('--gap', CONFIG.gap)CONTAINER.style.setProperty('--blur', CONFIG.blur)CONTAINER.style.setProperty('--spread', CONFIG.spread)CONTAINER.style.setProperty('--direction', CONFIG.vertical ? 'column' : 'row')}RESTYLE()UPDATE()</script>
</body></html>

三、利用clip-path实现流动边框效果

四边:
在这里插入图片描述
两边:
请添加图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {background-color: black;display: flex;justify-content: center;align-items: center;height: 100vh;}.box {height: 150px;width: 150px;position: relative;border-radius: 10px;display: flex;justify-content: center;align-items: center;background-image: linear-gradient(45deg, gold, deeppink);/* animation: hue 3s infinite linear; *//* &::before,&::after {content: "";position: absolute;top: -15px;bottom: -15px;left: -15px;right: -15px;border: 5px solid #24acf2;border-image: linear-gradient(45deg, gold, deeppink) 1;clip-path: inset(0px round 10px);animation: clippath 3s infinite linear;}&::after {animation: clippath 3s infinite -1.5s linear;}span {color: white;font-size: 20px;} */}.line {position: absolute;top: -15px;bottom: -15px;left: -15px;right: -15px;border: 5px solid #24acf2;border-image: linear-gradient(45deg, gold, blue, deeppink) 1;/* clip-path: inset(0px round 10px); */animation: clippath 8s infinite linear;filter: blur(50px);animation-delay: -0s;box-shadow: 0 0 3px inset rgba(247, 214, 1,0.3);}.line-2 {animation-delay: -2s;animation: clippath2 8s infinite -2s linear;}.line-3 {animation-delay: -4s;}.line-4 {animation-delay: -6s;animation: clippath2 8s infinite -6s linear;}/* .line-2,.line-4{top: -20px;bottom: -20px;left: -20px;right: -20px;} */@keyframes hue {0% {filter: hue-rotate(0deg);}100% {filter: hue-rotate(360deg);}}@keyframes clippath {0% {clip-path: inset(0 0 95% 0);filter: hue-rotate(0deg) blur(5px);}25% {clip-path: inset(0 95% 0 0);}50% {clip-path: inset(95% 0 0 0);}75% {clip-path: inset(0 0 0 95%);}100% {clip-path: inset(0 0 95% 0);filter: hue-rotate(360deg) blur(5px);}}@keyframes clippath2 {0% {clip-path: inset(0 0 95% 0);filter: hue-rotate(0deg) blur(10px);}25% {clip-path: inset(0 95% 0 0);}50% {clip-path: inset(95% 0 0 0);}75% {clip-path: inset(0 0 0 95%);}100% {clip-path: inset(0 0 95% 0);filter: hue-rotate(360deg) blur(10px);}}</style>
</head><body><div class="box"><div class="line-1 line"></div><!-- <div class="line-2 line"></div> --><div class="line-3 line"></div><!-- <div class="line-4 line"></div> --><span>hello world</span></div>
</body></html>

四、
请添加图片描述

<button><div>A beautiful button</div>
</button>@property --border-angle-1 {syntax: "<angle>";inherits: true;initial-value: 0deg;
}@property --border-angle-2 {syntax: "<angle>";inherits: true;initial-value: 90deg;
}@property --border-angle-3 {syntax: "<angle>";inherits: true;initial-value: 180deg;
}/* sRGB color. */
:root {--bright-blue: rgb(0, 100, 255);--bright-green: rgb(0, 255, 0);--bright-red: rgb(255, 0, 0);--background: black;--foreground: white;--border-size: 2px;--border-radius: 0.75em;
}/* Display-P3 color, when supported. */
@supports (color: color(display-p3 1 1 1)) {:root {--bright-blue: color(display-p3 0 0.2 1);--bright-green: color(display-p3 0.4 1 0);--bright-red: color(display-p3 1 0 0);}
}@keyframes rotateBackground {to { --border-angle-1: 360deg; }
}@keyframes rotateBackground2 {to { --border-angle-2: -270deg; }
}@keyframes rotateBackground3 {to { --border-angle-3: 540deg; }
}body {background: var(--background);color: var(--foreground);min-height: 100dvh;display: grid;place-content: center;margin: 0;font-family: "Aspekta";
}button {--border-angle-1: 0deg;--border-angle-2: 90deg;--border-angle-3: 180deg;color: inherit;font-size: calc(0.8rem + 4vmin);font-family: inherit;border: 0;padding: var(--border-size);display: flex;width: max-content;border-radius: var(--border-radius);background-color: transparent;background-image: conic-gradient(from var(--border-angle-1) at 10% 15%,transparent,var(--bright-blue) 10%,transparent 30%,transparent),conic-gradient(from var(--border-angle-2) at 70% 60%,transparent,var(--bright-green) 10%,transparent 60%,transparent),conic-gradient(from var(--border-angle-3) at 50% 20%,transparent,var(--bright-red) 10%,transparent 50%,transparent);animation: rotateBackground 3s linear infinite,rotateBackground2 8s linear infinite,rotateBackground3 13s linear infinite;
}/* Change this background to transparent to see how the gradient works */
button div {background: var(--background); padding: 1em 1.5em;border-radius: calc(var(--border-radius) - var(--border-size));color: var(--foreground);
}

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

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

相关文章

Ubuntu-22.04 安装Confulence

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

第四节:如何使用注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)

大家好&#xff0c;我是网创有方&#xff0c;上一节学习了如何理解Spring的两个特性IOC和AOP&#xff0c;这一节来基于上节的内容进行一个简单实践。这节要实现的效果是通过IOC容器获取到Bean&#xff0c;并且将Bean的属性显示打印出来。 第一步&#xff1a;创建pojo实体类stu…

操作系统之《处理器机调度算法》【知识点+详细解题过程】

目录 PS:处理机调度算法相关公式&#xff1a; 1、【FCFS】先来先服务调度算法 2、【SJF&#xff08;SPF&#xff09;】短作业&#xff08;进程&#xff09;优先调度算法 3、【HRRF】最高响应比优先算法 4、【SRTF】最短剩余时间优先调度算法&#xff08;抢占式&am…

SpringCloudAlibaba基础四 微服务调用组件OpenFeign

JAVA 项目中如何实现接口调用&#xff1f; 1&#xff09;Httpclient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 …

COB显示屏厂家为您详细解析COB显示屏的制造流程

倒装COB显示屏所采用的工艺与传统SMD LED显示屏完全不同&#xff0c;其是直接把LED发光芯片封装于PCB基板之上&#xff0c;因此其能够提供更小的像素间距&#xff0c;并且产品表面覆盖有高分子材料涂层&#xff0c;能够增强产品的防磕碰能力以及防水能力&#xff0c;在之前的文…

STM32开发方式的演变与未来展望

一、STM32开发方式的演变 自2007年STM32微控制器首次亮相以来&#xff0c;其开发方式经历了从寄存器到标准库&#xff0c;再到HAL&#xff08;硬件抽象层&#xff09;的演变。 1.寄存器开发&#xff08;2007年-2010年代初&#xff09; 最初&#xff0c;由于初期缺乏足够的软…

使用AI的100种方法#翻译神器N3

Text "100 ways to" and "use AI" in the poster center .A cozy desk setup with an open notebook featuring notes and drawings, a cup of coffee, a white pen, and dried flowers. Warm, earthy tones create a calming, aesthetic vibe. 第 3 种可能…

【每日一练】python运算符

1. 算术运算符 编写一个Python程序&#xff0c;要求用户输入两个数&#xff0c;并执行以下运算&#xff1a;加法、减法、乘法、求余、除法、以及第一个数的第二个数次方。将结果打印出来。 a input("请输入第一个数&#xff1a;") b input("请输入第二个数&…

15秒下雨短视频:成都柏煜文化传媒有限公司

15秒下雨短视频&#xff1a;瞬间的诗意与情感共鸣 在数字时代的浪潮中&#xff0c;短视频以其独特的魅力&#xff0c;成为了人们生活中不可或缺的一部分。其中&#xff0c;一段仅15秒的下雨短视频&#xff0c;成都柏煜文化传媒有限公司 或许在时间长河中只是一瞬间&#xff0c…

集群分布式储存

硬件&#xff1a; 存储柜 软件 &#xff1a; software define storage 分布式存储 是一种独特的系统架构由一组能够通过网络连通&#xff0c;为了完成共同任务而协调任务的计算机节点组成分布式是为了使用廉价的普通的计算机完成复杂的计算和存储任务目的就是利用更多的机…

【详细】CNN中的卷积计算是什么-实例讲解

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、 CNN的基础卷积计算1.1.一个例子了解CNN的卷积计算是什么1.2.卷积层的生物意义 二、卷积的拓展&#xff1a;多输入通道与多输出通道2.1.多输入通道卷积2.2.多输出通道卷积 三、卷积的实现3.1.pytorch实现卷积…

Redis 缓存预热、缓存雪崩、缓存击穿、缓存穿透业务实践

0、前言 本文所有代码可见 > 【gitee code demo】 本文会涉及 缓存预热、缓存雪崩、缓存击穿、缓存穿透介绍和解决方案业务实践 1、缓存预热 1.1、描述 提前将热点数据加载到缓存&#xff0c;提前响应&#xff0c;降低后端数据源访问压力 1.2、实践 Autowiredprivate R…

搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境(DAP-LINK: N32G45XVL-STB)

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL产生测试项目 2.1 FSP生成项目 2.2 Keil中配置 3 硬件连接框图 4 一个测试案例 4.1 功能介绍 4.2 定时器函数 5 测试 搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境&#xff08…

MySQL【触发器、存储过程、函数、范式】

day53 MySQL 触发器 创建触发器&#xff1a;&#xff08;before &#xff1a; 前置触发器、after &#xff1a;后置触发器&#xff09; 语法&#xff1a; delimiter xx 指定分隔符xxcreate trigger 触发器名 [before | after] 触发事件 on 表名 for each row 执行语句begin…

重磅!UOSDN焕新,开启创新之旅!

亲爱的开发者们 经过精心打磨和优化 全新改版的UOSDN&#xff08;统信开发者支持网络&#xff09; 已经正式上线啦&#xff01; 我们致力于为您打造一个更加便捷、高效、富有创意和互动性的开发平台&#xff0c;详情&#x1f449;https://uosdn.uniontech.com/ 以UOSDN作为载…

数字信号处理实验四(FIR数字滤波器设计)

FIR数字滤波器设计&#xff08;2学时&#xff09; 要求&#xff1a; 设计一个最小阶次的低通FIR数字滤波器&#xff0c;性能指标为&#xff1a;通带0Hz~1500Hz&#xff0c;阻带截止频率2000Hz&#xff0c;通带波动不大于1%&#xff0c;阻带波动不大于1%&#xff0c;采样频率为8…

常见的反爬手段和解决思路(爬虫与反爬虫)

常见的反爬手段和解决思路&#xff08;爬虫与反爬虫&#xff09; 学习目标1 服务器反爬的原因2 服务器长反什么样的爬虫&#xff08;1&#xff09;十分低级的应届毕业生&#xff08;2&#xff09;十分低级的创业小公司&#xff08;3&#xff09;不小心写错了没人去停止的失控小…

安装Docker运行TensorFlow容器-《MCU嵌入式AI开发笔记》(第9集)搜索柔贝特三哥视频同步更新

安装Docker运行 TensorFlow 容器-《MCU嵌入式AI开发笔记》&#xff08;第9集&#xff09;。目标&#xff1a;在国产MCU上运行AI深度学习算法&#xff0c;实现识别、判断等功能。搜索柔贝特三哥&#xff0c;《MCU嵌入式AI开发笔记》视频同步更新。 安装Docker运行 TensorFlow 容…

[推荐]有安全一点的网贷大数据信用查询网站吗?

在互联网金融日益发展的今天&#xff0c;网贷大数据查询网站成为了许多人申贷前的必备工具。随着使用这些网站的人群越来越多&#xff0c;安全问题也逐渐浮出水面。最近&#xff0c;就有许多用户反馈自己的个人信息在网贷大数据查询网站上被泄露。为了解决这一问题&#xff0c;…

reactjs18 中使用路由技巧

react18 版本中&#xff0c;路由的用法发生了变化&#xff0c;react18 版本中&#xff0c;路由由 react-router-dom 包提供。与 react-router 包不同的是&#xff0c;react-router-dom 包提供了 createBrowserRouter 方法&#xff0c;该方法可以创建路由对象。总之&#xff0c;…