文字冒泡特效,咕噜咕噜冒泡的文字

对于网友想知道的文字冒泡特效和咕噜咕噜冒泡的文字的话题,本文有详细的解,希望能帮助到大家。

文字冒泡特效

一眨眼的功夫,很快就又到了新一年的七夕节了,恰好遇到今日公司搞了一位七夕小行动的功夫,就用JS写了一位冒泡排序算法,顺带写了动画排序历程呀。

本来这类算法动画成效网上有许多按例,但今日爱好使然,就抽闲想本人完成一下呀。

代码的优化这里就不作探讨了,一切是为了完成本人小小的满足感,感兴趣的童鞋能够我在电脑上作一下代码优化呀。

底下是效果图(部-分)

动静宣染挪动元素

没有用的话不多说,直-接上代码(大佬会作的比我更好)

// 宣染容器<div id=&34;></div>

// 要排序的数组let arr = [27, 37, 2, 50, 10, 5, 41, 12, 41, 6, 4, 24, 47, 31, 12];// 每一个dom元素的左侧距单元let posLeft = 57;// 获得宣染容器const container = document.getElementById(&39;);/** * @description 动静宣染挪动元素 * @param elem 宣染容器 * @param arr 数据列表 * @return */const renderHTML = (elem, arr) => &34;height: $px; left: $px;&34;$&34;list&34;width: $px;&container,h1 h1 .list .item .item:last-child .item.left,.item.right .item.left::before,.item.right::before .item.left::after,.item.right::after .item.success .out

在上边的代码中,className = &39;是用来断定数字能否已超越元素里面,假如超越,则显现在元素外面,而非里面呢。预防字体与元素显现交织感拉。

$,乘以3一切是为了元素看起来更又高又大一些,要不然,当要排序的数值中包罗<10的数字时,元素的高度就会全部看不见拉。

$,会跟着元素的宣染,left值会跟着index索引值的增大而更改啦。


57 * 0 = 0
57 * 1 = 57
57 * 2 = 114

$,依照子元素宣染个数配置父元素的总宽度,由于子元素选用了定位布置,因此父元素撑不开,须要动静配置宽度,以适配页面的居中显现呀。

固然不配置父元素的宽度也不影响实行,不过会在肯定水平上,列表会不便利居中在视窗的水准垂直居中地位呢。

这个时候曾经宣染出列表了,可是有无实行排序算法,底下增添排序算法拉。

冒泡排序算法

const bubbleSort = arr => return arr;// 本数组[27, 37, 2, 50, 10, 5, 41, 12, 41, 6, 4, 24, 47, 31, 12]bubbleSort(arr);

冒泡排序算法有很多种办法,这里只推荐了1种,便是套用两层反复,一位一位比较,假如找出吻合的元素,就经过[arr[i], arr[j]] = [arr[j], arr[i]]数组解构的方法,换取2个元素的地位呀。

大概这个样子表明我们有一些难以领会,固然高人飘过哈啦。本来我也之前不领会,但是经过本人探索再联合动画的情势来看,对领会算法的历程会越发明白呀。

结局是曾经排好了,可是还不可以让它们动起身,要动起身,持续和我一步一步作下来了。

让元素动起身

要让元素动起身前,咋们须要有2个标识,一位左一位右啦。

左称为.item.left 左界限元素拉。右称为.item.right 右界限元素拉。我在这里用了这2个元素,一切是为了在施行动画的时刻便利分辨领会了。

代表左界限元素须要每次和右界限元素去比较,假如有小于左元素的,则举行替换,不然不动了。

好比这个样子

动的不断是右界限,而非左界限,左界限在这里不过充任一位基点的人物,用来和其余元素举行比较啦。

改良一下

const list = document.getElementsByClassName(&39;)[0];// 这里须要扩大字符串把元素列表扩大成真实的dom数组,不然不可以举行底下的filter语法const items = [document.getElementsByClassName(&39;)];const setPos = (left, right) => ; let rightInfo = ; // 配置左.右界限元素的差距与高亮 // 由于要交换地位,因此class类名要相互换取 eleLeft[0].style.left = rightInfo.pos + &39;; eleLeft[0].className = &39;; eleRight[0].style.left = leftInfo.pos + &39;; eleRight[0].className = &39;;// 小于左界限索引的元素,所有配置成高亮,代表曾经排序完结的元素const setSuccess = (arr, index) => // type未传值,或者,className包罗right时,清空全部高亮const clearClass = type => const bubbleSort = arr => // 挨次用左界限元素对比右界全部元素 for (let j = i + 1; j < len; j ++)

这个时候改变页面,好吧,我傻眼了啦。呢。拉。都乱了呀。

由于我在上边的CSS中加了300毫秒的元素动画时候transition: all .3s ease了。

可是反复太快了,还来不及作动画,元素在活动的历程中又再次施行下次宣染,就形成了这类无脑局势呀。啦。拉。

要处理这一个疑,须要有1种能够让重复慢下来的方法才行,底下咋们能够这个样子作,想让他多慢,就有多慢拉。

const sleep = time => const bubbleSort = async arr => // 顺次用左界限元素对比右界全部元素 for (let j = i + 1; j < len; j ++)

咋们能够运用async与promise语法搭配来模仿异步操作过程,在上边的按例中,反复的历程必需要待到sleep办法有返回值后,才能够举行以后的反复,选用传入的时候参数毫秒,来变成一位配置在时候范畴内的定时器,直至期待回返啦。

这是怎么回事,尽管在有条理的作着动画,可是分明不对吧呀。都乱套了了。啦。啦。

const setPos = (left, right) => , 400);

那是因为活动元素动画完结后,不过视图上更新罢了,视觉上看的确变了,但变的是元素的left值,而非实在的dom列表地位呀。

因此咋们须要在每次更换元素地位后,须要从头获得一下dom列表,由于这个时候的元素地位曾经发生变化,须要从头更新此列表拉。

随后再配置一下更换元素的索引值,确保新配置的索引和更换后的索引是一一对应的拉。

最终须要list.insertBefore(eleLeft[0], items[right].nextElementSibling);,把左界限元素,插进到右界限下一位堂兄弟元素的前边拉。

if (呀!items[i + 1])

在反复的时刻,我这里作了判定以后能否另有其余元素呢。

假如有无,则不会实行换取元素的函数,不然当重复到最终一位元素,以后再有无元素的时刻,施行items[right].nextElementSibling会报错呀。

list.insertBefore(eleRight[0], items[left]);,把右界限元素插进到左界限元素的前边啦。

这个样子再看的话,是否就有无疑啦!

本来这一个demo本来哪有完善的,假如寻求完善,须要优化的场合另有许多,好比代码复用性.代码不简练.取名是不是标准.兼容性能否可行等等呢。

感兴趣的小伙伴能够我去尝尝做下优化,我信赖他们一定比我强啦。

最终

感谢您抽出名贵的时候阅览本文,期望对你有所帮-助了。

假如你碰到什麽不明白的地方或许倡议,迎接多多交换,我们共同进步呢。

在阅览历程中,假如有不准确的场合,期望你能提出来,我会勤奋纠正并供应更优良的短文呢。

咕噜咕噜冒泡的文字

喝完秋季的第一杯奶茶,

第二杯还会远吗吗?

今年夏天,

周杰伦结合首创的“魔杰电竞”

将自力茶饮牌子“J-tea 魔杰的茶”

全世界首家牌子直营店开在了浦东拉。

这家茶饮店有啥不同样呀?

随着小布一起身探店!

(文末有哦)

随处都是“公主粉”

这家“J-tea 魔杰的茶”开在九六广场1楼拉。二次元抽象“周同窗”坐镇门口,身上穿戴标志性的血色卫衣,嘴里嗦着最爱的珍珠奶茶,超Q超开窍!

双节棍.东风破.表白气……外墙面上,近百首耳熟能详的歌曲名称,聚集成一位熟习的简化肖像,是照相打卡的绝佳布景呢。

走进店里,目之所及都是“公主粉”色粉色的墙面.粉色的菜单.粉色的桌椅.粉色的文创地区,就连管风琴也是粉红色的!

这架管风琴由周杰伦与她的师弟南拳妈妈成员宇豪结合策画,纯手工塑像,管风琴左手边另有周杰伦亲笔签名,欢迎会演奏的小伙伴将美好的音乐透过管风琴分享给一切主顾呀。

能唱出来的菜单

店里茶饮近40款,菜单区别排列奇妙融入了区别的歌曲元素,也算是给粉丝们的细小欣喜,好比“乖巧美女补给站”“哎呦!甜甜的呢。”“爷爷泡的茶”,钟想唱说话呢。

种类那样的多,

究竟怎样选吗?

小布为您带莱店长举荐TOP4

奶茶合影

雪落虹胶原奶

据店长推荐,这杯雪落虹胶原奶是店里最热点的饮品,一半以上主顾点的都是这一杯呀。

杯底从下到上,一层层铺上了西瓜.芒果.火龙果,恰似虹了。不仅如此,奶茶里还希奇增添了3克燕窝胶原蛋白肽,喝了能够添补能量,还能助眠了。猛吸一口,酸酸甜甜的果实颗粒齐齐入口,配上厚厚的“奶油顶”和玫瑰花瓣,哎呦,确实不错哟!

周同窗芝士奶茶

奶茶刚端上面前,小布就被奶盖上3D打印的“周同窗”二次元抽象萌到了呀。扫描现场二维码还能自行上传照片,奶盖上的图案,您说了算呀。

奶茶的甘甜,加之奶盖的微咸,让这款奶茶口感浓厚.细致丝滑.一切不甜拉。

草莓泡泡

泡泡排列是店里的主打之一,易拉罐式包装非常适合随身携带了。草莓颗粒和新颖柠檬的组合,清新酸甜,内里还希奇参加一片维生素泡腾片,在气泡水里咕噜咕噜冒泡,看着就痛快酣畅呢。

奥利给奶茶

大块的奥利奥饼干,被粉饰成炯炯有神的童趣抽象,从奶盖里探出面呀。先舔一口奶盖,浓厚顺滑,再插进吸管,喝一口夹着原味BOBO的奶茶,又软又Q呀。

时候到

快来留言区告知小布您对奶茶的爱,小布将抽选20位粉丝,奉上店长保举TOP4中的随意茶饮1杯,为您的中秋国庆暑假再加一分甜!

注中后改天起1周内兑换,仅限至J-tea魔杰的茶(九六广场店)获取拉。抽取行动截至9月30日正午12:00)

笔墨张诗欢

拍照朱泉春

编写王雨濛

文字冒泡特效和咕噜咕噜冒泡的文字的话题,本文有详细的解,希望能帮助到大家。

除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。