【HTML】制作一个简单的三角形动态图形

目录

前言

开始

HTML部分

CSS部分

效果图

总结


前言

        无需多言,本文将详细介绍一段HTML和CSS代码,具体内容如下:

 

开始

        首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],CSS的文件名改为[style.css],创建好后右键用文本文档打开,再把下面相对应代码填入后保存即可。

HTML部分

        HTML部分的代码定义了一个包含加载动画的网页结构。文档类型声明为HTML5,并且页面的主要语言被设置为英语。在<head>标签内,指定了字符编码为UTF-8,确保了网页可以正确显示各种语言的字符。网页标题被设置为“跳跃三角形装载机”,这个标题将显示在浏览器的标签页上。此外,还链接了一个名为“style.css”的外部CSS样式表,用于后续的样式定义。

  <body>标签内包含了一个类名为“loader”的<div>元素,这个容器用于创建加载动画。容器内有三个<span>元素,它们将通过CSS样式和动画效果来实现跳跃的三角形装载机动画。

<!DOCTYPE html> <!-- 声明文档类型为HTML5 -->
<html lang="en" ><!-- 根元素,设置语言为英语 -->

<head>
  <meta charset="UTF-8"> <!-- 设置字符编码为UTF-8,这是一种广泛使用的字符编码,可以显示大多数语言 -->
  <title>跳跃三角形装载机</title> <!-- 网页标题,显示在浏览器标签上 -->
  <link rel="stylesheet" href="./style.css"> <!-- 引入外部CSS样式表,位于同一目录下的style.css文件,用于定义网页样式 -->
</head>

<body>
<div class="loader"> <!-- 创建一个加载动画的容器 -->
    <span></span> <!-- 第一个三角形 -->
    <span></span> <!-- 第二个三角形 -->
    <span></span> <!-- 第三个三角形 -->
</div>
</body>

</html>

CSS部分

        CSS部分的代码主要负责定义网页的整体样式和加载动画的效果。首先,通过定义CSS变量--c,为页面指定了一个主题颜色,即橙色。

        对于<body>标签,样式包括移除外边距和内边距,设置宽高为视口的100%,以及隐藏超出元素边界的内容。使用Flexbox布局确保了页面内容的居中显示。背景设置为从中心开始的径向渐变,从深灰色过渡到黑色,为加载动画提供了一个暗色调的背景。

        .loader类的样式设置了容器的大小、定位方式、布局以及背景。背景使用了圆锥渐变,从橙色过渡到白色,并且添加了多层阴影滤镜效果,以创建3D立体效果。

        .loader span类的样式定义了每个三角形元素的大小、定位、变换基点和旋转动画。通过animation属性,每个<span>元素将无限循环地旋转,从而产生跳跃的效果。每个<span>元素的变换基点不同,这是通过transform-origin属性来实现的,以确保三角形能够以正确的方式旋转。

        最后,@keyframes spin定义了名为“spin”的关键帧动画,它规定了动画的旋转过程,从60度旋转到300度,从而完成了三角形跳跃的视觉效果。

:root {
  --c: #ffa500; /* 定义一个CSS变量 --c,并赋予它一个颜色值 #ffa500,即橙色 */
}

body {
  margin: 0; /* 移除body元素的默认外边距 */
  padding: 0; /* 移除body元素的内边距 */
  width: 100vw; /* 设置body元素的宽度为视口宽度的100% */
  height: 100vh; /* 设置body元素的高度为视口高度的100% */
  overflow: hidden; /* 隐藏超出body元素边界的内容 */
  display: flex; /* 使用Flexbox布局 */
  align-items: center; /* 垂直居中Flex容器内的子元素 */
  justify-content: center; /* 水平居中Flex容器内的子元素 */
  background: radial-gradient(circle at 50% 50%, #252525, #010101); /* 设置body背景为从中心开始的径向渐变,从#252525过渡到#010101 */
}

.loader {
  width: 15vmin; /* 设置.loader容器的宽度为视口宽度的15% */
  height: 15vmin; /* 设置.loader容器的高度为视口高度的15% */
  position: relative; /* 设置定位为相对定位 */
  display: flex; /* 使用Flexbox布局 */
  align-items: center; /* 垂直居中Flex容器内的子元素 */
  justify-content: center; /* 水平居中Flex容器内的子元素 */
  background: conic-gradient(from 150deg at 50% 14%, var(--c) 0 60deg, #fff0 0 100%); /* 设置.loader背景为圆锥渐变,从150度开始,渐变颜色为定义的--c变量值和白色 */
  filter: 
    /* 以下一系列drop-shadow滤镜用于给.loader添加多层阴影效果,创建3D立体效果 */
    drop-shadow(0.2vmin 0.2vmin 0vmin #bf7200) 
    drop-shadow(0.2vmin 0.2vmin 0vmin #ab6701) 
    drop-shadow(0.2vmin 0.2vmin 0vmin #9c5e01) 
    drop-shadow(0.2vmin 0.2vmin 0vmin #8d5502) 
    drop-shadow(0.4vmin 0.2vmin 0vmin #744602) 
    drop-shadow(0.4vmin 0.2vmin 0vmin #5f3900) 
    drop-shadow(0.4vmin 0.2vmin 0vmin #4d2e00) 
    drop-shadow(0.4vmin 0.2vmin 0vmin #382200) 
    drop-shadow(4vmin 3vmin 1vmin #0008);
}

.loader span {
  width: 100%; /* 设置span元素的宽度为.loader容器宽度的100% */
  height: 100%; /* 设置span元素的高度为.loader容器高度的100% */
  position: absolute; /* 设置定位为绝对定位,相对于最近的非static定位祖先元素 */
  transform-origin: 100% 100%; /* 设置变换的基点为元素的右下角 */
  transform: rotate(60deg); /* 初始旋转角度为60度 */
  animation: spin 1.5s ease-in-out -1.245s infinite; /* 应用名为spin的关键帧动画,持续时间1.5秒,缓动函数为ease-in-out,延迟开始时间为-1.245秒,无限循环 */
  background: conic-gradient(from 150deg at 50% 14%, var(--c) 0 60deg, #fff0 0 100%); /* 设置span背景为圆锥渐变,与.loader容器背景相同 */
}

.loader span + span {
  transform-origin: 0% 100%; /* 设置第二个span元素的变换基点为左下角 */
}

.loader span + span + span {
  transform-origin: 50% 14%; /* 设置第三个span元素的变换基点为右下角偏上 */
}

@keyframes spin {
  100% { transform: rotate(300deg); } /* 在动画的100%阶段,将span元素旋转至300度 */
}

效果图

总结

        整体而言,这段代码通过HTML和CSS的结合,创建了一个具有视觉吸引力的加载动画。HTML部分构建了基本的网页结构和加载动画的容器,而CSS部分则负责实现动画的细节和效果。通过使用CSS变量、Flexbox布局、渐变背景和关键帧动画,这段代码展示了如何创建一个动态的、响应式的加载效果,增强了用户的交互体验。这种技术可以广泛应用于网页设计中,作为一个视觉反馈,告知用户数据正在加载,同时也为页面增添了现代感和吸引力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

llama.cpp运行qwen0.5B

编译llama.cp 参考 下载模型 05b模型下载 转化模型 创建虚拟环境 conda create --prefixD:\miniconda3\envs\llamacpp python3.10 conda activate D:\miniconda3\envs\llamacpp安装所需要的包 cd G:\Cpp\llama.cpp-master pip install -r requirements.txt python conver…

JavaScript 对象管家 Proxy

JavaScript 在 ES6 中&#xff0c;引入了一个新的对象类型 Proxy&#xff0c;它可以用来代理另一个对象&#xff0c;并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人&#xff0c;其提供了一个捕捉器函数&#xff0c;可以在代理对象上拦截…

什么是ECC?ECC 和 RSA 之间有何区别?

椭圆曲线密码学 (ECC) 是一种基于椭圆曲线数学的公开密钥加密算法。 它提供了一种执行密钥交换、数字签名和加密等加密操作的安全方式。 ECC 为 1977 年首次发布的 Rivest-Shamir-Adleman (RSA) 加密算法提供了一种替代性方案。 继续阅读&#xff0c;进一步了解椭圆曲线密码学…

一文读懂!企业怎样才能选择适合自己的生产管理系统?

怎么选择适合所在企业的生产管理系统呢&#xff1f;该从哪些方面对生产管理系统进行评估&#xff1f;又怎样实现高效的生产管理呢&#xff1f; 本文我将和大家一起解决这些有关生产管理系统的问题&#xff1f; 生产管理系统模板&#xff0c;可直接查看和使用&#xff1a;https…

设备巡检系统革新:凡尔码平台的智能化配电箱管理

配电箱作为电气安全的关键环节&#xff0c;其巡检工作至关重要。传统的巡检方法依赖手工记录&#xff0c;不仅效率低下&#xff0c;而且难以确保数据的实时性和准确性。凡尔码平台的二维码设备巡检系统&#xff0c;以数字化解决方案&#xff0c;颠覆了这一过程&#xff0c;实现…

HWOD:自守数

一、知识点 break只会结束最里面的一层循环 int型数按位比较的时候&#xff0c;可以直接求余比较&#xff0c;无需转换为char型数组后再按下标比较 二、题目 1、描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776…

element-ui empty 组件源码分享

今日简单分享 empty 组件的源码实现&#xff0c;主要从以下三个方面&#xff1a; 1、empty 组件页面结构 2、empty 组件属性 3、empty 组件 slot 一、empty 组件页面结构 二、empty 组件属性 2.1 image 属性&#xff0c;图片地址&#xff0c;类型 string&#xff0c;无默认…

数据结构——栈(C语言版)

前言&#xff1a; 在学习完数据结构顺序表和链表之后&#xff0c;其实我们就可以做很多事情了&#xff0c;后面的栈和队列&#xff0c;其实就是对前面的顺序表和链表的灵活运用&#xff0c;今天我们就来学习一下栈的原理和应用。 准备工作&#xff1a;本人习惯将文件放在test.c…

线下陪玩小程序APP源码开发--线下游戏陪玩小程序App开发(源码平台)-APP小程序H5-前后端源码交付。

线下陪玩达人入驻服务系统软件开发&#xff08;APP、公众号、小程序、H5搭建&#xff09; 线下陪玩接单系统平台开发案例分析 1.丰富的娱乐项目&#xff1a;该平台提供了丰富的娱乐项目&#xff0c;包括但不限于桌游、运动、户外活动等&#xff0c;能够满足不同用户的需求。 2…

“不知今夕是何年”的周基年解法 | 得物技术

2024年1月5日&#xff0c;周五&#xff0c;本来是个美好的日子&#xff0c;期待着马上到来的周末。可是下午1点多&#xff0c;接到产品一个问题反馈&#xff0c;经过一番排查&#xff0c;23年7月份上线的功能&#xff0c;对于跨年场景的处理有问题&#xff0c;其核心在于“周的…

windows 11 如何使用 IE 浏览器

众所周知&#xff1a;IE 浏览器已经被微软废弃&#xff0c;像windows 11这种系统内置已经找不到 IE 浏览器了&#xff0c;这对前端工程师而言&#xff0c;肯定是不行的。因为项目中&#xff0c;经常有现场需要支持 ie 浏览器。&#xff08;吐槽一下&#xff1a;微软都放弃了&am…

Centos7安装单机版Kafka

下载 链接&#xff1a;https://pan.baidu.com/s/1W8lVEF6Y-xlg6zr3l9QAbg?pwdhbkt 提取码&#xff1a;hbkt 上传到服务器/opt目录 安装 # kafka安装目录为 /opt/kafka cd /opt; mkdir kafka; mv kafka_2.13-2.7.0.tgz ./kafka;cd kafka; #解压 tar -zxvf kafka_2.13-2.7.0…

OpenHarmony实战开发-如何通过Stage模型实现一个简单的游戏卡片

介绍 本示例展示了如何通过Stage模型实现一个简单的游戏卡片。 通过卡片支持的点击事件进行交互&#xff0c;让用户通过点击的先后顺序把一个乱序的成语排列成正确的成语。使用了C和TS的混合编程方式&#xff0c;将获取随机数的能力下沉到C实现&#xff0c;并通过NAPI的能力将…

[RK3588-Android12] 调试MIPI-双通道-压缩屏(Video Mode/MIPI Dphy 8Lane/DSC 144HZ)

问题描述 被测屏幕&#xff1a;小米Pad6 分辨率&#xff1a;1800X2880 模式&#xff1a;Video Mode/MIPI Dphy 8Lane/DSC 144HZ PPS: 11 00 00 89 30 80 0B 40 03 84 00 14 01 C2 01 C2 02 00 01 F4 00 20 01 AB 00 06 00 0D 05 7A 06 1A 18 00 10 F0 03 0C 20 00 06 0B 0B 33…

ssh连接虚拟机 ubuntu

目录 虚拟机设置linux 安装sshFileZilla登录 虚拟机设置 linux 安装ssh sudo apt-get install openssh-server FileZilla登录

【问题处理】银河麒麟操作系统实例分享,理光打印机lpr协议打印问题处理

1.问题环境 系统版本&#xff1a;Kylin-Desktop-V10-SP1-General-Release-xxx-20221120-x86_64 内核版本&#xff1a;linux 5.4.18-44kt-generic 系统版本&#xff1a;麒麟v10 sp1 处理器&#xff1a;kx6640ma 2.问题描述 问题详细描述&#xff1a;用户通过lpr协议去连接…

2024052期传足14场胜负前瞻

2024052期售止时间为4月3日&#xff08;周三&#xff09;22点00分&#xff0c;敬请留意&#xff1a; 本期深盘多&#xff0c;1.5以下赔率7场&#xff0c;1.5-2.0赔率1场&#xff0c;其他场次是平半盘、平盘。本期14场难度中等偏下。以下为基础盘前瞻&#xff0c;大家可根据自身…

算法学习17:背包问题(动态规划)

算法学习17&#xff1a;背包问题&#xff08;动态规划&#xff09; 文章目录 算法学习17&#xff1a;背包问题&#xff08;动态规划&#xff09;前言一、01背包问题&#xff1a;1.朴素版&#xff1a;&#xff08;二维&#xff09;2.优化版&#xff1a;&#xff08;一维&#xf…

蓝色wordpress外贸建站模板

蓝色wordpress外贸建站模板 https://www.mymoban.com/wordpress/7.html

搭建 Qt 开发环境

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、QT SDK 的下载和安装 1.QT SDK 的下载 二、QT SDK的安装 1、找到下载的文件并双击 2、双击之…