找回密码
 立即注册
搜索
查看: 11|回复: 0

CSS模拟marquee效果 转自马黑教程专版

[复制链接]

1622

主题

3409

回帖

1万

积分

管理员

积分
13823
发表于 4 小时前 | 显示全部楼层 |阅读模式
之前提到过,marquee标签已被废弃。当前的主流浏览器还对marquee兼容,但不敢保证今后会继续支持下去。所以,应使用标准的CSS方式来达成marquee标签所产生的对象移动效果。

这里给出一个示例,可以通过示例举一反三,做成不同的效果。

目标:文字流左右循环移动。

思路:用 @keyframes 制作一个简易动画,用以改变子元素的left值,子元素平缓、循环往复调用此动画。


实现过程:


一、HTML部分


<ul class="mqu"><li>新春快乐</li></ul>


二、CSS部分


<style>

.mqu { /* ul 样式*/
        position: relative; /* 父元素相对定位 */
        width: 500px;
        list-style-type: none; /* 取消 · 符号 */
}
.mqu li { /* li 调用动画 */
        position: absolute; /* 子元素绝对定位于父元素 */
        animation: marq 10s linear infinite alternate;
}
/* 动画 */
@keyframes marq {
        0% { left: 0px;  }
        100% { left: 400px; }
}

</style>

一些说明:

① ul 是无序列表标签,它需要 li 展现列表内容,我们借助 ul 和 li 的父子关系,令 ul 有一个宽度值,以便给儿子 li 一个活动空间;

② 父子元素的定位设置是必须的,不管事实上做不做具体定位,否则子元素无法移动。一般的做法是父元素用 relative 相对定位,子元素用 absolute 绝对定位。子元素的定位是基于父元素的,父元素若不做定位声明,子元素的位置就不会受到父元素约束,会脱离父元素的管制。

③ @keyframes 动画中,100%时应当是多少px,本质上要看父元素的尺寸和自身的尺寸,400px 不是绝对的数值,应根据使用场景变化。同理,示例中的其他数值甚至属性都可根据需要更改。


④ ul 可以有多多的孩子 li,故而,<ul class="mqu"><li>新春快乐</li><br><li>虎年大吉</li> </ul> 这样的HTML代码就会得到两行文字在一起走的效果。


④ 文字上下走怎么实现?让 @keyframes 动画改变子元素的top值,同时,ul 这个爸爸要改变自己提供的场所:宽度够了就好,高度要设定一个合适的值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

协同嘉业科技有限公司 ( 京ICP备2024053108号-1 )

GMT+8, 2026-10-29 18:33 , Processed in 0.104117 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表