效果演示
长文本轮回滚动播放,短文本静止不动:
教程
假设我们有如下结构的 HTML:
1 |
|
其中outer
是外部容器,p
是需要显示的文本。
因为p
需要依赖outer
的大小,所以outer
的大小不能使用auto
,需要手动设定,现在我们写出下面的样式:
1 |
|
现在最重要的部分就是如何设置p
的样式了,首先我们需要一个动画:
1 |
|
然后给p
设置样式:
1 |
|
现在就能够实现文本在容器(outer
)中来回滚动了,但是小伙伴肯定发现了一个问题,当p
的长度小于outer
时依然会在其中滚动,这肯定不是我们希望的效果,那么如何实现p
长度小于outer
时不进行滚动呢?
实际上仅通过 css (据我所知)不能实现该效果,当然我可不是标题党,我们可以另辟蹊径来解决这个问题。
上面的样式我们不难看出来,当outer
和p
的宽度一样时p
是不会滚动的,所以我们只需要将p
的样式改为下面的样子,就能做到在文本短时不进行滚动:
1 |
|
当然,这么写之后就不能给p
标签添加边框、背景之类的效果了,不然在显示短文本的时候效果会很奇怪。这个我还没有想到比较好的解决方案,如果有小伙伴有的话可以发在评论区分享一下。
接下来如果想要实现p
居中对齐的话就有坑了,千万不要将outer
的display
设置成flex
,如果把outer
设置为flex
,当p
设置min-width
后p
的长度就会被限制在outer
的宽度。比如当outer
宽度为 100px 时p
的最大宽度就是 100px,这样子就完全没办法实现滚动了。
当然如果你可以肯定不会出现p
宽度小于outer
的情况就可以把min-width
去掉,然后放心大胆的用flex
了。如果需要设置min-width
,可以给p
设置line-height
来实现垂直居中。