首页 > 其他分享 >html+css实现太极动画

html+css实现太极动画

时间:2024-11-13 20:14:25浏览次数:3  
标签:box 动画 rotate 50% html 元素 太极 css

 

目录

1.实现原理

2.代码实现


       本文章将用html+css实现太极动画效果,具体效果如下图展示,页面中间显示太极,当鼠标移入太极时,太极能够顺时针旋转,当移出鼠标后,太极停止转动。文章后面附有源代码,可创建一个html文件并复制代码运行,即可得到下图效果。

1.实现原理

        图片的太极其实为一个div元素,先创建一个div元素,设置背景颜色为上白下黑,需要将元素css样式的background属性设置为linear-gradient(white 50%, black 50%),linear-gradient表示渐变颜色,从左到右(默认方向,除非通过to关键字指定了其他方向)进行的。white 50%表示在渐变的50%位置(也就是正中间)之前,颜色是白色。black 50%表示从50%位置开始,颜色是黑色。效果如下面的草稿图所示:

        然后将元素的边框弧度修改为圆形,设置css样式的border-radius为50%即可得到下面的效果图:

        接下来是最关键的部分,即太极中间的两个圆形如何绘制,此时需要利用css的伪元素。假设元素的类样式为.box,创建一个伪元素.box::before,并设置宽高为100px,边框弧度border-radius设置为50%,设置背景颜色为background: radial-gradient(white 25%, black 30%)。radial-gradient表示css径向渐变。径向渐变是从一个中心点向外扩散的渐变效果。在这个特定的例子中,渐变是从圆心开始的。这里的 white 25% 表示在渐变圆圈的25%半径范围内,颜色是白色。black 30% 表示从圆心向外,到达30%半径的位置时,颜色是黑色。然而,这里的渐变过渡并不是线性的,而是在这两个指定的点之间平滑地过渡。为了方便大家看见,图中的伪元素用红线圈起来。

同理,可创建伪元素.box::after,css样式跟第一个伪元素类似,见下面效果图,用红线圈起来的即为创建的第二个伪元素:

太极的基础样式显示出来,接下来是太极的运动。使用css的关键帧动画:

  • @keyframes rotate:声明了一个动画关键帧(keyframes)的名称,这里是 rotate,也可以是其他名称,比如rotate1,test1之类的。

  • 0%:这是动画的起始点,表示动画开始时的状态。在这个状态下,transform: rotate(0deg); 指定了元素应该被旋转0度,即保持原始位置不变。

  • 100%:这是动画的结束点,表示动画完成时的状态。在这个状态下,transform: rotate(360deg); 指定了元素应该被旋转360度,即完成了一个完整的圆周旋转。

@keyframes rotate {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

将这个关键帧动画给这个太极元素,假设太极元素的类元素为.box,设置animation属性使用该关键帧动画,代码如下:

  • .box 元素将会应用 rotate 动画。
  • 动画将持续0.5秒完成一个完整的周期。
  • 动画将以线性速度linear进行,即匀速运动,速度在整个动画过程中保持不变。
  • infinite表示动画将无限次重复。
  • paused表示初始状态为暂停,如果没有paused,太极元素在最开始就开始运动。
.box {
  animation: rotate 0.5s linear infinite paused;
}

最后是鼠标移入元素让其运动,代码如下,将animation-play-state设置为running,即让元素开始运动,:hover表示鼠标移动到了元素上。

.box:hover {
  animation-play-state: running;
}

2.代码实现

下面是最终代码,在做个人项目时,可以将其作为图标应用到网页中,提高页面的观赏性。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
      background-color: antiquewhite;
    }

    .box {
      width: 200px;
      height: 200px;
      background: linear-gradient(white 50%, black 50%);
      display: flex;
      align-items: center;
      border-radius: 50%;
      margin: 100px auto;
      animation: rotate 0.5s linear infinite paused;
    }

    .box:hover {
      animation-play-state: running;
    }

    @keyframes rotate {
      0% {
        transform: rotate(0deg);
      }

      100% {
        transform: rotate(360deg);
      }
    }

    .box::before {
      content: "";
      width: 100px;
      height: 100px;
      display: block;
      background: radial-gradient(white 25%, black 30%);
      border-radius: 50%;
    }

    .box::after {
      content: "";
      width: 100px;
      height: 100px;
      display: block;
      background: radial-gradient(black 25%, white 30%);
      border-radius: 50%;
    }
  </style>
</head>

<body>
  <div class="box">

  </div>
</body>

</html>

标签:box,动画,rotate,50%,html,元素,太极,css
From: https://blog.csdn.net/apowers/article/details/143750200

相关文章

  • 【前端】HTML
    目录一、HTML结构1.1HTML标签1.2HTML文件基本结构1.3快速生成框架二、HTML常见标签2.1注释标签!----2.2标题标签h1到h62.3段落标签p2.4换行标签br2.5格式化标签2.6图片标签img2.7超链接标签a三、表格标签3.1常用标签3.2合并单元格四、列表标签五、......
  • 前端技术html中对表单元素的学习
    表单元素目录表单元素基本结构常见的表单元素示例form表单元素在HTML中用于收集用户输入的数据,以便将数据发送到服务器进行处理。表单可以包含多种类型的输入元素,如文本字段、密码字段、单选按钮、复选框、下拉选择菜单、提交按钮等。用户填写表单后,通常通过点击提交按钮将......
  • 第8章利用CSS制作导航菜单
    8.1水平顶部导航栏水平菜单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。8.1.1简单水平导航栏的设计与实现8.1.1.1导航栏的创建<nav>标签是HTML5新增的文档结构标签,用于标记导航栏,以便......
  • 第8章利用CSS制作导航菜单
    8.1水平顶部导航栏8.1.1简单水平导航栏的设计与实现1导航栏的创建        <nav>        在<nav>的首尾标签之间,使用<div>标签创建菜单范围,结合无序列表<ul>和有列表<al>标签,配合列表选项<li>创建菜单选项。其中选项内容使用超链接的形式,链接就址当前......
  • 免费HTML模板和CSS样式网站汇总
    HTML模板:(注意版权,部分不可商用)1、Tooplate,免费HTML模板下载Download60+FreeHTMLTemplatesforyourwebsitesDownload60+freeHTMLwebsitetemplatesorresponsiveBootstraptemplatesinstantlyfromTooplatehttps://www.tooplate.com/free-templates选中模板......
  • html实体字符
    HTML实体字符HTML实体字符(HTMLEntities)是在HTML中用来表示那些在HTML文档中直接使用可能会引起问题的特殊字符的一种方法。这些特殊字符包括但不限于尖括号、与号、引号等,它们在HTML中有特定的用途(如标签界定符、属性值分隔符等),如果直接使用,浏览器可能会误解它们......
  • Python模块之manim (动画模块)
    模块作用简介:Python模块之manim(动画模块)官方英文帮助:https://docs.python.org/3/library/官方简体中文帮助:https://docs.python.org/zh-cn/3/library/manim官方:https://docs.manim.community/en/stable/installation.html必要操作:>>>frommanimimport*......
  • 前端动画工具Lottie
    gif动画太大,用在app或者web页面要加载半天,影响用户体验svg配合CSS开发者工作量太大,手动转换非常费时Lottie可以把AdobeAfterEffects动画导出成data.json文件,配合官方的js文件可以渲染动画,data.json文件比gif小的多,https://airbnb.io/lottie/#/web官网https://github.co......
  • 基于Angular的动画展示网站+登录注册(cognito)
    项目介绍本项目为本人angular练习练手项目,是基于Angular的Web应用,用于展示和搜索Bangumi上的动画,使用API来自BangumiAPI。本项目使用GitHubActions自动部署到GitHubPages。项目名称my-angular-project-test地址:https://dreaife.github.io/my-angular-project-......
  • HTML5期末大作业:北京旅游网页设计制作(1页) 简单静态HTML网页作品 我的旅游网页作业成
    ......