这个特效主要用于显示短文字,如展牌、文字公告、或者其他提示之类的。将原本平淡的文字放入动态的特效,可以给网站增添不少美感。
- 此特效是很早之前在codepen中找到的,改造后在ZYFX中使用了一段时间,效果还是不错的。改造后如下图。
| 原版 | 改造后 |
|---|---|
- 下面将记录一下我是如何更改的。第一次食用直接复制下方body代码、css代码的原版代码即可。
顶部标题文字
先从简单的说起,顶部标题文字添加一个p标签,然后左对齐即可。
<p style="font-size: 20px;text-align:left;padding: 5px 10px;" class="text"> ZYFX</p>
分割线
分割线的css代码如下。从中间向两边逐渐淡化,有一个过度不至于显得太过突兀,也能起到分割的作用。
//html代码
<hr class="style14">
//css代码
hr.style14 {
border: 0;
height: 1px;
background-image: -webkit-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -moz-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -ms-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -o-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
}
一言
调用一言的接口后还需要调整整个容器的大小,不然文字会超出显示。
<p id="hitokoto" style="font-size: 16px;padding: 5px 5px;">:D 获取中...</p>
<script>
var xhr = new XMLHttpRequest();
xhr.open('get', 'https://v1.hitokoto.cn');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
var data = JSON.parse(xhr.responseText);
var hitokoto = document.getElementById('hitokoto');
hitokoto.innerText = data.hitokoto;
}
}
xhr.send();
</script>
- 控制容器大小的css代码在
.box,这里我只调整了高度height,更改后还需要调整.wave的margin-top
body代码
下面是原版代码和改造后的代码,为避免重复最好将css中的boxwave -onewave -twowave -threetitle重新命名。
//原版html代码
<div class='box'>
<div class='wave -one'></div>
<div class='wave -two'></div>
<div class='wave -three'></div>
<div class='title'>Capacities</div>
</div>
//改造后
<div class="wavebox">
<div class="wave -one"></div>
<div class="wave -two"></div>
<div class="wave -three"></div>
<div class="wavetitle">
<p style="font-size: 20px;text-align:left;padding: 5px 10px;" class="text"> ZYFX</p>
<hr class="style14">
<p id="hitokoto" style="font-size: 16px;padding: 5px 5px;">:D 获取中...</p>
</div>
</div>
css代码
因为每个网站引用的css都不一样,很有可能会出现样式错乱,需要根据自己的网站css代码进行相应的调整了。这里是原版的css代码和改造后的。如果你也使用的是原版hybbs模板,那么直接复制改造后的代码即可食用。
//原版css代码
html, body {
height: 100%;
}
html {
background: #eee;
}
body {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.box {
width: 300px;
height: 300px;
border-radius: 5px;
box-shadow: 0 2px 30px rgba(0, 0, 0, 0.2);
background: #fbfcee;
position: relative;
overflow: hidden;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.wave {
opacity: .4;
position: absolute;
top: 3%;
left: 50%;
background: #0af;
width: 500px;
height: 500px;
margin-left: -250px;
margin-top: -250px;
-webkit-transform-origin: 50% 48%;
transform-origin: 50% 48%;
border-radius: 43%;
-webkit-animation: drift 3000ms infinite linear;
animation: drift 3000ms infinite linear;
}
.wave.-three {
-webkit-animation: drift 2500ms infinite linear;
animation: drift 2500ms infinite linear;
}
.wave.-two {
-webkit-animation: drift 5000ms infinite linear;
animation: drift 5000ms infinite linear;
opacity: .1;
background: yellow;
}
.box:after {
content: '';
display: block;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: -webkit-linear-gradient(top, #ee88aa, rgba(221, 238, 255, 0) 80%, rgba(255, 255, 255, 0.5));
background: linear-gradient(to bottom, #ee88aa, rgba(221, 238, 255, 0) 80%, rgba(255, 255, 255, 0.5));
z-index: 11;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.title {
position: absolute;
left: 0;
top: 0;
width: 100%;
z-index: 1;
line-height: 300px;
text-align: center;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
color: white;
text-transform: uppercase;
font-family: 'Playfair Display', serif;
letter-spacing: .4em;
font-size: 24px;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
text-indent: .3em;
}
@-webkit-keyframes drift {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
from {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes drift {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
from {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
//----------------------分割线-------------------------
//改造后的css代码
.wavebox {
width: 300px;
height: 340px;
border-radius: 5px;
background: #ffffff;
position: relative;
overflow: hidden;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.wave {
opacity: .4;
position: absolute;
top: 3%;
left: 50%;
background: #0af;
width: 500px;
height: 500px;
margin-left: -250px;
margin-top: -200px;
-webkit-transform-origin: 50% 48%;
transform-origin: 50% 48%;
border-radius: 43%;
-webkit-animation: drift 3000ms infinite linear;
animation: drift 3000ms infinite linear;
}
.wave.-three {
-webkit-animation: drift 2500ms infinite linear;
animation: drift 2500ms infinite linear;
}
.wave.-two {
-webkit-animation: drift 5000ms infinite linear;
animation: drift 5000ms infinite linear;
opacity: .1;
background: yellow;
}
.wavebox:after {
content: '';
display: block;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: -webkit-linear-gradient(top, #ee88aa, rgba(221, 238, 255, 0) 80%, rgba(255, 255, 255, 0.5));
background: linear-gradient(to bottom, #ee88aa, rgba(221, 238, 255, 0) 80%, rgba(255, 255, 255, 0.5));
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.wavetitle {
position: absolute;
left: 0;
top: 0;
width: 100%;
z-index: 1;
line-height: 40px;
text-align: center;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
color: white;
text-transform: uppercase;
font-family: 'Playfair Display', serif;
letter-spacing: .3em;
font-size: 15px;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
text-indent: .3em;
}
hr.style14 {
border: 0;
height: 1px;
background-image: -webkit-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -moz-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -ms-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
background-image: -o-linear-gradient(left, #ffffff00, rgba(255, 255, 255, 0.5), #ffffff00);
}
@-webkit-keyframes drift {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
from {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes drift {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
from {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
更改大致如下:
- 去除一些不必要的css代码
- 调整wavebox的height
- 调整wave的margin-top
- 调整title的font-size