我已经设法仅使用CSS3创建幻灯片 . 幻灯片工作顺利而精细 . 但问题是我已经为每个图像定义了一些 Headers ,并且它首次按照图像显示,并且第二次再次显示时,所有 Headers 都会立即显示 .
HTML Code :
<ul class="cb-slideshow">
<li>
<span>Image 01</span>
<div>
<h3>Header 1</h3>
</div>
</li>
<li>
<span>Image 02</span>
<div>
<h3>Header 2</h3>
</div>
</li>
<li>
<span>Image 03</span>
<div>
<h3>Header 3</h3>
</div>
</li>
<li>
<span>Image 04</span>
<div>
<h3>Header 4</h3>
</div>
</li>
</ul>
CSS Code :
.cb-slideshow,
.cb-slideshow:after {
width: 100%;
height: 100%;
top: 0;
left: 0;
list-style: none;
}
.cb-slideshow li span {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
opacity: 0;
background-size: cover;
background-position: 100%;
background-repeat: none;
-webkit-animation: slideshow 32s cubic-bezier(.01,.56,.07,.9) infinite 0s;
}
.cb-slideshow li div {
width: 100%;
top: 0;
left: 0;
font-family: Century Gothic;
position: absolute;
}
.cb-slideshow li div h3 {
font-size: 100px;
text-align: center;
text-transform: uppercase;
opacity: 0;
color: #000;
/*margin: 500px 0 0 35px;*/
-webkit-animation: slideIn 8s;
}
.cb-slideshow li:nth-child(1) span {
background-image: url(1.jpg);
}
.cb-slideshow li:nth-child(2) span {
background-image: url(2.jpg);
-webkit-animation-delay: 8s;
}
.cb-slideshow li:nth-child(3) span {
background-image: url(1.jpg);
-webkit-animation-delay: 16s;
}
.cb-slideshow li:nth-child(4) span {
background-image: url(2.jpg);
-webkit-animation-delay: 24s;
}
.cb-slideshow li:nth-child(2) div h3 {
-webkit-animation-delay: 8s;
}
.cb-slideshow li:nth-child(3) div h3 {
-webkit-animation-delay: 16s;
}
.cb-slideshow li:nth-child(4) div h3 {
-webkit-animation-delay: 24s;
}
@-webkit-keyframes slideshow {
0% {
opacity: 1;
-webkit-transform: translateX(2000px);
}
5% {
opacity: 1;
-webkit-transform: translateX(0);
}
25% {
opacity: 1;
-webkit-transform: translateX(0);
}
30% {
opacity: 0;
-webkit-transform: translateX(-2000px);
}
35% {
opacity: 0;
-webkit-transform: translateX(0);
}
50% {
opacity: 0;
-webkit-transform: translateX(0);
}
75% {
opacity: 0;
-webkit-transform: translateX(0);
}
100% {
opacity: 0;
-webkit-transform: translateX(0);
}
}
@-webkit-keyframes slideIn {
0% {
opacity: 1;
-webkit-transform: translateY(-2000px);
}
25% {
opacity: 1;
-webkit-transform: translateY(0);
}
35% {
opacity: 1;
-webkit-transform: translateY(0);
}
45% {
opacity: 1;
-webkit-transform: translateY(0);
}
50% {
opacity: 1;
-webkit-transform: translateY(0);
}
65% {
opacity: 1;
-webkit-transform: translateY(0);
}
75% {
opacity: 1;
-webkit-transform: translateY(0);
}
76% {
opacity: 1;
-webkit-transform: translateY(0);
}
97% {
opacity: 1;
-webkit-transform: translateY(0);
}
100% {
-webkit-transform: scale(1.1) rotate(3deg);
opacity: 0;
}
}
有人请按照图像帮我修复 Headers 的外观 .
提前致谢 .
1 回答
你去:http://jsfiddle.net/Yd9T6/5/
What have I changed?
我刚安排了slideIn动画的关键帧与幻灯片动画的关键帧同步 . 这是更新的样式:
一些观察:
32%的30%是9.6s而不是8s . 我将交叉值改为25%,这恰好是8s . 为了解决这个问题,必须更改一些关键帧规则 .
由于您需要根据所拥有的图像数量设置动画持续时间,延迟和关键帧,因此不会缩放到更多图像 . 你最终需要通过JS编写脚本 .
webkit实现动画规则可能存在错误 . 如果我把小提琴的标签打开,不管多久,我都没有看到任何问题 . 但是,如果我切换标签并返回,有时我看到一切都在彼此之上 . 一旦动画周期完成,这将自动进行自我纠正 .
UPDATE
上述错误实际上是由于时间问题造成的 . 将交叉键框固定在8s后,这个问题也消失了 . 为什么它过去只出现在更改标签上 - 对我来说仍然是一个谜 .