丈夫志四海,万里犹比邻。这篇文章主要讲述#yyds干货盘点#用SVG画一个月亮相关的知识,希望能为你提供帮助。
用SVG画一个月亮废话不多说,直接上代码
html:
<
!DOCTYPE html>
<
html lang="en" >
<
head>
<
meta charset="UTF-8">
<
title>
中秋月亮倒影<
/title>
<
link rel="stylesheet" href="https://www.songbingjia.com/android/css/style.css">
<
/head>
<
body>
<
svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<
filter id="sketch">
<
feTurbulence type="fractalNoise" baseFrequency=".05 .5" numOctaves="3" result="noise1">
<
/feTurbulence>
<
feColorMatrix in="noise1" type="hueRotate" values="0" result="noise2">
<
animate attributeName="values" from="0" to="360" dur="1.5s" repeatCount="indefinite"/>
<
/feColorMatrix>
<
feDisplacementMap xChannelSelector="R" yChannelSelector="G" scale="60" in="SourceGraphic" in2="noise2" />
<
/filter>
<
/svg>
<
div>
<
/div>
<
/body>
<
/html>
css:
body
background: linear-gradient(#28f, #03a);
height: 100vh;
div
width: 10vw;
height: 10vw;
background-color: #ff9;
border-radius: 50%;
position: absolute;
top: calc(50% - 5vw);
left: calc(50% - 5vw);
-webkit-filter: url(#sketch);
filter: url(#sketch);
box-shadow: 0 0 0 5vw rgba(255, 255, 255, 0.15);
没错 就是这个简单,下面给大家分析一下制作原理:
首先使用css画一个
重点是倒影效果的制作 我们用到的技术是SVG
什么是SVG呢?
SVG 意为可缩放矢量图形(Scalable Vector Graphics)。
SVG 使用 XML 格式定义图像。
feTurbulence
feTurbulence是湍流滤镜 可以实现云朵、大理石质感、烟雾、火焰效果等很多很酷的效果。
feTurbulence滤镜创建的图像效果采用的是Perlin湍流函数算法,可以生成Perlin Noise(Perlin噪声、柏林噪声)。
【#yyds干货盘点#用SVG画一个月亮】type属性值是
fractalNoise
和turbulence
turbulence
默认值。表示湍流、混乱。
fractalNoise
表示分形噪声。
baseFrequency
的属性值的水平和垂直的噪点频率比是1:10,因此,会有类似水平拉伸的效果属性
numOctaves
就表示倍频的数量,默认值是1,不能是小数,只能是整数,如果是小数会当作默认值1处理。倍频可以理解为由频率和振幅定义的噪声函数。feTurbulence滤镜效果就是通过频率增加而幅度减小的几个倍频叠加建立起来的。feColorMatrix
色彩矩阵的滤镜,用一个的矩阵计算,將圆片的色彩重新计算后输出,便可以达到各种不同的色彩变化效果
type属性值为hueRotate表示对色相的改变,values 值表示角度,也就是色相环要旋转的角度。
animate顾名思义就是动画的意思了
feDisplacementMap
feDisplacementMap
实际上是一个位置替换滤镜,就是改变元素和图形的像素位置的。scale
表示计算后的偏移值相乘的比例,scale
越大,则偏移越大xChannelSelector
对应XC(x,y)
,表示X轴坐标使用的是哪个颜色通道进行位置偏移。颜色有RGBA四个通道,R表示red红色,G表示green绿色,B表示blue蓝色,A表示alpha可以理解为透明度。因此,xChannelSelector
属性值可以是R、G、B、A中的任意一个,默认是A,基于透明度进行位置偏移。yChannelSelector
和xChannelSelector
类似,只是一个是x轴(横轴)方向,一个是y轴(纵轴)方向效果:
文章图片
推荐阅读
- 硬核 - Java 随机数相关 API 的演进与思考(下)
- 记一次调优过程—Spark读取OBS文件入ES
- Amazon EKS 中 EFS 持久性存储
- 微服务架构 | 1. 微服务相关基础知识 #yyds干货盘点#
- 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏05图像仿射变换(平移和缩放操作)
- Golang(定时器的终止与重置)
- #yyds干货盘点# springcloud整合eureka实现服务注册与发现
- 高可用k8s集群搭建1.17.0
- 3516 L1 Linux版本成功启动!可以愉快地玩耍了~