首页 > 其他分享 >教你如何用纯css代码实现太极阴阳鱼动画效果

教你如何用纯css代码实现太极阴阳鱼动画效果

时间:2022-12-09 16:58:00浏览次数:43  
标签:50% 250px transform height rotateX 阴阳鱼 用纯 0% css


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

把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;
}

最终效果图如下:

完成!

总结:

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

标签:50%,250px,transform,height,rotateX,阴阳鱼,用纯,0%,css
From: https://www.cnblogs.com/qian-fen/p/16969342.html

相关文章

  • css 网页置灰
    body*{-webkit-filter:grayscale(100%);/*webkit*/-moz-filter:grayscale(100%);/*firefox*/-ms-filter:grayscale(100%);/*ie9*/-o-filter:grayscale(100%......
  • 大一学生《Web编程基础》期末网页制作 HTML+CSS+JavaScript 网页设计实例 企业网站制
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • JavaWeb-CSS
    JavaWeb-CSS1概述CSS是一门语言,用于控制网页表现。我们之前介绍过W3C标准。W3C标准规定了网页是由以下组成:结构:HTML表现:CSS行为:JavaScriptCSS也有一个专业的名......
  • css知识点简记
    1.改变position:fixed;定位基准元素的方式,父级以上元素的:①tranform属性值不为none的元素②perspective值不为none的元素③will-change中指定了任意CS......
  • CSS速查笔记
    什么是CSS?控制页面样式的,通常放在HTML的head标签内使用CSS结构选择器{css样式}css样式:{属性:值,属性:值,属性:值}CSS的引入方式有3种:一般都是在html种的head标签内加css......
  • 02jQuery之筛选选择器、链式编程、addClass( )、css( )、元素的显示和隐藏
    筛选选择器:语法描述示例:even选取索引是偶数的所有元素(index从0开始)$("li:even")选取索引是偶数的所有li元素:odd选取索引是奇数的所有元素(index从0开始)$("li:odd")选取......
  • CSS相对定位3大应用场景5个实战应用案例详解
    昨天发布的margin的5个重难点,受到了很多粉丝们的关注和收藏。我发现,作为学习Web前端开发的同学最大的痛苦莫过于,学了一堆知识,但到了实际的应用开发中不知道如何灵活运用。......
  • css1
    css01css简介css基础选择器css字体属性css文本属性css的引入方式综合案例调试工具1.css简介css主要是为了美化页面布局页面的html太丑了css是层叠样式表的......
  • #yyds干货盘点#css样式vh屏幕高度
    众所周知,在从css3中,vh和wh指的是浏览器可见区域。1vw等于视窗总宽度的1%1vh等于视窗总高度的1%移动端使用vh遇到的问题由于,各种浏览器的计算高度不一样,譬如Safari浏览......
  • 用HTML+CSS做一个漂亮简单大学生校园班级网页
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......