js实现文字上下滚动效果

更新日期: 2019-03-31阅读: 2.1k标签: 效果

html页面时,为了提升网页的用户体验,我们需要在网页中加入一些特效,比如单行区域文字上下滚动就是经常用到的特效。  


代码

<html>
<head>
	<title>js实现文字上下滚动效果</title>
	<style type="text/css">
		#flinks{width:500px;}
	
		/* 文字上下滚动 */
		.scroll-box{position:relative;top:0;overflow:hidden;padding:0 10px;display:inline-block;height:29px;line-height:29px}
		.scroll-box.on{background:#fff;z-index:2;overflow:auto;height:auto !important;box-shadow:1px 1px 10px #888}
		.scroll-box.on li{top:0 !important;border-bottom:1px dotted #ccc}
		.scroll-box li{position:relative;}
		.scroll-box a{display:inline-block;white-space:nowrap;padding-top:0 !important;padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important;}
		.scroll-mask{z-index:1;display:none;position:fixed;top:0;right:0;bottom:0;left:0;display:none;background-color:rgba(0,0,0,0.5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000)}
		.scroll-mask.on{/*display:block;*/}
	</style>
	<script type="text/javascript" src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
	<script type="text/javascript">
		
		(function ($) {
			/* 单行文字上下滚动 */
			$.fn.adScroll = function (options) {
				// 默认配置
				var scrollOptions = {
					interval: 6000
				};
				$.extend(scrollOptions, options);
 
				$(this).each(function () {
					var scrollObj = $(this);
					// 单行内容无需滚动显示,取消初始化
					var totalHeight = 0;
					scrollObj.find('li').each(function () { totalHeight += $(this).height() });
					var liSize = Math.round(totalHeight / scrollObj.height());
					if(liSize <= 1) return;
					
					// 初始化开始
					scrollObj.attr('index', '0');
					// 重置滚动容器高度
					scrollObj.height(scrollObj.find('a').outerHeight(true));
					// 重置滚动项 li 高度
					scrollObj.find('li').size() > 1 && scrollObj.find('li').height(scrollObj.height());
					// 外层容器,辅助定位
					var containerObj = $('<div>').height(scrollObj.outerHeight(true));
					scrollObj.wrap(containerObj);
					// 遮罩层
					var maskObj = $('<div>').addClass('scroll-mask');
					scrollObj.after(maskObj);
 
					setInterval(function () {
						if (!scrollObj.hasClass('on')) {
							// 所有 li 高度之和除以容器高度
							var liTotalHeight = 0;
							scrollObj.find('li').each(function () { liTotalHeight += $(this).height() });
							var size = Math.round(liTotalHeight / scrollObj.height());
							var curIndex = parseInt(scrollObj.attr('index'));
							var next = curIndex + 1 >= size ? 0 : curIndex + 1;
							if (next == 0) {
								scrollObj.find('li').animate({ top: 0 }, 'slow');
							} else {
								scrollObj.find('li').animate({ top: '-=' + scrollObj.height() }, 'slow');
							}
							scrollObj.attr('index', next);
						}
					}, scrollOptions.interval);
 
					// 滚动列表可以被展开
					if(scrollObj.hasClass('box-expand')) {
						// 切换
						scrollObj.mouseover(function () {
							scrollObj.css('top', scrollObj.find('li').css('top'));
							scrollObj.addClass('on');
							maskObj.addClass('on');
						}).mouseout(function () {
							scrollObj.css('top', 0);
							scrollObj.removeClass('on');
							maskObj.removeClass('on');
						});
					}
				});
			};
		})(jQuery);
		
		$(function(){
			if ($('.scroll-box').size() > 0) {
				$('.scroll-box').adScroll({interval: 2000});
			}
		})
 
	</script>
</head>
<body>
	<h1>js实现文字上下滚动效果</h1>
	<h2>文字滚动示例一:</h2>
	<p>适用于单行区域文字或图片上下滚动广告</p>
	<ul class="scroll-box box-expand">
		<li><a href="#" target="_blank">双十一大额优惠券,领券折上折!</a></li>
		<li><a href="#" target="_blank" >※ 新人福利社,超级好货0元购 ※</a></li>
		<li><a href="#" target="_blank">天猫女装销量冠军</a></li>
		<li><a href="#" target="_blank" >20181031期福利红包,订单提交时抵现使用</a></li>
		<li><a href="#" target="_blank">淘宝网优惠,官方活动一网打尽</a></li>
	</ul>
	
	<h2>文字滚动示例二:</h2>
	<p>适合于单行区域友情链接上下滚动</p>
	<ul id="flinks" class="scroll-box">
		<li>
			<a href="#" target="_blank">友情链接1</a>
			<a href="#" target="_blank">友情链接2</a>
			<a href="#" target="_blank">友情链接3</a>
			<a href="#" target="_blank">友情链接4</a>
			<a href="#" target="_blank">友情链接5</a>
			<a href="#" target="_blank">友情链接6</a>
			<a href="#" target="_blank">友情链接7</a>
			<a href="#" target="_blank">友情链接8</a>
			<a href="#" target="_blank">友情链接9</a>
			<a href="#" target="_blank">友情链接10</a>
		</li>
	</ul>
</body>
</html>


要点提示: 

 1、特效初始化代码

$('.scroll-box').adScroll({interval: 2000});

 2、特效代码结构 

<ul class="scroll-box box-expand">
	<li>........</li>
	<li>........</li>
</ul>

 3、样式名称 box-expand 控制鼠标移上时是否显示所有内容 



链接: https://www.fly63.com/article/detial/2653

使用 JavaScript 实现分屏视觉效果

今天这篇文章就来讲讲使用JavaScript来实现这种分屏的视觉UI效果。现在在网站上这种分屏视觉效果应用的也非常广泛,比如 Corsair website。

CSS3的过渡效果,使用transition实现鼠标移入/移出效果

在css中使用伪类虽然实现了样式的改变,但由于没有过渡效果会显得很生硬。以前如果要实现过渡,就需要借助第三方的js框架来实现。现在只需要使用CSS3的过渡(transition)功能,就可以从一组样式平滑的切换到另一组样式。

js如何实现新手引导效果?

js最近有个小伙伴问到了怎么实现新手引导的效果,然后便去网上找了下实现方案。可以通过css的border来实现。

css3 斜切角/斜边的实现方式

设计图含有斜切角的效果时,我们一般想到的方法是切出四个角为背景,然后用border连起来,这样就能显示出该效果了,那么直接使用css呢?下面就整理css做斜边的效果。

JavaScript 实现打字机效果,跑马灯效果

这篇文章在不使用任何插件的情况,以最简洁的原生javascript来实现打字机效果和跑马灯效果。打字效果即把一段话一个字一个字的显示出来。

CSS遮罩效果(模糊效果,阴影效果,毛玻璃效果)

一般遮罩加上透明度opacity就是阴影效果。阴影效果和一般遮罩一样,唯一不同的是设置.mask遮罩的背景色用rgba()表示,当然hsla()也是可以的。模糊效果(毛玻璃效果) 通过 filter来实现

纯css实现气泡效果

主要运用的是1.border 组成的直角三角形。2,before 和 after 伪元素 。3,z-index属性;将元素的长宽设置为0,并且将border的3条边设置为透明的,就会出现border颜色的直角三角形

css文字选中效果

文字选中效果,这个可能很少有人注意过。在默认状态先一般选中的文本颜色是白字蓝底的,不过可以通过CSS进行设置。::selection定义元素上的伪选择器,以便在选定元素时设置其中文本的样式。

text-fill-color:仿苹果官网介绍效果 CSS设置文字渐变效果 文字背景图遮罩

发布iPhone XR的时候 各种心动 去官网看了一遍又一遍。闲着无聊发现 里面的介绍很用大篇幅的有背景文字来介绍。Like this:看着挺酷炫的还不错 就看了下实现方式。还挺简单的。

Vue 中多个元素、组件的过渡,及列表过渡

多元素之间如何实现过渡动画效果呢?这么写行不行呢?肯定是不行的,因为 Vue 在两个元素进行切换的时候,会尽量复用dom,就是因为这个原因,导致现在动画效果不会出现。如果不让 Vue 复用dom的话,应该怎么做呢?只需要给这两个div不同的key值就行了

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!