`
zhans52
  • 浏览: 35783 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于YUI下的标签移动操作,包括点击后的左移动和右移动

阅读更多

项目中有一个待办模块,其中由于待办过多,需要做一个左移动和右移动,此处移动模块为li,即每点击一次移动一个li的位置,li长度自适应。

 

AP.widget.TodoLableMove = new AP.Class({
    /*移动窗体的父(外层显示)dom对象;必填;传入参数为parentId*/
    parentDom:null,
    /*移动窗体dom对象;必填;传入参数为moveId*/
    moveDom:null,
    /*左移动按钮;可填;传入参数为leftId*/
    moveLeftDom:null,
    /*右移动按钮;可填;传入参数为rightId*/
    moveRightDom:null,
    /*每次移动宽度,如果为-1则移动显示中第一个标签的宽度;可填;传入参数为moveSize*/
    moveSize:-1,
    /*移动速度,值越大越慢;可填;传入参数为setTime*/
    setTime:10, //移动速度
    showSize:4,//最多显示数
    lables:null,//标签列表
    firstIndex:0,//显示的第一个的li
    lastIndex:0,//显示的最后一个的li
    timeIndex:0,//滚动计数
    outWidth:0,//外层宽度
    innerWidth:0,//内层宽度
    scrolln:0,
    //构造函数
    initialize : function(_arg){
        //复制参数。
        AP.hashExtend(this,_arg);
       
        if(_arg.parentId){
            this.parentDom=D.get(_arg.parentId);
            this.outWidth=this.parentDom.offsetWidth;
        }
        if(_arg.moveId){
            this.moveDom=D.get(_arg.moveId);
        }
        if(_arg.leftId){
            this.moveLeftDom=D.get(_arg.leftId);
            E.on(this.moveLeftDom,"click",this._moveLeft,this);
        }
        if(_arg.rightId){
            this.moveRightDom=D.get(_arg.rightId);
            E.on(this.moveRightDom,"click",this._moveRight,this);
        }
    },
    /*
     * 初始化
     */
    _setLable:function(){
        this.lables = new Array();
        var lables=D.query("li",this.moveDom);
        var j=0;
        this.innerWidth=0;
        this.scrolln=0;
        this.firstIndex=0;
        this.lastIndex=0;
        for(var i=0;i<lables.length;i++){
            if(!lables[i].style.display) this.lables[j++]=lables[i];
        }
        for(var i=this.firstIndex;i<this.lables.length;i++){
            this.innerWidth=this.innerWidth+this.lables[i].offsetWidth;
        }
        this.moveLeftDom.style.display="none";
        this._IsRightShow();
    } ,
     
    /*左移动函数*/
    _moveLeft:function(e,f){
        f.timeIndex=0;
        f.lastIndex--;
        f._setScroll_L();
        f._IsleftShow();
    },
    /*右移动函数*/
    _moveRight:function(e,f){
        f.timeIndex=0;
        f.firstIndex++;
        f._setScroll_R();
        f._IsRightShow();
    },
    //左移动
    _setScroll_L:function(){
        var width = this.lables[this.firstIndex].offsetWidth;
        this.scrolln ++;
        if(this.scrolln>=0){//滚到最左边时
            this.moveLeftDom.style.display="none";
            this.moveRightDom.style.display="";
            return
        }else if((this.scrolln+this.innerWidth)<=this.outWidth){//滚到最右边时
            this.moveLeftDom.style.display="";
            this.moveRightDom.style.display="none";
            this.moveDom.style.left=this.scrolln+"px";
            if(this.timeIndex<width) this.timeIndex++;
        }else{//在滚动区域内
            this.moveLeftDom.style.display="";
            this.moveRightDom.style.display="";
            this.moveDom.style.left=this.scrolln+"px";
            if(this.timeIndex<width) this.timeIndex++;
            else return
        }
        var o = this;
        function m(){o._setScroll_L();}
        setTimeout(m,this.setTimeOut);
    },
    //右移动
    _setScroll_R:function(){
        var width = this.lables[this.firstIndex-1].offsetWidth;
        this.scrolln --;
        if(this.scrolln>=0){//滚到最左边时
            this.moveLeftDom.style.display="none";
            this.moveRightDom.style.display="";
            return
        }else if((this.scrolln+this.innerWidth)<=this.outWidth){//滚到最右边时
            this.moveLeftDom.style.display="";
            this.moveRightDom.style.display="none";
            this.moveDom.style.left=this.scrolln+"px";
            if(this.timeIndex<width) this.timeIndex++;
            else return
        }else{//在滚动区域内
            this.moveLeftDom.style.display="";
            this.moveRightDom.style.display="";
            this.moveDom.style.left=this.scrolln+"px";
            if(this.timeIndex<width) this.timeIndex++;
            else return
        }
        var o = this;
        function m(){o._setScroll_R();}
        setTimeout(m,this.setTimeOut);
    },
    //左移动时标签显示
    _IsleftShow:function(){
        var inner_Width=0;
        for(var i=this.lastIndex;i>=0;i--){
            this.lables[i].style.display="";
            inner_Width=inner_Width+this.lables[i].offsetWidth;
            if(inner_Width<this.outWidth){
                this.firstIndex=i;
            }
        }
        this._IsRightShow();
    },
    //右移动时标签显示
    _IsRightShow:function(){
        var inner_Width=0;
        if(this.firstIndex==0) this.moveLeftDom.style.display="none";
        else this.moveLeftDom.style.display="";
        for(var i=this.firstIndex;i<this.lables.length;i++){
            this.lables[i].style.display="";
            inner_Width+=this.lables[i].offsetWidth;
            if(inner_Width<this.outWidth){
                this.lastIndex=i;
                this.moveRightDom.style.display="none";
            }else{
                this.lables[i].style.display="none";
                this.moveRightDom.style.display="";
            }
        }
    }
});

 

欢迎讨论

分享到:
评论

相关推荐

    yui3-master.zip

    《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...

    Yahoo YUI 插件库

    8. **触摸事件**:对于移动设备的支持,YUI Touch事件插件能够处理触摸屏上的手势操作,如滑动、点击和双击。 9. **异步请求和Ajax**:YUI的IO组件处理Ajax请求,提供了一种简便的方式与服务器进行异步数据交换。 ...

    YAHOO yui2.7 文档+ 代码+例子

    - **事件处理**:YUI提供了一套强大的事件系统,可以轻松地监听和处理浏览器中的各种事件,如点击、鼠标移动等。 - **DOM操作**:通过YUI,开发者可以方便地进行DOM元素的选择、创建、修改和删除,大大简化了对HTML...

    yui_3.8.1.zip

    6. **Node**:操作DOM节点,包括选择、创建、移动、复制、删除等操作。 7. **Selector**:高性能的CSS选择器引擎,支持复杂的DOM选择。 8. **App**:用于构建单页应用(SPA)的框架,支持路由管理、视图切换等。 ...

    yui_2.5.2 类库

    YUI包含了一系列的JavaScript和CSS组件,如事件处理、DOM操作、动画效果、数据管理、Ajax交互、表单验证等,覆盖了Web开发的多个方面。 2. **YUI 2.5.2中的主要组件** - **事件(Events)**:提供了一套完整的事件...

    yui_2.6.0r2

    YUI 2.6.0r2是该库的一个重要版本,它包含了丰富的组件和工具,为前端开发提供了强大的支持。 一、YUI 2.6.0r2概述 YUI 2.6.0r2版本在当时的JavaScript社区中占有重要地位,它提供了大量的可重用模块,涵盖了DOM...

    YUI.rar_html_javascript YUI_yui_yui javascript

    6. **DOM操作**:YUI提供了强大的DOM操作接口,包括选择元素、修改属性、插入和删除节点等。 7. **AJAX**:YUI的AJAX组件支持异步数据交换,使得网页可以在不刷新的情况下更新内容。 8. **动画效果**:YUI的Anim模块...

    yui_3.0.0(雅虎官方)

    7. **DOM操作和选择器**:YUI提供了强大的DOM操作接口,包括元素的选择、遍历、创建和修改等,同时也支持Sizzle CSS选择器引擎,使得元素选取更高效。 8. **国际化和本地化**:YUI 3.0.0支持多语言和本地化,提供了...

    针对YUI框架API

    YUI的Event模块提供了全面的事件处理机制,包括事件监听、事件分发、事件阻止等,使得开发者可以轻松地响应用户的交互行为。 3. **DOM操作** Node模块提供了便捷的DOM操作接口,可以快速地选取、创建、修改DOM...

    yui的扩展ext.rar

    EXT基于YUI构建,提供了一套完整的前端框架,包括数据管理、组件系统、布局管理、表单元素等。EXT的主要特点是其强大的组件化能力,使得开发者可以方便地创建各种复杂的用户界面元素,如网格、树形结构、表单、菜单...

    yui.zip_YUI aj_ajax_ajax java_javascript_javascript YUI Ajax

    标签"yui_aj ajax ajax_java javascript javascript_yui_ajax"进一步指出了这个压缩包的内容焦点,包括YUI的AJAX组件、JavaScript与AJAX的结合,以及可能涉及到的Java与JavaScript的交互。 在压缩包的文件名称列表...

    YUI compressor右键压缩脚本

    这对于提升用户体验和降低服务器负载至关重要,尤其是在移动设备和低速网络环境下。 该右键压缩脚本的使用非常简单。在下载并解压缩文件后,运行"install.cmd"安装脚本,这将把YUI Compressor的功能集成到你的文件...

    YUI compressor

    YUI Compressor通过删除代码中的空白符、换行符和不必要的分号来压缩JavaScript和CSS,以达到减小文件体积的目的。对于JavaScript,它还进行了变量名混淆,将长变量名替换为更短的形式,进一步节省空间。同时,它还...

    yuicompressor-2.4.8.jar

    《yuicompressor-2.4.8.jar:前端压缩的得力工具》 在Web开发领域,优化前端性能是至关重要的一步,其中一项常见的优化手段就是对JavaScript代码进行压缩。yuicompressor-2.4.8.jar正是这样一个强大的工具,它能够...

    YUI3 中tree的两种实现

    例如,可能使用了`treeview-dragdrop`模块,允许用户通过拖放操作重新排序或移动节点。 ```javascript var tree = new YUI().use('treeview', 'treeview-dragdrop', function(Y) { var treeData = [...]; var ...

    Jquery、YUI、ExtJs 三大javascript框架表单验证带提示功能的demo

    YUI是雅虎开发的一个开源前端开发库,它包括了丰富的组件和工具,如DOM操作、事件处理、动画效果等。在表单验证方面,YUI提供了`YUI.FormValidator`模块,可以创建自定义验证规则,支持实时验证和提交时验证。通过`...

    yui compressor 2.4.2 javascript/css压缩程序

    `YUI Compressor` 是基于Java编写的,这意味着它可以在任何支持Java的平台上运行,包括Windows、Mac OS X和Linux。开发者可以通过命令行接口或者集成到构建工具(如Ant、Maven或Gradle)中来使用它,使得自动化构建...

    关于yui的学习

    在"工具"标签下,我们可以理解到YUI不仅是一个库,还提供了一系列开发工具。例如,YUI Compressor是一款JavaScript和CSS压缩工具,它能去除代码中的注释、空白符,合并多个文件为一个,从而减小文件大小,提高页面...

    ant和yuicompressor 压缩css、js方案

    标题 "ant和yuicompressor 压缩css、js方案" 涉及到的是在软件开发中如何使用构建工具Ant以及JavaScript压缩工具YUI Compressor来优化前端资源,特别是CSS和JavaScript文件。这两个工具在Web开发中起着至关重要的...

    yahoo yui控件

    3. **事件处理**:YUI的事件系统允许开发者监听和处理DOM元素上的事件,如点击、鼠标移动等,使得用户交互更加流畅。`Y.Event`模块提供了丰富的事件处理方法,如`on()`用于添加事件监听器,`detach()`用于移除事件...

Global site tag (gtag.js) - Google Analytics