- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
最近,在看 LPL 比赛的时候,看到这样一个有意思的六芒星能力图动画:
今天,我们就来使用纯 CSS 实现这样一个动画效果! 。
对于如下这样一个背景网格, 最好的方式当然肯定是切图 ,或者使用 SVG 路径.
如果一定要使用 CSS,勉强也能做,这就涉及了 不规则图形边框 效果,我们有一些方式可以实现,可以参考一下这几篇文章:
这里,我们可以使用 drop-shadow() ,大致实现一下这个效果,核心步骤:
drop-shadow()
实现边框效果 用动图演示一下,大概是这样:
代码如下:
<div></div>
div {
position: relative;
width: 150px;
height: 260px;
background: #fff;
filter:
drop-shadow(0 0 .5px #333)
drop-shadow(0 0 .5px #333)
drop-shadow(0 0 .5px #333);
&::before,
&::after {
content: "";
position: absolute;
inset: 0;
background: inherit;
}
&::before {
transform: rotate(60deg);
}
&::after {
transform: rotate(-60deg);
}
}
效果如下:
只需要多叠加几次,配合 3 条直线,整个背景就能很快的画出来,完整的代码,使用 SASS 表示如下:
<div class="g-container">
<ul class="g-bg">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
.g-container {
position: relative;
width: 300px;
height: 300px;
}
.g-bg {
position: absolute;
inset: 0;
&::after {
content: "";
position: absolute;
inset: 20px 0;
z-index: 6;
background:
linear-gradient(transparent, transparent calc(50% - .5px), #333 calc(50% - .5px), #333 calc(50% + .5px), transparent calc(50% + .5px), transparent),
linear-gradient(120deg, transparent, transparent calc(50% - 1px), #333 calc(50% - .5px), #333 calc(50% + .5px), transparent calc(50% + 1px), transparent),
linear-gradient(240deg, transparent, transparent calc(50% - 1px), #333 calc(50% - .5px), #333 calc(50% + .5px), transparent calc(50% + 1px), transparent);
clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}
li {
--rotate: 0deg;
position: absolute;
width: 150px;
height: 260px;
translate: -50% -50%;
left: 50%;
top: 50%;
background: #fff;
filter:
drop-shadow(0 0 .5px #333)
drop-shadow(0 0 .5px #333)
drop-shadow(0 0 .5px #333);
&::before,
&::after {
content: "";
position: absolute;
inset: 0;
background: inherit;
}
&::before {
transform: rotate(60deg);
}
&::after {
transform: rotate(-60deg);
}
}
@for $i from 1 to 5 {
li:nth-child(#{$i}) {
z-index: #{$i};
width: #{(1 - $i / 5) * 150}px;
height: #{(1 - $i / 5) * 260}px;
}
}
}
背景网格就出来了:
有了背景图,接下来,我们只需要实现六芒星效果图加上动画即可.
要实现这么一个图形其实非常简单,利用 clip-path 裁剪即可:
只需要两步:
clip-path
进行裁剪 核心代码:
<div></div>
···
```CSS
div {
background: linear-gradient(rgba(241,94,174, .8), rgba(255, 152, 0, .8));
clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}
当然,我们可以把坐标点当成参数,把坐标点计算好后,通过内联标签的 style 传递进 CSS 中,这样,就可以展示不同基于的六芒星的图案.
像是这样:
<div style="--polygon: 30% 10%, 75% 1%, 94% 51%, 71% 94%, 44% 60%, 8% 50%"></div>
<div style="--polygon: 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%"></div>
···
```CSS
div {
background: linear-gradient(rgba(241,94,174, .8), rgba(255, 152, 0, .8));
clip-path: polygon(var(--polygon));
}
这样就能快速得到不同的图形:
最后一步,我们只需要实现 Hover 动画即可.
这里,我们需要借助 CSS @property 实现.
关于 CSS @property,还不太了解的同学,可以参考: CSS @property,让不可能变可能 .
这里其实就是一个饼图动画,首先,我们来实现一个动态的饼图动画.
假设,我们有如下结构:
<div></div>
.normal {
width: 200px;
height: 200px;
border-radius: 50%;
background: conic-gradient(yellowgreen, yellowgreen 25%, transparent 25%, transparent 100%);
transition: background 300ms;
&:hover {
background: conic-gradient(yellowgreen, yellowgreen 60%, transparent 60.1%, transparent 100%);
}
}
将会得到这样一种效果,由于 conic-gradient 是不支持过渡动画的,得到的是一帧向另外一帧的直接变化:
好,使用 CSS @property 自定义变量改造一下:
@property --per {
syntax: '<percentage>';
inherits: false;
initial-value: 25%;
}
div {
background: conic-gradient(yellowgreen, yellowgreen var(--per), transparent var(--per), transparent 100%);
transition: --per 300ms linear;
&:hover {
--per: 60%;
}
}
看看改造后的效果,借助 CSS @property 自定义变量,我们能够实现过往无法实现的过渡动画效果:
CodePode Demo -- conic-gradient 配合 CSS @property 实现饼图动画 。
在本 DEMO 中,我们会运用一样的技巧,只不过,我们会把 CSS @property 自定义变量运用在 mask 上,通过 mask 的遮罩效果,实现 Hover 过程的展示动画.
关于 mask,还不太了解的同学,可以参考: 奇妙的 CSS MASK .
核心代码如下:
<div class="g-content" style="--polygon: 43% 36%, 69% 12%, 99% 50%, 71% 94%, 30% 90%, 5% 50%"></div>
@property --per {
syntax: '<percentage> | <angle>';
inherits: false;
initial-value: 360deg;
}
.g-content {
position: absolute;
inset: 20px 0;
z-index: 10;
mask: conic-gradient(#000, #000 var(--per), transparent var(--per), transparent 360deg);
&:hover {
animation: hoverPie 600ms ease-in-out;
}
&::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(rgba(241,94,174, .8), rgba(255, 152, 0, .8));
clip-path: polygon(var(--polygon));
}
}
@keyframes hoverPie {
0% {
--per: 0deg;
}
100% {
--per: 360deg;
}
}
这里:
&::before
实现了我们上述说的六芒星样式图 mask
配合一个 CSS @property 属性实现遮罩动画 整体 Hover 上去的效果如下:
我们把上述所有的内容融合一下,就能得到完整的效果:
至此,我们就大致还原了整个效果,撒花! 。
完整的代码,你可以戳这里: CodePen Demo -- LPL Player Hexagram Ability Chart Animation 。
好了,本文到此结束,希望本文对你有所帮助 😃 。
想 Get 到最有意思的 CSS 资讯,千万不要错过我的公众号 -- iCSS前端趣闻 😄 。
更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏.
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知.
想 Get 到最有意思的 CSS 资讯,千万不要错过我的 iCSS 公众号 😄 :
最后此篇关于英雄联盟比赛选手的六芒星能力图动画是如何制作的?的文章就讲到这里了,如果你想了解更多关于英雄联盟比赛选手的六芒星能力图动画是如何制作的?的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
下面的代码是我一直在研究的代码。当我根据产品的计算分数对产品进行评级时,我认为我的逻辑是有缺陷的,这就是我混淆的地方。而且我也不确定如何根据分数创建评级图像。数组中的第一列是得分值,第二列是产品 ID
我正在尝试为大学作业实现 A 星搜索方法,所以我有点需要从头开始,但我在使其以正确的方式工作时遇到了一些麻烦。这是我的问题的图片: 如您所见,它确实找到了一条路径,但不是最简单的路径。 这是我的工具:
我正在寻找一些关于我可以使用什么方法来构建一个 javascript 文件的指针,该文件将把 1-5 下拉菜单变成一系列 5 个可点击的星星(一个老式的 youtube 评级系统) 不需要执行AJAX
嗯,这是我更新的代码。它不会减速,但不会出现路径。 public static IntPosition[] GetPath(BlockType[,] blocks, IntPosition start
嗨,我已经在ubuntu镜像上构建并安装了ziftrCoin钱包。 8084e9de3c23 ubuntu:latest "/bin/bash" 25 hours ago Up About a min
我正在实现双向 A* 搜索(双向搜索是同时从起点和终点执行的,当这两个搜索相遇时,我将获得最短路径 - 至少有一点额外逻辑被抛出)。 有没有人有使用单向 A* 和双向化(!)它的经验 - 我可以期待什
在花了很长时间使这段代码工作之后,有人可以向我解释为什么当我将指向字符串的指针作为参数传递给函数时需要 2 颗星吗?根据定义,指针将地址保存到将放置某个变量的内存中。所以它是一个有自己地址的变量,在这
我正在研究 A* 寻路算法,由于某种原因,在某个时刻我遇到了空指针异常,但我不知道为什么。问题出现在类 Astar 第 79 行,这是 H 值的简单 setter 。 这是 Astar 类: impo
使用 ./* 或 ./. 是否相同? 例如,如果我尝试 chmod 755 ./* -R 或 chmod 755 ./*.* -R 它会得到相同的结果,使这里的文件和目录使用755权限。但是我想知道这
我正在使用它,并希望将一个新的 css 类“half”添加到星形选择类中,以便只用背景色填充星形的一半:#e54800 https://foundation.zurb.com/building-blo
我从以下位置获得此 CSS: https://www.cssscript.com/simple-5-star-rating-system-with-css-and-html-radios 但我希望星级
我需要开发一个帖子投票系统。每个用户都可以通过点击拇指图标来喜欢一个帖子,通过点击壁炉图标来喜欢一个帖子,将来也许我有一个明星系统作为替代方案。 我正在寻找更好的解决方案来实现这个系统,目前,我有两种
我最近开始学习使用 webgl 创建更复杂的多边形,但是我目前无法创建六 Angular 星形多边形。我尝试过使用 gl.TRIANGLES,但是它创建了不寻常的形状,这根本不是我想要的。 我所说的六
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有一些评级代码: $('div.rateit').rateit(); 我希望它也能用于添加的元素。 这是插件:http://rateit.codeplex.com/ 最佳答案 它有效! : 如果您查
我正在为死亡金属制作一个网站,想知道是否可以使用边框属性在 CSS3 中制作一个五 Angular 星。我能够找到一些引用资料,使我相信有可能制作出 6 分星,但经过几个小时的精神折磨后,我放弃了制作
我已经从 this stackoverflow thread 实现了自定义评级栏即使我将 numStars 设置为 5 或任何其他数字,它也不会显示超过一颗星 这是代码。 我正在为图像使用矢量绘图。
这些函数定义中的*args和**kwargs是什么意思? def foo(x, y, *args): pass def bar(x, y, **kwargs): pass 参见Wha
这些函数定义中的*args和**kwargs是什么意思? def foo(x, y, *args): pass def bar(x, y, **kwargs): pass 参见Wha
标准方法如下:AI:一种现代方法 function UNIFORM-COST-SEARCH node if node is in explored then continue if GOAL
我是一名优秀的程序员,十分优秀!