导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
热门文章
1推文
给自己看过的2025年的1月新番加了评分和评价。
热度
767
2页面
程序员老黄历&求签
热度
442
3博文
真相永远只有一个!《名侦探柯南》特别音乐会2025
热度
195
4推文
看完《孤独摇滚》的总集篇剧场版后篇了。 虽然删减在所难免,但是个人觉得制作组还是在尽量在保留精华。 ED歌曲《Re:Re:》把我惊艳到了,非常熟悉的旋律当时硬是想不起来,回到家查了一下原来第一次听到是在《只有我不在的街道》。 https://www.bilibili.com/video/BV1M5ejeMErR
热度
181
5博文
《孤独摇滚》圣地巡礼——下北泽&下北泽咖喱节2023
热度
156
6博文
面码找到你了!探寻超平和Busters的秘密基地——《我们仍未知道那天所看见的花的名字》秩父圣地巡礼
热度
143
7博文
3DS模拟器简体中文字库 | Citra3ds字库 | 符文工房4乱码解决字库 | shared_font.bin
热度
104
8博文
探访日本的废校:《悠哉日常大王/悠悠哉哉少女日和》圣地巡礼之旧小川小学校下里分校
热度
91
9推文
今天去看了首部初音未来的电影《剧场版 世界计划 破碎的世界与无法歌唱的未来》。 说是初音未来的电影,但其实是手游《世界计划》的剧场版。好像有挺多人看到是初音未来的电影就去看了,结果发现并不全是😅。其实在宣传海报中,初音未来后面的那些人才是主角。 不过,我也是那些没玩过手游的观众之一。其实整场看下来问题也不是很大,就是对于人物关系和世界观的设定可能会有些问题。电影其实也很贴心地在剧情开头,大致以剧情的形式展示了手游中的五个团体的人物及其性格,但感觉还是有些杯水车薪,约等于看个眼熟。 此次的电影是第一次购买应援场。所谓的应援场,就是能在电影院里像是听演唱会一样挥舞荧光棒和尽情呐喊。看着前排那些粉丝看到自己喜欢角色时的呐喊,以及演唱会环节的打CALL,应援场确实是很有意思的一种电影观看方式呢! 剧情方面,属于看了开头大概能猜到整部动画的剧情走向。不过,通过演唱会的气氛渲染,甚至还感受到了一丝丝的感动。 总体来说,对于手游的粉丝来说可能是嘉年华般的狂喜,对于没接触过手游的路人来说也能一定程度融入其中,属于一部不错的粉丝向电影(不管是手游粉丝还是初音未来粉丝)。 首周电影特典是CD和游戏内的兑换码。送CD这种形式还第一次遇到,官方大气!
热度
91
10页面
友链
热度
78
最新评论
广树管理员
2025-04-15 22:53
@小彦:所以文本转成json啊,然后递归渲染,数据都在json里了还不好办
小彦
2025-04-15 22:49
@广树:数据取出不是难点,难的是你的卡片组件,是vue组件来的(例如),但是日志内容是全文字数据,怎么让一个日志内容里还能渲染卡片组件呢?因为vue的组件必须是写在 template里的,不能说日志里有vue的代码他就能渲染出来
广树管理员
2025-04-15 22:44
@小彦:真要硬做也不是不可以,服务器先对文本做预处理比如md转json或者html转json或者干脆数据库就存json,然后从json拿到所有涉及到的番剧id再从数据库里拿到id填充回json里。接下来前端只用针对这个json做递归渲染就行了。
小彦
2025-04-15 22:40
@广树:果然是这样,一般的思路也是这样。有个难题是,如果要求卡片和日志的文字混排呢?例如用自定义 markdown 语法,如 #card# 之类的和文字混排,能做到么
广树管理员
2025-04-15 22:14
@小彦:这个啊,首先数据库里要有个番剧表,然后把番剧和文章做关联就有了数据。前端的话做一个通用组件复用渲染就行了。
攻略中
星空列车与白的旅行
暂无评分
Steam星空列车与白的旅行
2025年2月22日 22时 ~ 攻略中
已累计游玩1个月22天
乘坐的列车,划破夜空,飞驰在星空之下,令人心旷神怡——这可真是场超值之旅。舒爽夜风吹拂下的随心独旅中,我邂逅了随性的乘客,可人怜爱的乘务员。以及……猫耳少女?这场旅行,究竟会在她身上,留下了些什么呢?
界之轨迹
暂无评分
PS5界之轨迹
2024年9月28日 14时 ~ 攻略中
已累计游玩6个月19天
导力之父爱普斯泰因预言的世界末日即将到来,此时东大陆共和国所研发的导力火箭划破天空,即将探访这个世界的边界。 与此同时万事屋的青年们,正聚集在奥雷德自治州,与集结而来的各方势力,一同看望着这科技奇点。 人们这次是否能认识到世界的真实呢?
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

炼金瓶Loading效果

作者:广树时间:2018-09-11 13:49:54分类:CSS/HTML

想要给抽卡增加了一个延时Loading效果,用于有时候网络不好的时候给与提示。

然后偶然的一次机会,在<codepen>上看到了一个炼金瓶的Loading效果,甚是喜欢,于是想直接拿过来用,但是却遇到了很多问题。

于是经过一番改造,将其改造成了更佳平滑的瓶子和能够适应各种背景色。(其实就是瓶子由CSS绘制变成了图片,气泡和波浪没怎么修改)

效果预览:

炼金中...


然后就是代码部分了。

CSS:

.jar_loading {
	position: relative;
	z-index: 1;
}
.jar_loading_body {
	color: #ccc;
	padding: 0;
	margin: 0;
	text-align: center;
}
.jar_loading_body * {
	box-sizing: border-box;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
}
.jar_loading_box {
	position: relative;
	width: 200px;
	margin: 100px auto 0;
	text-align: center;
	padding-top: 40px;
}
.jar_loading_bg {
	background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABwCAMAAACpQZdgAAAA1VBMVEX///8AAADJycrk5eXw8PDJycr////Jysvp6enJycrLzMz09PX+/v7Ky8vU1dXJycrJycrNzs7Oz8/Q0NHJycrJycrJycrJysvMzM3JycrR0tLJycrV1dbJycrJycrJycrJycr5+fnJycrb29zJycrJycrS0tPJycrJycrJysvNzc7JycrJycrJycrJycrc3d3e3t/g4eHi4+Pt7e74+PjJycrQ0dHx8fH7+/vJycrJycrW1tfJycrX2NjZ2drJycrJycrJycrJycrJycrJycr8/PzJyco2DXaRAAAARnRSTlNNAEB6Y2A7+nDy8VxP6rMaLdrTzMtqCfbl08GwrocD3ZFVw5YUDrxaNfze2rqpo5GNhX5oViPFYVNT1qh1pJxHoJp8eE8/Zpw4YwAAA7JJREFUaN7t2edy2kAUQOEVdqKGkASS6Jjee3FPT877P1KQcWLHFqZoPfnDeYBvmDu7M+yVUN7uRnd/fXydyFkJZUc76C89MMXrNMg68eg8vamI6jMUY9E2lER0l6iVOLQDky30J2jFoZvQ3kKn0ePNuk5vHilPYByPTrD1hKhOPFopghZBT6GsxKQ/wHkEfQaJE32iT/SJPtEn+kSf6BN9ov8bXUkUo+k5jBOVo+ngZpSF6P/XDYDs6CY4hna+6YRl0yKiazdLmP7NOZT+WQfoZRoLsa1FI9MDqP88hP7iAbgNU7yd2XABvC/70k4dUNua2CetrQJ1Zx86KKvQS5li38xUD9RysJPuDoDClTikqwIw6O6g71XInYlDO8uBev8WHYyA0rU4vOsUMAq20rYHxlwc19wAz95C2xfQvxLHdtWHCzuSDuVMTRxfLRPaEXRzLReSIk7JwtpuvqKD+kaObdeDl/QIMms5rp2B0Qvah/5SxG/ZB/8f2sliXAkZnRtknWd0xYOZkNMMvMoT7UNbyKoN/l+6aWGY0mjTwGr+ocvQEPJqQPmRbunkhMxy6K0NfQ8TqfQE7jf0ACsplU5aDB7oLtwJud1BN6SrsJBML6Aa0rf0hez63K5pG0rS6RLYiujAXDo9h44iyrCUTi+hrIgihpCfQVERedJCfmnyirBoC/kVsBSRJSXklyKrCCgJ+ZXgfel3GsiatigI+RWw3vXwFdGF/HSKDxfdlC6bDxf9BmbS6RncKMJ+jyOSAlsRSp6cdDpHXlnTZdAkyxqUQ7oLKfnz6Ia0kidbkyrXsuSVB9qHz1Lpz+Bv6MDCuJYoXxtYwYZWfsAnifQn+KE80kEO9VyafK6SCzb0us7TG0nKS6nz7C0zhIa8f9dD5Rm90lE1ObdFRV890ZuRWKYE2bSg8+JJWgW3Fv+yuFBVXtCVIaRrceU0DCsvaaXlhXZs2WtFLC2aeXDNOHN2Id+MXLU0PbC048+GBd5ajqKV1hDUyZHyRIVha+taq1IFLs1jhnEJVCtvLeM6OhjT5KGXe2qA3tmxQlzVgbR22JTTQH21c/FZ8XXgUtsfvgR0v7LPutYeA2RmyX1GMcsAjO19l8xOEcC4W+yAF3cGQNE5ZDXujFWAXOksue33npVyAOrYOXShb38fEKa6qam2/EddatOUqxI2+G4f9YWjW73gMcPNFNqpUqpdyLgGj11UuzG+y6z8r7dEdfvVX8X85LOulfCrRe9CJ0y/8IpVP9FSdvcbhjbR7CHfGkMAAAAASUVORK5CYII=');
	background-position: bottom center;
	background-repeat: no-repeat;
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	bottom: 0;
	z-index: 2;
}
.jar_loading .bubble_loading {
	width: 10px;
	height: 10px;
	position: absolute;
	background-color: #35EEFB;
	opacity: 0.4;
	left: 92px;
	z-index: 8;
	top: 40px;
	-moz-border-radius: 100%;
	-webkit-border-radius: 100%;
	border-radius: 100%;
	-moz-animation: buble 2s linear 1s infinite;
	-webkit-animation: buble 2s linear 1s infinite;
	animation: buble 2s linear 1s infinite;
}
.jar_loading .bubble_loading + .bubble_loading {
	left: 90px;
	top: 42px;
	width: 15px;
	height: 15px;
	-moz-animation-duration: 3s;
	-webkit-animation-duration: 3s;
	animation-duration: 3s;
}
.jar_loading .base_loading {
	margin: auto;
	width: 90px;
	height: 72px;
	-moz-border-radius: 50%;
	-webkit-border-radius: 50%;
	border-radius: 50%;
	overflow: hidden;
	position: relative;
	z-index: 5;
	border: 2px solid rgba(255,255,255,0);
}
.jar_loading .base_loading .bubble_loading {
	left: 15px;
	top: 40px;
	-moz-animation: bounce 2.3s linear 0s infinite alternate;
	-webkit-animation: bounce 2.3s linear 0s infinite alternate;
	animation: bounce 2.3s linear 0s infinite alternate;
}
.jar_loading .base_loading .bubble_loading + .bubble_loading {
	left: 64px;
	top: 40px;
	-moz-animation-duration: 3s;
	-webkit-animation-duration: 3s;
	animation-duration: 3s;
}
.jar_loading .liquid_loading {
	height: 30px;
	background-color: #35EEFB;
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
}
.jar_loading .wave_loading {
	width: 60px;
	height: 20px;
	position: absolute;
	background-color: #35EEFB;
	left: 0;
	top: 37px;
	-moz-animation: wave 1s linear infinite alternate;
	-webkit-animation: wave 1s linear infinite alternate;
	animation: wave 1s linear infinite alternate;
	-moz-border-radius: 50%;
	-webkit-border-radius: 50%;
	border-radius: 50%;
}
.jar_loading .wave_loading + .wave_loading {
	left: auto;
	right: 0;
}
.jar_loading_text {
	margin: 8px 0;
}
 @-moz-keyframes wave {
 from {
 -moz-transform: translateX(100px);
 transform: translateX(100px);
}
 to {
 -moz-transform: translateX(-100px);
 transform: translateX(-100px);
}
}
@-webkit-keyframes wave {
 from {
 -webkit-transform: translateX(100px);
 transform: translateX(100px);
}
 to {
 -webkit-transform: translateX(-100px);
 transform: translateX(-100px);
}
}
@keyframes wave {
 from {
 -moz-transform: translateX(100px);
 -ms-transform: translateX(100px);
 -webkit-transform: translateX(100px);
 transform: translateX(100px);
}
 to {
 -moz-transform: translateX(-100px);
 -ms-transform: translateX(-100px);
 -webkit-transform: translateX(-100px);
 transform: translateX(-100px);
}
}
@-moz-keyframes bounce {
 0% {
 -moz-transform: translate(5px, 15px);
 transform: translate(5px, 15px);
}
 50% {
 -moz-transform: translate(0, -15px);
 transform: translate(0, -15px);
}
 100% {
 -moz-transform: translate(-5px, -31px);
 transform: translate(-5px, -31px);
 opacity: 1;
}
}
@-webkit-keyframes bounce {
 0% {
 -webkit-transform: translate(5px, 15px);
 transform: translate(5px, 15px);
}
 50% {
 -webkit-transform: translate(0, -15px);
 transform: translate(0, -15px);
}
 100% {
 -webkit-transform: translate(-5px, -31px);
 transform: translate(-5px, -31px);
 opacity: 1;
}
}
@keyframes bounce {
 0% {
 -moz-transform: translate(5px, 15px);
 -ms-transform: translate(5px, 15px);
 -webkit-transform: translate(5px, 15px);
 transform: translate(5px, 15px);
}
 50% {
 -moz-transform: translate(0, -15px);
 -ms-transform: translate(0, -15px);
 -webkit-transform: translate(0, -15px);
 transform: translate(0, -15px);
}
 100% {
 -moz-transform: translate(-5px, -31px);
 -ms-transform: translate(-5px, -31px);
 -webkit-transform: translate(-5px, -31px);
 transform: translate(-5px, -31px);
 opacity: 1;
}
}
@-moz-keyframes buble {
 0% {
 -moz-transform: translate(3px, 10px);
 transform: translate(3px, 10px);
}
 25% {
 -moz-transform: translate(0, 0px);
 transform: translate(0, 0px);
}
 50% {
 -moz-transform: translate(-1px, -25px);
 transform: translate(-3px, -25px);
}
 75% {
 -moz-transform: translate(0, -50px);
 transform: translate(0, -50px);
 opacity: 1;
}
 100% {
 -moz-transform: translate(3px, -100px);
 transform: translate(3px, -100px);
 opacity: 0;
}
}
@-webkit-keyframes buble {
 0% {
 -webkit-transform: translate(3px, 10px);
 transform: translate(3px, 10px);
}
 25% {
 -webkit-transform: translate(0, 0px);
 transform: translate(0, 0px);
}
 50% {
 -webkit-transform: translate(-3px, -25px);
 transform: translate(-3px, -25px);
}
 75% {
 -webkit-transform: translate(0, -50px);
 transform: translate(0, -50px);
 opacity: 1;
}
 100% {
 -moz-transform: translate(3px, -100px);
 -ms-transform: translate(3px, -100px);
 -webkit-transform: translate(3px, -100px);
 transform: translate(3px, -100px);
 opacity: 0;
}
}
@keyframes buble {
 0% {
 -moz-transform: translate(3px, 10px);
 -ms-transform: translate(3px, 10px);
 -webkit-transform: translate(3px, 10px);
 transform: translate(3px, 10px);
}
 25% {
 -moz-transform: translate(0, 0px);
 -ms-transform: translate(0, 0px);
 -webkit-transform: translate(0, 0px);
 transform: translate(0, 0px);
}
 50% {
 -moz-transform: translate(-1px, -25px);
 -ms-transform: translate(-1px, -25px);
 -webkit-transform: translate(-3px, -25px);
 transform: translate(-3px, -25px);
}
 75% {
 -moz-transform: translate(0, -50px);
 -ms-transform: translate(0, -50px);
 -webkit-transform: translate(0, -50px);
 transform: translate(0, -50px);
 opacity: 1;
}
 100% {
 -moz-transform: translate(3px, -100px);
 -ms-transform: translate(3px, -100px);
 -webkit-transform: translate(3px, -100px);
 transform: translate(3px, -100px);
 opacity: 0;
}
}


HTML:

<div class="jar_loading_body">
    <div class="jar_loading_box">
    	<div class="jar_loading_bg"></div>
        <div class="jar_loading">
          <div class="base_loading">
            <div class="liquid_loading"> </div>
            <div class="wave_loading"></div>
            <div class="wave_loading"></div>
            <div class="bubble_loading"></div>
            <div class="bubble_loading"></div>
          </div>
          <div class="bubble_loading"></div>
          <div class="bubble_loading"></div>
        </div>
    </div>
    <p class="jar_loading_text">炼金中...</p>
</div>


donate.png

1210 x 50(蓝底).png

cloudcone