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

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

效果:

路明确,开始操作

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

第一块圆,中间透明。

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

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

阳极结构代码如下:

<!-- 阳极 -->
<main>
<section></section>
<section></section>
<section></section>
<section></section>
</main>

阳极css代码如下:
main{
width:500px;
height:500px;
position:absolute;
top:100px;
left:500px;
transform:rotateX(-20deg);
} main section:nth-of-type(1){
width:250px;
height:250px;
position:absolute;
bottom:0;
right:0;
border-bottom-right-radius:500px;
background:radial-gradient(circle at 0% 50%,transparent 44.6%,#284070 0%);
}
main section:nth-of-type(2){
width:250px;
height:250px;
position:absolute;
top:0;
right:0;
border-top-right-radius:500px;
background:radial-gradient(circle at 0% 50%,transparent 44.6%,#284070 0%);
}
main section:nth-of-type(3){
width:250px;
height:250px;
position:absolute;
top:0;
left:125px;
border-radius:50%;
background:radial-gradient(circle at center,transparent 62.5px,#284070 0%);
}
main section:nth-of-type(4){
width:125px;
height:125px;
background:#284070;
position:absolute;
bottom:62.5px;
left:187.5px;
border-radius:50%; }

阳极效果图如下:

阴极结构代码如下:

<!-- 阴极 -->
<article>
<aside></aside>
<aside></aside>
<aside></aside>
<aside></aside>
</article>

阴极css代码如下:

article{
width:500px;
height:500px;
position:absolute;
top:100px;
left:500px;
transform:rotateX(-20deg);
} article aside:nth-of-type(1){
width:250px;
height:250px;
position:absolute;
bottom:0;
left:0;
border-bottom-left-radius:500px;
background:radial-gradient(circle at 100% 50%,transparent 44.6%,#889090 0%);
}
article aside:nth-of-type(2){
width:250px;
height:250px;
position:absolute;
top:0;
left:0;
border-top-left-radius:500px;
background:radial-gradient(circle at 100% 50%,transparent 44.6%,#889090 0%);
}
article aside:nth-of-type(3){
width:250px;
height:250px;
position:absolute;
bottom:0;
left:125px;
border-radius:50%;
background:radial-gradient(circle at center,transparent 62.5px,#889090 0%);
}
article aside:nth-of-type(4){
width:125px;
height:125px;
background:#889090;
position:absolute;
top:62.5px;
left:187.5px;
border-radius:50%; }

阴极效果图如下:

阳极加阴极效果图:

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

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

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

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

阳极动画关键帧:

@keyframes mv1{
0%{
transform:rotateX(45deg) rotateY(30deg) rotateZ(0deg);
}
50%{
transform:rotateX(45deg) rotateY(30deg) rotateZ(-180deg);
}
100%{
transform:rotateX(45deg) rotateY(30deg) rotateZ(-360deg);
}
}

给阳极添加animation属性代码:

main{
transform:rotateX(45deg) rotateY(30deg);
animation:mv1 2.5s linear infinite;
}

阴极动画关键帧:

@keyframes mv2{
0%{
transform:rotateX(45deg) rotateY(-30deg) rotateZ(0deg);
}
50%{
transform:rotateX(45deg) rotateY(-30deg) rotateZ(-180deg);
}
100%{
transform:rotateX(45deg) rotateY(-30deg) rotateZ(-360deg);
}
}

给阴极添加animation属性代码:

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

最终效果图如下:

完成!

总结:

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

教你如何用纯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. Linux-非Root用户-配置深度学习环境

    1|01 简介 Anaconda:是一个开源的Python发行版本,其包含了conda.Python等软件包,numpy,pandas,scipy等科学计算包. Conda:包管理器, venv+pi ...

  2. Ubuntu linux下gcc、g++不同版本的安装和切换

    讲解linux下gcc.g++不同版本的安装和切换 Ubuntu 18.04预装GCC版本为7.3,但有时在编译是需要用的不同gcc版本,下面介绍,如何安装不同的gcc 和g++,并设置根据不同的需要 ...

  3. JavaScript数据类型以及转换

    一.数据类型 分类 基本(值)类型: String Number Boolean undefined unll 对象(引用)类型: Object:任意对象 Array:一种特别的对象 Function ...

  4. 20200925--矩阵乘法(奥赛一本通P94 多维数组)

    计算两个矩阵的乘法.n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C是n*k阶的,且C[i][j]=A[i][0]*B[0][j]+A[i][1]*B[1][j]+...+A[i][m-1]*B[m- ...

  5. git在linux安装步骤详解!!

    linux上安装,以centos 7.x为例 yum命令安装 yum install gityum install 安装的git不是最新版本,如需最新版本需要自行编译 到下面的网站下载合适的版本 ht ...

  6. js中的占位函数

    String.prototype.signMix= function() { if(arguments.length === 0) return this; var param = arguments ...

  7. [读书笔记]FDTD与YEE晶胞

    截图选自Understanding the Finite-Difference Time-Domain Metho  作者是John B. Schneider 有限差分时域(FDTD)方法使用有限差分 ...

  8. selenium--- 数据驱动测试 ddt

    通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据.将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下 ...

  9. python-实现二叉树

    # encoding=utf-8 class Node(object): def __init__(self, item): self.item = item self.lchild = None s ...

  10. System.IO.IOException:“找不到资源“views.buttonstylepage.xaml”。”

    初学作为记录(事发场景): WPFDemo的程序集中,定义了一个Views文件夹,该文件夹放一些页面Page.UI层面的东西.用Frame空间做导航的时候,始终报一个错误   //   System. ...