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

目录

前言

开始

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布局、渐变背景和关键帧动画,这段代码展示了如何创建一个动态的、响应式的加载效果,增强了用户的交互体验。这种技术可以广泛应用于网页设计中,作为一个视觉反馈,告知用户数据正在加载,同时也为页面增添了现代感和吸引力。

 

 

 

相关推荐

  1. 制作一个简单HTML个人网站

    2024-04-06 12:10:03       53 阅读
  2. 制作一个简单html网页

    2024-04-06 12:10:03       50 阅读
  3. 制作一个简单HTML个人网页

    2024-04-06 12:10:03       50 阅读
  4. 制作一个简单HTML个人网页

    2024-04-06 12:10:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 12:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 12:10:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 12:10:03       82 阅读
  4. Python语言-面向对象

    2024-04-06 12:10:03       91 阅读

热门阅读

  1. electron入门教程

    2024-04-06 12:10:03       30 阅读
  2. 数据挖掘笔记

    2024-04-06 12:10:03       26 阅读
  3. C++ 枚举类型 ← 关键字 enum

    2024-04-06 12:10:03       38 阅读
  4. Client sent an HTTP request to an HTTPS server

    2024-04-06 12:10:03       38 阅读
  5. 服务限流的算法及其实现

    2024-04-06 12:10:03       37 阅读
  6. Spring AOP 详解

    2024-04-06 12:10:03       36 阅读
  7. vue-Router(初级篇)

    2024-04-06 12:10:03       36 阅读
  8. golang判断字符串是否包含中文

    2024-04-06 12:10:03       37 阅读
  9. Vue中的ref与reactive

    2024-04-06 12:10:03       34 阅读
  10. uploadrar 这个网站

    2024-04-06 12:10:03       46 阅读
  11. C语言如何声明外部变量?

    2024-04-06 12:10:03       39 阅读
  12. 【Python BUG】anaconda安装报错Error:Cannot unpack file

    2024-04-06 12:10:03       37 阅读