<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <script src="https://cdn.bootcss.com/angular.js/1.6.7/angular.min.js"></script> <script src="http://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script> <style> .transverseRoll { white-space: nowrap; overflow: hidden; width: 90%; margin: 3px auto; padding: 10px 20px 15px 0px; position: fixed; left: 5%; color: white; background-color: black; z-index: 1; } </style> <script> var app = angular.module("myApp", []); app.directive("transverseRolling", function() { return { link: function(scope, element, attrs) { //定义一个定时任务对象,用于鼠标悬停时取消滚动效果 var event; function scroll(obj) { //获取滚动条到元素左边的距离 var tmp = (obj.scrollLeft) ++; if (obj.scrollLeft == tmp) { //当滚动条到达右边顶端时,将文字追加在元素末尾 obj.innerHTML += "    " + obj.innerHTML; } if (obj.scrollLeft >= obj.firstChild.offsetWidth) { //当滚动条滚动了初始内容的宽度时滚动条回到最左端 obj.scrollLeft = 0; } } function mouseover() { //鼠标移入时取消滚动效果 clearInterval(event); } function _scroll(param) { //将滚动条位置向右移动一个像素,计算滚动条是否到达右侧尽头 return function() { scroll(param); }; } function _mouseout(target) { //鼠标移出事件,设置滚动效果 return function() { if (target) { event = setInterval(_scroll(target), 100); } }; } //将DOM对象转换为Jquery对象 var $target = $(element[0]); // 设置滚动效果 event = setInterval(_scroll(element[0]), 100); //给指令所在的div添加鼠标移入移出事件监听 element[0].addEventListener("mouseover", mouseover); element[0].addEventListener("mouseout", _mouseout(element[0])); } } }); </script> </head> <body ng-app="myApp"> <div class="transverseRoll" transverse-rolling>恨台上卿卿或台下我我,不是我跟你。俗尘渺渺天意茫茫,将你共我分开。断肠字点点风雨声连连,似是故人来。</div> </body> </html>