效果展示
思路上面效果可以概括为:
鼠标未停留时:button背景与body坚持一致(以黑色为例),文字为蓝色,同一时间button四周一条蓝色的线条一直围绕button旋转鼠标停留时:button按钮背景变为蓝色,之中文字变为黑色,同一时间发生阴影、倒影根据效果图可以得出实现的有的思路:
背景颜色的变化使用hover就可以实现难点在于四周的线条这里海轰的解决问题的办法是分为上下差不多四条线,赋予每一条线一个动作漫画,通过延时达到类似一条线的效果这里使用的蓝色:
蓝色:#03e9f4Demo代码HTML
html,body{ margin: 0; height: 100%;}body{ display: flex; justify-content: center; align-items: center; background: black;}.btn{ width: 300px; height: 120px; font-family: 'Lato', sans-serif; font-weight: 500; font-size: 36px; color: #03e9f4; /* 字符间的距离 */ letter-spacing: 2px; background: transparent; border: none; position: relative; overflow: hidden; transition: 0.5s;}.btn:hover{ background: #03e9f4; color: black; box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 200px #03e9f4; /* 倒影 */-webkit-box-reflect:below 1px linear-gradient(transparent, #0005);}.btn span{ position: absolute; content: '';}.btn span:nth-child(1){ top: 0; left: 0; width: 100%; height: 4px; animation: animate1 1s linear infinite; background: linear-gradient(90deg,transparent,#03e9f4);}@keyframes animate1{ 0%{ left: -100%; } 50%,100%{ left: 100%; }}.btn span:nth-child(2){ top: -100%; right: 0; width: 4px; height: 100%; background: linear-gradient(180deg,transparent,#03e9f4); animation: animate2 1s linear infinite; animation-delay: 0.25s;}@keyframes animate2{ 0%{ top: -100%; } 50%,100%{ top: 100%; }}.btn span:nth-child(3){ bottom: 0; right: 0; width: 100%; height: 4px; background: linear-gradient(270deg,transparent,#03e9f4); animation: animate3 1s linear infinite; animation-delay: 0.55s;}@keyframes animate3{ 0%{ right: -100%; } 50%,100%{ right: 100%; }}.btn span:nth-child(4){ bottom: -100%; left: 0; width: 4px; height: 100%; background: linear-gradient(360deg,transparent,#03e9f4); animation: animate4 1s linear infinite; animation-delay: 0.75s;}@keyframes animate4{ 0%{ bottom: -100%; } 50%,100%{ bottom: 100%; }}原理解答这里还是主要讲讲四周线条的动作漫画效果吧
四条线条的初始地点如下:
注:
这里将颜色改为红色,线条宽度为20px,便于研究这里说的初始地点是指动作漫画开始时的初始地点以一条线条(第一条)的动作漫画为例
其css设置为:必须定位 position:absolute top=0 left=0
初始地点如图:
第一条线条动作漫画需要实现的效果
线条头部从button最左端开始移动平行向右移动最终停下地点为:线条尾部到达button最右端最开始地点:
起始地点
最终地点:
末尾地点
根据上述思路,编编辑动作漫画代码
.btn span:nth-child(1){ top: 0; left: 100%; width: 100%; height: 20px; animation: animate1 1s linear infinite; background: linear-gradient(90deg,transparent,red);}// 动作漫画:从左到右 @keyframes animate1{ 0%{ left: -100%; } 50%,100%{ left: 100%; }效果如下:
我们的要求是:线条只要在button地区进动作画,很多地区玩家不可见
解决问题的办法也很简单:button中设置:overflow: hidden;
效果如下:
同理,再分别对很多三条边进行设置就可以了
第二条线效果:
第三条线效果:
第四条线条效果:
疑点详细解答疑点1估计细心的同伴会小心到
动作漫画animate1延迟为0动作漫画animate2延迟为0.25s动作漫画animate3延迟为0.5s动作漫画animate4延迟为0.75s为什么会这样设置呢?
emmm 这里就发表海轰自己的理解吧
首先,我们将每一个动作漫画的时光都地点为了 1s
为了达到连贯的效果,也就是:
线条1头部到达button最右端时,线条2头部恰好从button最上端向下开始移动线条2头部到达button最下端时,线条3头部恰好从button最右端向左开始移动线条3头部到达button最左端时,线条4头部恰好从button最下端开始向上移动线条4头部到达button最上端时,线条1头部恰好从button最左端开始向右移动依次循环
从上述的效果描述中,我们可以得知,从线条4头部到达最上端时,线条1恰好又进行第二次动作漫画
也就是每当动作漫画间隔了1s
每条线运行的时光又相同,所以在button上移动的时光也是相同的
均为 1s/4=0.25s
也就是说:线条1头部从button最左端到最右端,耗时0.25s
简单的理解:
每隔1s线条1就要出发一次 为了获得连贯效果,一定门槛1s之内,很多3条线都跑完button三条边 而跑完每一条边需要的时光又是一样的(这种是通过ambition设置的) 从而得出 每一条边需要 1s/4 = 0.25s
此时此刻,线条2才开始动作漫画,也就需要延时0.25s
同理,线条3、4 的延时也就累计就可以了
疑点2为什么动作漫画设置是0%-50%呢
@keyframes animate1{ 0%{ left: -100%; } 50%,100%{ left: 100%; }} 从疑点1的解答中,我们可以发现,每条线在button边运行的时光就只能为0.25s
线条从开始到结束,需要耗时 1s(也就是从0%-100%)
/* 假设这样设置 */@keyframes animate1{ 0%{ left: -100%; } 100%{ left: 100%; }}
因为移动速度为匀速(动作漫画属性设置了)
所以到50%需要耗时0.5s
也就是说:线条1运行在button上的时光为:0.5s
这与我们需要的0.25s就有区别
那么需要怎么办呢?
嘿嘿,这里我们将动作漫画属性改写一下:
@keyframes animate1{ 0%{ left: -100%; } 50%,100%{ left: 100%; }} 啥意思呢?
简单理解就是只用了百分之50的时光(0.5s)就从开始情况运行到了最终情况(0%-100%)
那么从0%-50%就只要0.25s了
注:这里海轰说的估计不是较好理解,但是自己心里了解咋回事,不太会描述,不懂的同伴可以查查ambition的讲解
符合门槛!
1、将新鲜的芸豆挑选洗净,同时开火烧开水。将芸豆掰成五厘米左右的小块,放入锅中煮熟。时间久了,就怕芸...
1、少女苏小星被某游戏系统判定为新型属性,于是被光速送到各大平行空间,在系统中寻找爱情模块的bug,...
你们好,最近小奥发现有诸多的小伙伴们对于苹果装win7,苹果一体机装win7这个问题都颇为感兴趣的,...
大家好,小迪来为大家解答以上的问题。思丸喜,关于思丸喜介绍这个很多人还不知道,现在让我们一起来看看吧...
要问牛鼻子为什么穿铁环?据悉给牛鼻子穿铁环在放牛的时候牵着牛,它就能很听话的跟着你走。牛虽然很忠厚,...
很多时候我们会遇到电脑正在下载文件或者渲染视频,但另一方面你却必须要离开或者不想耗费时间干等着电脑运...
以下为小编整理的环保家具广告语大全,卖家具的广告语大全,希望大家喜欢,左右:左右沙发,彰显冠军风范创...
python这个面向对象编程的语言不像其他同样编程思想的C#和Java等语言一样,会在创建对象时就去...
11朵香槟玫瑰花语:最爱、只在乎你一人、唯一的爱;一生一世,永不分离。收到的香槟玫瑰可以放进花瓶里加...
达成共识是指在一定的参与者中,采取和谐的方式,利用社会共识的力量,去达成一致、可接受的结论,让全体参...
小说排行榜前十名巅峰之作?言情小说排行榜前十名巅峰之作,长行号带你了解相关信息。大家好,我是八丈河,...
核心提示诗婷露雅化妆品单品的价格在78元-198元之间,套装的价格一般为300元-500元之间。大家...
薄荷油最近行情薄荷油现在的价格是多少?薄荷油现在的价格是多少?今年薄荷油产新后,市场行情一路上涨,由...
全国房价重回两年前,哈尔滨、太原等29城比两年前还低,而且与两年前相比,房地产市场的销售情况差距巨大...
2017年山东日照幼儿园中小学高中寒假放假时间表和开学时间校历安排通知根据山东省2017年度中小学校...
经典语录:都说时间是最好的良药,当你觉得力不从心的时候,莫如将一切交付给时间,它会让你把该忘记的都忘...
2023第十届云南牛人家庭马拉松报名须知根据《中华人民共和国民法典》第1176条之规定,本人自愿报名...
当我们使用手机拍摄照片时,设置会要求我们更改拍照的清晰度,清晰度越大,我们的照片内容就更加清晰,同样...
尖峰时段是用电高峰期,低谷时段是用电低谷期,根据搜索结果2电力尖峰平谷四时段时间划分:热水器峰谷是高...
今天小编肥嘟来为大家解答以上的问题。断魂小丑,断魂梯相信很多小伙伴还不知道,现在让我们一起来看看吧!...