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

news2024/11/19 18:21:20

目录

前言

开始

HTML部分

CSS部分

效果图

总结


前言

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

 6210937e3a644e908e510f46797fb442.pnge91dcc0901de4203aa1219081babef05.png

开始

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

d2ff443751024176b9d551595bee35be.png

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度 */
}

效果图

070b7e029562477495bf0dfed90a864e.pnga0aaabd189a543c19b3b4960299b5e76.pngfd43f7fb5dad4a88a16b60cadf17674e.png68bc555eb9904289aa6528ead1ff3d7c.png

 

总结

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

 

 

 

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

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

相关文章

实用技巧:如何取消app的截屏禁用

因为我想要在小鹅通App做笔记,但是被小鹅通App禁用截屏了,这真是一个很糟糕的使用体验,虽然可能是为了保护商家权益…… 方法1 可以让商家设置课程可以截屏 方法2 手机root,安装Xposed框架,利用Xposed框架上面的插件我们可以对手机进行高度定制化,而安装Xposed框架的…

微信小程序 电影院售票选座票务系统5w7l6

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

4.5 day4 FreeRTOS

1.总结二进制信号量和计数型信号量的区别&#xff0c;以及他们的使用场景。 二进制信号量的数值只有0和1&#xff0c;用于共享资源的访问 计数型信号量的值一般是大于或者等于2&#xff0c;用于生产者和消费者模型 2.使用技术型信号量完成生产者和消费者模型实验。 3.总结Free…

基于单片机的炉温自动控制系统设计

**单片机设计介绍&#xff0c;基于单片机的炉温自动控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的炉温自动控制系统设计是一个综合性的项目&#xff0c;它结合了单片机技术、温度传感技术、控制算法以…

Redis从入门到精通(五)Redis实战(二)商户查询缓存

↑↑↑请在文章头部下载测试项目原代码↑↑↑ 文章目录 前言4.2 商户查询缓存4.2.1 缓存介绍4.2.2 查询商户信息的传统做法4.2.2.1 接口文档4.2.2.2 代码实现4.2.2.3 功能测试 4.2.3 查询商户信息添加Redis缓存4.2.3.1 逻辑分析4.2.3.2 代码实现4.2.3.3 功能测试 4.2.3 数据一致…

case语句

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 CASE 语句的执行方式与 IF...THEN...ELSIF 语句的执行方式类似&#xff0c;但是它是通过一个表达式的值来决定执行哪个分支 CASE 选择器表达式 WHEN 条件 1 THEN 语句序列 …

【00】【solidity最新教程】-简介

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C&#xff0c;Python 和 Javascript 语言的影响&#xff0c;设计的目的是能在以太坊虚拟机&#xff08;EVM&#xff09;上运行。 Solidity 是静态类型语言&#xff0c;支持继承、库和复杂的用…

h5 笔记2

何谓cookiecookie是记录在浏览器里的变量&#xff0c;用来存放特定的信息&#xff0c;必须利用script程序或CGI程序来写入或读取。例如&#xff0c;有些网站为了让用户不必每次都重新输入账号&#xff0c;会利用cookie来记录账号&#xff0c;下次进入网页时就会自动弹出账号&am…

STM32CubeIDE基础学习-通用定时器中断实验

STM32CubeIDE基础学习-通用定时器中断实验 文章目录 STM32CubeIDE基础学习-通用定时器中断实验前言第1章 工程配置1.1 工程外设配置部分1.2 生成工程代码部分 第2章 代码编写第3章 实验现象总结 前言 生活中很多应用都有用到定时器功能、计时功能等。 定时器中断可以大大降低…

C语言基础(一)

C语言基础&#xff08;一&#xff09; 程序程序的设计步骤计算机中数据表示非数值数据数值转换&#xff08;二、八、十六&#xff09;进制转十进制十进制转换&#xff08;二、八、十六&#xff09;进制二进制和八、十六进制转换 基本数据类型关键字&#xff08;32个&#xff09…

【复习linux相关命令】

查看命令位置&#xff0c;查找命令 which命令 查看命令的位置 [rootVM-12-15-opencloudos ~]# which cd /usr/bin/cd [rootVM-12-15-opencloudos ~]# which java /usr/local/java/jdk1.8.0_261/bin/java [rootVM-12-15-opencloudos ~]# which pwd /usr/bin/pwdfind查找文件 …

【html威廉希尔体育体育羽毛球页面带注册】学生网页设计作业源码APP是不是真的?

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构CSS&#xff1a;样式 在操作方面…

Python人工智能应用----文本情感分析

1.问题引入 接着前两节课的内容&#xff0c;今天我们要构建一个人工智能系统。 它的目的是像人类一样&#xff0c;区分评价的情感是正面还是负面的。 接下来&#xff0c;我们要对提取的文本进行感情色彩的分析&#xff0c;这个就是文本情感分析&#xff0c;我们要使用机器学习…

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种&#xff1a; 双栈&#xff1a;要求网络中所有设备均同时支持IPv4和IPv6转换&#xff1a;转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道&#xff1a;假定两个IPv6节点要使用IPv6…

6:算法基础--6.1:线性结构 ,6.2:查找算法

转上一节&#xff1a; http://t.csdnimg.cn/ql5Cdhttp://t.csdnimg.cn/ql5Cd 课程内容提要&#xff1a; 6&#xff1a;知识点考点详解 6.1&#xff1a;线性结构 通常分析时间复杂度的方法是从算法中选取-种对于所研究的问题来说是基本运算的操作&#xff0c;以 该操作重…

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性&#xff0c;在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中&#xff0c;作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题&#xff0c;该模型结合了多模态机器学习和深度图神经网络&#xff0…

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…

(React组件基础)前端八股文修炼Day6

一 类组件与函数组件有什么异同 在React中&#xff0c;类组件和函数组件是创建组件的两种主要方式。随着React的发展&#xff0c;尤其是自Hooks在React 16.8中引入以来&#xff0c;函数组件的功能变得更加强大&#xff0c;使得它们能够更加方便地与类组件相竞争。下面是类组件…

打造专业运营团队,武汉星起航引领全球跨境电商未来趋势

近年来&#xff0c;随着全球经济的不断发展&#xff0c;跨境电商作为国际贸易的一种新模式&#xff0c;已然成为推动全球经济增长的新引擎。在这个浩荡的潮流中&#xff0c;武汉星起航以亚马逊自营店铺为依托&#xff0c;凭借丰富的实战运营经验和专业的团队&#xff0c;正积极…

蓝桥杯-dfs搜索模板题(一)

蓝桥杯-dfs搜索模板题&#xff08;一&#xff09; P2089 烤鸡P1088 火星人P1149 火柴棒等式P2036 PERKETP1135 奇怪的电梯结语 P2089 烤鸡 对于每个位置枚举数字 #include<bits/stdc.h>using namespace std;const int N1010;int n;int arr[N];//临时方案 int res0;//方案…