今天看到一个有意思的效果,闲来无事做一个:

把2d静态的太极图改成了3d,阴极和阳极分到了两个平面里实现旋转效果,这个好实现,重点是实现它的透明效果,平面太极图显示出两极是用另加的块元素挡住底面的颜色,但如果上图的两极用遮挡来实现效果的话并不能实现透明,将遮挡的块设为透明又会显示出底面原本的样子,所以这个思路不对。那就只能将底面本身变为透明,但怎么实现既透明又能出现这种样子呢?渐变,而且为了能出现圆的样子选择了径向渐变。

效果:

路明确,开始操作

一个极分成四个块,圆头,肚子,尾,还有分离的小圆。

第一块圆,中间透明。

第二块与之相连,为了不遮挡第一块中间的圆所以要改一下

给右上角加圆角属性改为半圆,加上径向渐变,原点改为靠左居中再调一下透明的百分比。

阳极结构代码如下:

  1. <!-- 阳极 -->
  2. <main>
  3. <section></section>
  4. <section></section>
  5. <section></section>
  6. <section></section>
  7. </main>

    阳极css代码如下:
  1. main{
  2. width:500px;
  3. height:500px;
  4. position:absolute;
  5. top:100px;
  6. left:500px;
  7. transform:rotateX(-20deg);
  8. }
  9. main section:nth-of-type(1){
  10. width:250px;
  11. height:250px;
  12. position:absolute;
  13. bottom:0;
  14. right:0;
  15. border-bottom-right-radius:500px;
  16. background:radial-gradient(circle at 0% 50%,transparent 44.6%,#284070 0%);
  17. }
  18. main section:nth-of-type(2){
  19. width:250px;
  20. height:250px;
  21. position:absolute;
  22. top:0;
  23. right:0;
  24. border-top-right-radius:500px;
  25. background:radial-gradient(circle at 0% 50%,transparent 44.6%,#284070 0%);
  26. }
  27. main section:nth-of-type(3){
  28. width:250px;
  29. height:250px;
  30. position:absolute;
  31. top:0;
  32. left:125px;
  33. border-radius:50%;
  34. background:radial-gradient(circle at center,transparent 62.5px,#284070 0%);
  35. }
  36. main section:nth-of-type(4){
  37. width:125px;
  38. height:125px;
  39. background:#284070;
  40. position:absolute;
  41. bottom:62.5px;
  42. left:187.5px;
  43. border-radius:50%;
  44. }

阳极效果图如下:

阴极结构代码如下:

  1. <!-- 阴极 -->
  2. <article>
  3. <aside></aside>
  4. <aside></aside>
  5. <aside></aside>
  6. <aside></aside>
  7. </article>

阴极css代码如下:

  1. article{
  2. width:500px;
  3. height:500px;
  4. position:absolute;
  5. top:100px;
  6. left:500px;
  7. transform:rotateX(-20deg);
  8. }
  9. article aside:nth-of-type(1){
  10. width:250px;
  11. height:250px;
  12. position:absolute;
  13. bottom:0;
  14. left:0;
  15. border-bottom-left-radius:500px;
  16. background:radial-gradient(circle at 100% 50%,transparent 44.6%,#889090 0%);
  17. }
  18. article aside:nth-of-type(2){
  19. width:250px;
  20. height:250px;
  21. position:absolute;
  22. top:0;
  23. left:0;
  24. border-top-left-radius:500px;
  25. background:radial-gradient(circle at 100% 50%,transparent 44.6%,#889090 0%);
  26. }
  27. article aside:nth-of-type(3){
  28. width:250px;
  29. height:250px;
  30. position:absolute;
  31. bottom:0;
  32. left:125px;
  33. border-radius:50%;
  34. background:radial-gradient(circle at center,transparent 62.5px,#889090 0%);
  35. }
  36. article aside:nth-of-type(4){
  37. width:125px;
  38. height:125px;
  39. background:#889090;
  40. position:absolute;
  41. top:62.5px;
  42. left:187.5px;
  43. border-radius:50%;
  44. }

阴极效果图如下:

阳极加阴极效果图:

将2d平面转换为3d代码如下:

  1. body{ transform-style:preserve-3d; background:#000; perspective:1800px; }

将2d平面转换为3d效果如下:

创建动画关键帧及添加animation属性代码:

阳极动画关键帧:

  1. @keyframes mv1{
  2. 0%{
  3. transform:rotateX(45deg) rotateY(30deg) rotateZ(0deg);
  4. }
  5. 50%{
  6. transform:rotateX(45deg) rotateY(30deg) rotateZ(-180deg);
  7. }
  8. 100%{
  9. transform:rotateX(45deg) rotateY(30deg) rotateZ(-360deg);
  10. }
  11. }

给阳极添加animation属性代码:

  1. main{
  2. transform:rotateX(45deg) rotateY(30deg);
  3. animation:mv1 2.5s linear infinite;
  4. }

阴极动画关键帧:

  1. @keyframes mv2{
  2. 0%{
  3. transform:rotateX(45deg) rotateY(-30deg) rotateZ(0deg);
  4. }
  5. 50%{
  6. transform:rotateX(45deg) rotateY(-30deg) rotateZ(-180deg);
  7. }
  8. 100%{
  9. transform:rotateX(45deg) rotateY(-30deg) rotateZ(-360deg);
  10. }
  11. }

给阴极添加animation属性代码:

  1. article{
  2. transform:rotateX(45deg) rotateY(-30deg);
  3. animation:mv2 2.5s linear infinite;
  4. }

最终效果图如下:

完成!

总结:

整体没有难度,难在想到它的透明并且怎样去实现。因为不能用常规的遮挡,只能让自身实现透明效果。顺着这个思路想到径向渐变然后去实现效果。有了思路剩下的就是常规的敲了。

教你如何用纯css代码实现太极阴阳鱼动画效果的更多相关文章

  1. 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZMwgqK 可交互视频 此视频是可 ...

  2. 如何用纯 CSS 创作一个变色旋转动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ejZWKL 可交互视频 ...

  3. 如何用纯 CSS 创作一个方块旋转动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gjgyWm 可交互视频 ...

  4. 如何用纯 CSS 创作一个菱形 loader 动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教 ...

  5. 如何用纯 CSS 创作一个均衡器 loader 动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oybWBy 可交互视频教 ...

  6. 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VEyoGj 可交互视频 此视频是可 ...

  7. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教程 此视频 ...

  8. 前端每日实战:86# 视频演示如何用纯 CSS 创作一个方块旋转动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gjgyWm 可交互视频 此视频是可 ...

  9. 前端每日实战:81# 视频演示如何用纯 CSS 创作一个变色旋转动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ejZWKL 可交互视频 此视频是可 ...

  10. 前端每日实战:42# 视频演示如何用纯 CSS 创作一个均衡器 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oybWBy 可交互视频教程 此视频 ...

随机推荐

  1. git 代码已经commit ,发现提错了分支

    步骤: git reset HEAD^ //把上次提交恢复为未提交状态 git status //查看当前状态 git stash //将修改add到暂存区,暂存代码 git checkout 分支 ...

  2. postman收藏 -大佬玩法。

    请求顺序:    https://www.cnblogs.com/superhin/p/11454832.html 在Postman脚本中发送请求(pm.sendRequest) : https:// ...

  3. FFT简单概述

    概念 快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效.快速计算方法的统称,简称FFT.快速傅里叶变换是1965年由J.W.库利和T. ...

  4. Jmeter添加while控制器

    通过添加while控制器,可以实现条件+循环判断,使while控制器内的子线程根据之前线程的返回(while控制器内外变量皆可)进行触发+循环的控制. 原理如下:通过Condition判断条件语句是否 ...

  5. 20220720 第七组 陈美娜 Java String用法

    关于String引用数据类型 1.字符串中,两个变量的==指的是虚地址 2.String一旦声明不可改变:赋值进去,原值不会被替代.原值也可能指向其他地址: 3.s.length():字符的个数 4. ...

  6. ReactHooks_useState

    import { useState } from "react"; import './App.css'; function App() {   const [redBorder, ...

  7. 了解JAVA基本知识以及一下常用的dos命令

    9月5日学习 常用的Dos命令 #盘符切换盘符名称: =>回车​#查看当前目录下的所有文件dir​#切换目录 cd change directorycd .. =>返回上一级目录​#清理屏 ...

  8. K8S的kubectl命令详解

    一.kubectl 基本命令 1.陈述式资源管理方法: 1.kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口 2.kubectl 是官方的CLI命令行工具,用 ...

  9. heimaJava-网络编程

    Java 网络编程 概念 网络编程可以让程序与网络上的其他设备中的程序进行数据交互 网络通信基本模式 常见的通信模式有如下两种形式,Client-Server(CS),Browser/Server(B ...

  10. HTML基础知识学习

    一.HTML概述 1.系统结构: ①.B/S架构 Browser Server(浏览器/服务器的交互形式.) Browser支持哪些语言:HTML CSS Javascript S是服务器端Serve ...