|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-1-18 09:44 编辑
图片走马灯的CSS实现方法 | 马黑黑
由于微软创建的 marquee 标签已在 HTML5 中被废弃,图片走马灯类的展现效果需要另辟蹊径,CSS3 可以做到,而且不太难。这里跟大家分享一个简单的方法(方法其实不止一个)。
图片要滚动,首先需要一个场景,这个场景和图片的统一高宽一样,而且,它将是可以位于web页的任何地方,故此我们给它一个相对定位:
.mBox { /* 图片运动场所 */
margin: 10px auto;
width: 1200px;
height: 600px;
position: relative;
overflow: hidden; /* 防止溢出 */
border: 1px solid navy;
box-shadow: 2px 2px 4px 1px #444;
}
overflow的hidden设置很重要,因为将来图片是并列装载的,宽度超出这个运动场所,必须将多余的尺寸裁剪掉,每一个时刻只允许显示一个固定宽度(本例1200px)。
下面,弄个装载图片的div,它将在HTML中作为上面 mBox 的子元素,我们给它命名为 pBox:
.pBox { /* 图片盒子 */
position: absolute;
display: flex; /* 弹性图片布局 */
animation: Roll 25s linear infinite;
}
绝对定位,这个必须的,以免图片乱跑。display 的 flex 设定非常重要,它是图片排排坐不吃果果的布局手段,这是用了轴线布局 flex 的功能。盒子里还加了一个我们现在还没有设计的 animation 动画,动画名叫 Roll,25秒时长匀速循环播放,小盆友寒假看动画可以看个够。
.pBox盒子里的图片,尺寸要设置成和母框mBox盒子一样的高宽:
.pBox img { /* 图片统一样式 */
width: 1200px;
height:600px;
float: left;
}
我们令图片左浮动(float: left;)以确保图片像看动画的小盆友一样乖乖滴排好队。
好了,小盆友们既然都已经排好了队,我们就来给图片设计动画:
@keyframes Roll { /* 动画设计 */
from { transform: translateX(0); }
to { transform: translateX(-50%); }
}
看,我们只用了 transform 的 translateX 功能,就做好动画了。就是水平移动,从 0 到 -50% 的变化,把 from 和 to 的值对换一下,图片走相反的方向。
嗯,很多时候,看到镁铝俺都直流口水,俺要暂停一下走马灯,好好欣赏镁铝。咋办?给图片盒子 pBox 设个开关:
.pBox:hover { /* 鼠标滑过:暂停动画 */
cursor: pointer;
animation-play-state: paused;
}
这里,用到了 animation 的播放状态 animation-play-state,paused 就是暂停。
下一步是HTML要干的活儿了,图片放多少随意,但不要太小气:
<div class="mBox">
<div id="pBox" class="pBox">
<img alt="" src="图片1" />
<img alt="" src="图片2" />
</div>
</div>
咦,还缺少啥?对,音乐,不能让小盆友看无声电影吧?现在又不是卓别林时代。就用 audio 自动播放行了,我们给它一个id,以便单击图片盒子时音乐能暂停,盒子也要有id哦(上面的HTML代码里已经有了)。
<audio id="ktv" src="音乐地址" loop="loop" autoplay="autoplay"></audio>
最后,编写一个单击图片盒子其实就是图片就能暂停音乐的JS脚本就万事大吉了:
<script language="javascript">
var ktv = document.getElementById('ktv');
document.getElementById('pBox').onclick=function(){ ktv.paused ? ktv.play() : ktv.pause(); }
</script>
|
评分
-
| 参与人数 4 | 威望 +160 |
金钱 +320 |
经验 +160 |
收起
理由
|
加林森
| + 30 |
+ 60 |
+ 30 |
赞一个! |
绿叶清舟
| + 30 |
+ 60 |
+ 30 |
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
很给力! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|