AngularJS 指令 实现文本水平滚动效果

<!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 += "&nbsp&nbsp&nbsp&nbsp" + 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>

原文地址:https://www.cnblogs.com/qiushuiblog/p/8375833.html

时间: 2024-10-11 14:21:21

AngularJS 指令 实现文本水平滚动效果的相关文章

产品图片无缝水平滚动效果代码

产品图片无缝水平滚动效果代码:在众多的网站都有这样的效果,那就是产品图片可以不间断的无缝滚动,效果挺美观的,也给静态的页面增加了几分动感,也便利了浏览者查看产品,算是比较好的效果吧,下面就介绍一下如何实现此特效的,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http:

ASP.NET中使用JavaScript实现图片自动水平滚动效果

参照网上的资料,在ASP.NET中使用JavaScript实现图片自动水平滚动效果. 1.页面前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ImageScroll.aspx.cs" Inherits="SlideDemo.ImageScroll" %> <!DOCTYPE html><html xmlns="

JS实用的带停顿的逐行文本循环滚动效果

<!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> <title>JS实用的带停顿的逐行文本循环滚动效果丨k

javascript小例子:實現四方向文本无缝滚动效果

实现一个文本无缝滚动的效果: <!DOCTYPE html> <!--[if lt IE 7 ]> <html lang="zh-CN" class="ie6"> <![endif]--> <!--[if IE 7 ]> <html lang="zh-CN" class="ie7"> <![endif]--> <!--[if IE 8 ]

[androidUI特效]android中TextView中如何设置水平滚动效果

如何让文本实现走马灯的效果,下面就一起实现下吧~~~~~~ package irdc.ScrollingText; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class ScrollingText extends Activity { public TextView t1; /** Called when the activity is first c

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

很长一段时间没有写博客了,最近在学习iOS开发,看了不少的代码,自己用UIScrollView和UIButton实现了水平滚动的效果,有点类似于今日头条的主界面框架,效果如下: 代码如下: MyScrollView.h #import <UIKit/UIKit.h> #import "MySegementView.h" @interface MyScrollView : UIView<UIScrollViewDelegate> - (instancetype)

20150620文本自动滚动效果

html====== <div class="demo1"> <h3>文本框中的文字自动滚动</h3> <div id="roll" data-rwidth="100" data-rheight="100" class="roll"> <ul id="ul" class="list" style="&qu

翻滚吧,傻蛋儿-----滚动效果源码大集合~

滚动效果在一款应用中耶很常见的,水平滚动,时差滚动,文字图片滚动等等等等,下面就给你介绍几款用的上手的滚动效果源码,但是还没有穷尽列举,只是简单的几款,喜欢就好.滚吗?!滚! 低等级滚动模式:水平滚动 翻滚前,新来个小的感受一下代码的魅力~虽然这一款在代码上简单,但从效果上,很多开发人员都点了赞,布局嵌套完成外部架构,然后动态添加子View实现水平滚动效果. 效果图 [下载] http://www.devstore.cn/code/info/357.html 普通等级滚动模式:高级3D滚动图片轮

简易实现 TextView单行文本水平触摸滑动效果

为了方便查看,已使用markdown编辑形成新博文. 本文Mardown地址 近期做应用的时候实用到TextView单行长文本,当文本内容过长时候又想实现触摸水平滑动效果. 网上找了非常多,都没有看到有效解决方式. 当中,最常见的也是最笨拙滴採用重写TextView并继承实现touch 和 Gesture手势. 后来经提醒发现了事实上最简单的方案: 直接使用 EditText 就好了. 由于edittext须要编辑和移动光标的缘故.使得它是能够水平滑动的.因此我们仅仅须要设置其为透明背景,而且不