HTML,CSS,JavaScript实例 —— 齿轮,按钮

news2024/11/20 11:28:39

文章目录

  • 一、动态按钮
  • 二、CSS实例
  • 三、滚动的齿轮


一、动态按钮

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			html,
			body {
				background: black;
				height: 100%;
				display: flex;
				align-items: center;
				justify-content: center;
			}

			.circle {
				width: 8px;
				height: 8px;
				border-radius: 50%;
				position: absolute;
				top: 50%;
				left: 50%;
				margin: -4px 0 0 -4px;
				pointer-events: none;
				mix-blend-mode: screen;
				z-index: 10;
				box-shadow: 0px 0px 8px 0px #FDFCA9 inset, 0px 0px 24px 0px #FFEB3B, 0px 0px 8px 0px #FFFFFF42;
			}

			.button-wrapper {
				position: relative;
			}

			.button {
				z-index: 1;
				position: relative;
				text-decoration: none;
				text-align: center;
				appearance: none;
				display: inline-block;
			}

			.button::before {
				content: "";
				box-shadow: 0px 0px 24px 0px #FFEB3B;
				mix-blend-mode: screen;
				transition: opacity 0.3s;

				position: absolute;
				top: 0;
				right: 0;
				left: 0;
				bottom: 0;
				border-radius: 999px;
				opacity: 0;
			}

			.button::after {
				content: "";
				box-shadow: 0px 0px 23px 0px #FDFCA9 inset, 0px 0px 8px 0px #FFFFFF42;
				transition: opacity 0.3s;

				position: absolute;
				top: 0;
				right: 0;
				left: 0;
				bottom: 0;
				border-radius: 999px;
				opacity: 0;
			}

			.button-wrapper:hover {

				.button::before,
				.button::after {
					opacity: 1;
				}

				.dot {
					transform: translate(0, 0) rotate(var(--rotatation));
				}

				.dot::after {
					animation-play-state: running;
				}
			}

			.dot {
				display: block;
				position: absolute;
				transition: transform calc(var(--speed) / 12) ease;
				width: var(--size);
				height: var(--size);
				transform: translate(var(--starting-x), var(--starting-y)) rotate(var(--rotatation));
			}

			.dot::after {
				content: "";
				animation: hoverFirefly var(--speed) infinite, dimFirefly calc(var(--speed) / 2) infinite calc(var(--speed) / 3);
				animation-play-state: paused;
				display: block;
				border-radius: 100%;
				background: yellow;
				width: 100%;
				height: 100%;
				box-shadow: 0px 0px 6px 0px #FFEB3B, 0px 0px 4px 0px #FDFCA9 inset, 0px 0px 2px 1px #FFFFFF42;
			}

			.dot-1 {
				--rotatation: 0deg;
				--speed: 14s;
				--size: 6px;
				--starting-x: 30px;
				--starting-y: 20px;
				top: 2px;
				left: -16px;
				opacity: 0.7;
			}

			.dot-2 {
				--rotatation: 122deg;
				--speed: 16s;
				--size: 3px;
				--starting-x: 40px;
				--starting-y: 10px;
				top: 1px;
				left: 0px;
				opacity: 0.7;
			}

			.dot-3 {
				--rotatation: 39deg;
				--speed: 20s;
				--size: 4px;
				--starting-x: -10px;
				--starting-y: 20px;
				top: -8px;
				right: 14px;
			}

			.dot-4 {
				--rotatation: 220deg;
				--speed: 18s;
				--size: 2px;
				--starting-x: -30px;
				--starting-y: -5px;
				bottom: 4px;
				right: -14px;
				opacity: 0.9;
			}

			.dot-5 {
				--rotatation: 190deg;
				--speed: 22s;
				--size: 5px;
				--starting-x: -40px;
				--starting-y: -20px;
				bottom: -6px;
				right: -3px;
			}

			.dot-6 {
				--rotatation: 20deg;
				--speed: 15s;
				--size: 4px;
				--starting-x: 12px;
				--starting-y: -18px;
				bottom: -12px;
				left: 30px;
				opacity: 0.7;
			}

			.dot-7 {
				--rotatation: 300deg;
				--speed: 19s;
				--size: 3px;
				--starting-x: 6px;
				--starting-y: -20px;
				bottom: -16px;
				left: 44px;
			}

			@keyframes dimFirefly {
				0% {
					opacity: 1;
				}

				25% {
					opacity: 0.4;
				}

				50% {
					opacity: 0.8;
				}

				75% {
					opacity: 0.5;
				}

				100% {
					opacity: 1;
				}
			}

			@keyframes hoverFirefly {
				0% {
					transform: translate(0, 0);
				}

				12% {
					transform: translate(3px, 1px);
				}

				24% {
					transform: translate(-2px, 3px);
				}

				37% {
					transform: translate(2px, -2px);
				}

				55% {
					transform: translate(-1px, 0);
				}

				74% {
					transform: translate(0, 2px);
				}

				88% {
					transform: translate(-3px, -1px);
				}

				100% {
					transform: translate(0, 0);
				}
			}
		</style>
	</head>
	<body>
		<a class="button-wrapper">
			<span class="dot dot-1"></span>
			<span class="dot dot-2"></span>
			<span class="dot dot-3"></span>
			<span class="dot dot-4"></span>
			<span class="dot dot-5"></span>
			<span class="dot dot-6"></span>
			<span class="dot dot-7"></span>
			<span class="button bg-yellow-500 px-16 py-4 rounded-full uppercase">Button<span>
		</a>

		<div id="circle" class="circle bg-yellow-500"></div>
	</body>
	<script type="text/javascript">
		var kinet = new Kinet({
			acceleration: 0.02,
			friction: 0.25,
			names: ["x", "y"],
		});

		var circle = document.getElementById('circle');

		kinet.on('tick', function(instances) {
			circle.style.transform =
				`translate3d(${ (instances.x.current) }px, ${ (instances.y.current) }px, 0) rotateX(${ (instances.x.velocity/2) }deg) rotateY(${ (instances.y.velocity/2) }deg)`;
		});

		document.addEventListener('mousemove', function(event) {
			kinet.animate('x', event.clientX - window.innerWidth / 2);
			kinet.animate('y', event.clientY - window.innerHeight / 2);
		});

		kinet.on('start', function() {
			console.log('start');
		});

		kinet.on('end', function() {
			console.log('end');
		});
	</script>
</html>

二、CSS实例

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.text-effect-wrapper,
			.text {

				&::before,
				&::after {
					content: "";
					position: absolute;
					inset: 0;
					pointer-events: none;
				}
			}

			.text-effect-wrapper {
				--spotlight-color: white;

				overflow: hidden;
				position: relative;

				&::before {
					animation: shimmer 5s infinite linear;
					background:
						radial-gradient(circle, var(--spotlight-color), transparent 25%) 0 0 / 25% 25%,
						radial-gradient(circle, var(--spotlight-color), black 25%) 50% 50% / 12.5% 12.5%;
					inset-block-start: -100%;
					inset-inline-start: -100%;
					mix-blend-mode: color-dodge;
					z-index: 3;
				}

				&::after {
					backdrop-filter: blur(1px) brightness(90%) contrast(150%);
					z-index: 4;
				}
			}

			@keyframes shimmer {
				100% {
					transform: translate3d(50%, 50%, 0);
				}
			}

			.text {
				--background-color: black;
				--text-color: white;
				
				--color-1: red;
				--color-2: blue;

				color: transparent;
				text-shadow:
					0 0 0.02em var(--background-color),
					0 0 0.02em var(--text-color),
					0 0 0.02em var(--text-color),
					0 0 0.02em var(--text-color);

				&::before {
					backdrop-filter: blur(0.013em) brightness(400%);
					z-index: 1;
				}

				&::after {
					background: linear-gradient(45deg, var(--color-1), var(--color-2));
					mix-blend-mode: multiply;
					z-index: 2;
				}
			}
			
			body:has(#option-toggle:checked) {
				& .text-effect-wrapper {
					--spotlight-color: orange;

					&::after {
						backdrop-filter: brightness(90%) contrast(150%);
					}
				}

				& .text {
					--angle: 5deg;
					--color-1: hsl(163, 100%, 51%);
					--color-2: hsl(295, 88%, 32%);
					--color-3: hsl(59, 100%, 50%);

					text-shadow:
						0 0 0.03em var(--background-color),
						0 0 0.03em var(--text-color);

					&::before {
						backdrop-filter: brightness(150%) contrast(200%);
					}

					&::after {
						background: linear-gradient(var(--angle), var(--color-1), var(--color-2), var(--color-3));
						mix-blend-mode: color-dodge;
					}
				}
			}


			h1 {
				--font-size: clamp(6.25rem, 3.25rem + 15vw, 13.75rem);

				font: 700 var(--font-size)/1 "Lato", sans-serif;
				text-transform: uppercase;
				text-align: center;
				margin: 0;

				&:empty,
				&:focus {
					border: 2px dotted white;
					min-width: 1ch;
					outline-offset: 5px;
				}
			}

			body {
				background: black;
				display: flex;
				min-height: 100vh;
				justify-content: center;
				align-content: center;
				align-items: center;
			}

			label {
				background-color: hsl(240deg, 20%, 50%);
				border-radius: 5px;
				color: #fff;
				padding: 0.5em 1em;

				position: fixed;
				bottom: 1rem;
				right: 1rem;
				z-index: 1000;

				&:has(:checked) {
					background-color: hsl(350deg, 60%, 50%);
				}
			}

			input {
				position: absolute;
				opacity: 0;
			}
		</style>
	</head>
	<body>
		<div class="text-effect-wrapper">
			<h1 class="text" contenteditable>WanderTp</h1>
		</div>

		<label for="option-toggle">
			<input type="checkbox" id="option-toggle"> Version toggle
		</label>
	</body>
</html>

三、滚动的齿轮

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			html {
				display: grid;
				place-items: center;
				min-height: 100vh;
				background: #111;
			}

			#machine {
				width: 300px;
				aspect-ratio: 1/1;
				/*   outline: 1px solid black;   */
			}

			.gear {
				width: 100px;
				aspect-ratio: 1/1;
				/*   border-radius: 50%; */
				background:
					radial-gradient(circle at 5% 5%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 50% -10px, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 95% 5%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 110px 50%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 95% 95%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 50% 110px, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 5% 95%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at -10px 50%, transparent 20px, gray 21px, transparent 30px),
					radial-gradient(circle at 50% 50%, transparent 25px, gray 26px, transparent 50px);
			}

			.gear:nth-child(1) {
				transform: scale(.75) translate(45%, 45%) rotate(22.5deg);
				animation: roll1 3s linear infinite;
			}

			@keyframes roll1 {
				100% {
					transform: scale(.75) translate(45%, 45%) rotate(-341.5deg);
				}
			}

			.gear:nth-child(2) {
				transform: translateX(100%);
				animation: roll2 3s linear infinite;
			}

			@keyframes roll2 {
				100% {
					transform: translateX(100%) rotate(359deg);
				}
			}

			.gear:nth-child(3) {
				transform: scale(.75) translate(180%, -20%) rotate(22.5deg);
				animation: roll3 3s linear infinite;
			}

			@keyframes roll3 {
				100% {
					transform: scale(.75) translate(180%, -20%) rotate(-341.5deg);
				}
			}
		</style>
	</head>
	<body>
		<div id='machine'>
			<div class='gear'></div>
			<div class='gear'></div>
			<div class='gear'></div>
		</div>
	</body>

</html>

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

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

相关文章

如何在Bing搜索进行广告推广?2024年必应广告投放怎么做?【附开户攻略】

必应&#xff08;Bing&#xff09;作为全球领先的搜索引擎之一&#xff0c;拥有一个独特且庞大的用户群体&#xff0c;尤其在美国和欧洲市场&#xff0c;很多用户选择必应作为他们的主要搜索引擎。通过必应广告&#xff0c;企业可以触达那些在其他搜索引擎上难以接触到的潜在客…

Redis 7.2.x 主从复制+哨兵模式

IP操作系统服务版本192.168.140.153CentOS 7redis-master,sentinel7.2.5192.168.140.156CentOS 7redis-slave,sentinel7.2.5192.168.140.159CentOS 7redis-slave,sentinel7.2.5 一、安装Redis 配置主从复制 参考下面文档&#xff1a; Redis 7.2.x 主从复制-CSDN博客文章浏览…

时间处理基础:Rust 的 chrono 库教程

在开发过程中&#xff0c;我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录&#xff0c;准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口&#xff0c;在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

Nature | 百年未变?博士评定机制该改改了!

19世纪初&#xff0c;德国和法国先后开始授予现代科研博士学位。时至今日&#xff0c;大学的科研与教学早已不同于往昔。但惊人的是&#xff0c;获得和评定博士学位的流程却几乎没变。但改革势在必行。 博士生导师可以从其他教育阶段的创新中学到很多东西。 Innovation in PhD…

成功学为何如此迷人……上瘾……

做自己才是唯一的解药&#xff0c;无需在意他人的看法。 写博客8年与人生第一个502万-CSDN博客 题记&#xff1a;我们并非生来强大&#xff0c;但依然可以不负青春。 原本想好好写一下如何制定一个目标并通过一点一滴的努力去实现&#xff0c;这三年反思发现其实写自己的经历并…

计量校准证书和检定证书区别,企业仪器校准要哪种证书好?

很多企业做校准&#xff0c;会要求校准机构出具相关证书&#xff0c;而有时候也会被机构询问&#xff0c;是要做检定还是校准&#xff0c;出具的证书是要校准证书还是检定证书&#xff1f;那么两者有什么区别呢&#xff1f; 1-检测方式不同 首先两种证书是不同检测方式所给的证…

【Java】解决Java报错:UnsupportedOperationException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 不可修改的集合2.2 抽象类和接口的默认实现2.3 不支持的操作 3. 解决方案3.1 使用支持操作的集合3.2 提供具体实现3.3 检查对象类型和能力 4. 预防措施4.1 使用接口而非实现类4.2 编写防御性代码4.3 使用工厂方法创建集合 5. 示例…

如何快速掌握 Java 枚举类型的定义和使用场景!

Java枚举类型&#xff08;Enum&#xff09;是一种特殊的类&#xff0c;用于表示一组固定的常量。枚举类型在Java 5中引入&#xff0c;通过 enum 关键字来定义。枚举类型不仅可以使代码更具可读性&#xff0c;还能增加类型安全性并减少错误。 一、枚举类型的定义 枚举类型通过…

大模型训练的10个调试技巧

几年前&#xff0c;Andrej Karpathy 写了一篇关于训练神经网络的很棒的文章。以下是我在实施过程中遵循的一些额外事项&#xff0c;侧重于调试大型语言模型。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 -…

程序猿大战Python——流程控制——其他控制语句

for循环 目标&#xff1a;掌握for循环的使用。 与while循环功能类似&#xff0c;for语句也能完成反复多次的执行。 for语法&#xff1a; for 临时变量 in 序列:满足条件时&#xff0c;执行的代码1满足条件时&#xff0c;执行的代码2…… [else:当for循环正常执行结束后&#…

基于PHP+MySQL组合开发的商城小程序源码系统 附带完整的安装代码包以及搭建教程

系统概述 该商城小程序源码系统采用PHP作为后端开发语言&#xff0c;MySQL作为数据库存储引擎&#xff0c;这是一套成熟且广泛应用的技术组合&#xff0c;能够确保系统的稳定性和扩展性。前端部分则利用Vue.js等现代前端框架实现动态交互&#xff0c;保证用户体验的流畅性。 …

Java | Leetcode Java题解之第141题环形链表

题目&#xff1a; 题解&#xff1a; public class Solution {public boolean hasCycle(ListNode head) {if (head null || head.next null) {return false;}ListNode slow head;ListNode fast head.next;while (slow ! fast) {if (fast null || fast.next null) {return…

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本 像ChatGPT这样的人工智能系统可能很快就会耗尽让它们变得更聪明的东西——人们在网上写下和分享的数万亿字。 Epoch AI研究集团发布的一项新研究预计&#xff0c;科技公司将在大约十年之交——2026年至203…

SpringBoot + Maven

文章目录 1、Maven2、SpringBoot3、二者之间的联系4、项目的创建 在创建项目之前&#xff0c;肯定要知道他们之间的区别 1、Maven maven是一个跨平台的项目管理工具。它是Apache的一个开源项目&#xff0c;主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。 比如说…

cordic IP核中,sin and cos的使用

参考视频&#xff1a;FPGA IP之CORDIC_哔哩哔哩_bilibili FPGA IP之CORDIC使用与仿真_哔哩哔哩_bilibili 一、参数说明 functional selection rotate是旋转&#xff0c;sin and cos是计算这两个三角函数&#xff0c;sinh和cosh是计算双曲正弦和双曲余弦 phase format 对于…

Databricks超10亿美元收购Tabular;Zilliz 推出 Milvus Lite ; 腾讯云支持Redis 7.0

重要更新 1. Databricks超10亿美元收购Tabular&#xff0c;Databricks将增强 Delta Lake 和 Iceberg 社区合作&#xff0c;以实现 Lakehouse 底层格式的开放与兼容([1] [2])。 2. Zilliz 推出 Milvus Lite 轻量级向量数据库&#xff0c;支持本地运行&#xff1b;Milvus Lite 复…

【Go语言】面向对象编程(一):类的定义、初始化和成员方法

面向对象编程&#xff08;一&#xff09;&#xff1a;类的定义、初始化和成员方法 1 类的定义和初始化 Go 语言的面向对象编程没有 class 、 extends 、implements 之类的关键字和相应的概念&#xff0c;而是借助结构体来实现类的声明&#xff0c;如下是定义一个学生类的方法…

2024年【危险化学品经营单位主要负责人】免费试题及危险化学品经营单位主要负责人证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位主要负责人免费试题根据新危险化学品经营单位主要负责人考试大纲要求&#xff0c;安全生产模拟考试一点通将危险化学品经营单位主要负责人模拟考试试题进行汇编&#xff0c;组成一套危险化学品经营…

镜舟科技与喆塔科技签署战略合作协议,共拓工业领域数据应用

近日&#xff0c;镜舟科技与喆塔科技正式签署战略合作协议&#xff0c;旨在通过双方的深度合作&#xff0c;共同推动工业领域企业级数据分析与智能制造的融合创新&#xff0c;携手为行业客户提供更加精准、高效的数据驱动解决方案。 镜舟科技 CEO 孙文现与喆塔科技 CEO 赵文政出…

12.文件

知识点一&#xff1a;文件的存取过程 缓冲区的目的:提高存储效率磁盘使用寿命 知识点二&#xff1a;磁盘文件分类 物理上所有的磁盘文件都是二进制存储&#xff0c;以字节为单位顺序存储 逻辑上的文件分类: 文本文件&#xff1a;基于字符编码的文件&#xff0c;如ASCII、UNICO…