可以实现实现水平拉伸和垂直拉伸的JQUERY插件

  项目有个隐藏和显示内容的需求,在网上找JQUERY插件很久。没发现合适的。然后干脆自己写一个。实现的效果如下:

代码如下:

//功能:实现HTML控件隐藏和显示,自动在控件上附加拉伸箭头,可实现水平拉伸和垂直拉伸。WUZHU
//参数:xy:配置拉伸方向。‘x‘表示水平方向拉伸。‘y‘表示垂直方向拉伸。
//      speed:配置速度,数值越小,拉伸速度越快。
//      zindex:配置图层显示层次。默认为0。
//引用:需引用itoggle.css样式文件,本插件文件,当然还有必须的JQUERY。
//例子:
//        $("#test").itoggle({
//            xy:‘x‘,
//            speed:50
//            });
//备注:未全方面测试过。
(function ($) {
    var Obj = {};
    Obj.open = {};
    Obj.close = {};
    Obj.openCss = ‘‘;
    Obj.closeCss = ‘‘;
    Obj.width = 0;
    Obj.height = 0;
    var Method = {
        init: function (options) {
             return this.each(function () {
            var $this = $(this);
            var settings = $this.data("itoggle");
            if (typeof settings === "undefined") {
                //默认配置
                var defaults = {
                    xy: ‘x‘,
                    speed: 1000,
                    zindex:0
                };
                settings = $.extend({}, defaults, options[0]);
                $this.data("itoggle", settings);
            } else {
                settings = $.extend({}, settings, options[0]);
            }
            Obj.width = $this.width();
            Obj.height = $this.height();
            var $container = $("<div class=‘container‘></div>");
            var $icons = $("<div class=‘icons‘></div>");
            var $iconscontainer = $("<div class=‘iconscontainer‘></div>");

            $iconscontainer.append($icons);
            if (settings.xy == ‘x‘) {//水平拉伸
                Obj.open = { width: Obj.width };
                Obj.openCss = ‘xopen‘;
                Obj.close = { width: 0 };
                Obj.closeCss = ‘xclose‘;
                $iconscontainer.css({ height: Obj.height / 2-2, ‘padding-top‘: Obj.height / 2 }); //小图标垂直居中
                $this.css({ ‘float‘: ‘left‘ }); //小图标和对象元素水平并排
                $iconscontainer.css({ ‘float‘: ‘left‘ });
                $container.append($this); //水平拉伸时候小图标在对象元素右边
                $container.append($iconscontainer);
            }
            if (settings.xy == ‘y‘) {//垂直拉伸
                Obj.open = { height: Obj.height };
                Obj.openCss = ‘yopen‘;
                Obj.close = { height: 0 };
                Obj.closeCss = ‘yclose‘;
                $iconscontainer.css({ width: Obj.width / 2-2, ‘padding-left‘: Obj.width / 2 }); //小图标水平居中
                $container.append($iconscontainer);
                $container.append($this); //垂直拉伸时候小图标在对象元素上边

            }
            $icons.addClass(Obj.openCss);
            $this.addClass(‘this‘);
            $this.css({ ‘white-space‘: ‘nowrap‘ });
            $container.css({ ‘z-index‘: settings.zindex});
            $(‘body‘).append($container);
            $icons.bind("click", function (e) {
                if ($this.hasClass(‘closed‘)) {  //有closed类,表示已关闭,现在展开
                    $this.removeClass(‘closed‘).show().animate(Obj.open, settings.speed, function () {
                        if ($icons.hasClass(Obj.closeCss))
                            $icons.removeClass(Obj.closeCss);
                        $icons.addClass(Obj.openCss);
                    });
                } else {
                    $this.addClass(‘closed‘).animate(Obj.close, settings.speed, function () {
                        if ($icons.hasClass(Obj.openCss))
                            $icons.removeClass(Obj.openCss);
                        $icons.addClass(Obj.closeCss);
                        $this.hide();
                    });
                }
            });
            return this;
            });
        }
    };

    $.fn.itoggle = function () {
        var m = arguments[0];
        if (Method[m]) {
            m = Method[m];
            arguments = Array.prototype.slice.call(arguments, 1);
        } else if (typeof m === "object" || !m) {
            m = Method.init;
        } else {
            $.error("方法" + m + "不存在");
            return this;
        }
        return m.call(this, arguments);
    }

})(jQuery)

  需要引用的CSS:

.icons
{
    cursor:pointer;
 }
 .container
 {
    z-index:10
     }
 .iconscontainer
 {
   position:relative;
    border: 1px solid #95B8E7;
    background-color:#E9F2FF;

  }
 .this
{
   position:relative;

 }
 .xopen
 {
   background:url(‘layout_arrows.png‘) no-repeat 0 0;
   width:16px;
   height:16px;
  }
 .xclose
 {
   background:url(‘layout_arrows.png‘) no-repeat 0 -16px;
   width:16px;
   height:16px;
  }
.yopen
{
   background:url(‘layout_arrows.png‘) no-repeat -16px -16px;
   width:16px;
   height:16px;
}
.yclose
{
    background:url(‘layout_arrows.png‘) no-repeat -16px 0;
    width:16px;
    height:16px;
}

相关图片:

时间: 2024-11-16 13:58:20

可以实现实现水平拉伸和垂直拉伸的JQUERY插件的相关文章

mysql的水平拆分和垂直拆分

转:http://www.cnblogs.com/sns007/p/5790838.html 1,水平分割: 例:QQ的登录表.假设QQ的用户有100亿,如果只有一张表,每个用户登录的时候数据库都要从这100亿中查找,会很慢很慢.如果将这一张表分成100份,每张表有1亿条,就小了很多,比如qq0,qq1,qq1...qq99表. 用户登录的时候,可以将用户的id%100,那么会得到0-99的数,查询表的时候,将表名qq跟取模的数连接起来,就构建了表名.比如123456789用户,取模的89,那么

关于数据库的水平切分和垂直切分的一些概念(转)

垂直拆分 垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求.其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝

CSS如何设置背景图片水平重复和垂直重复

CSS如何设置背景图片水平重复和垂直重复: 设置背景图片的水平平铺或者垂直平铺非常的简单,使用两端代码就可以了,代码如下: background:url("photo.gif") repeat-y; 以上代码可以让背景图片在垂直方向上平铺. background:url("photo.gif") repeat-x; 以上代码可以让背景图片在水平方向上平铺. 非常的简单,具体可以参阅以下两篇文章: 1.background-repeat属性可以参阅CSS的backgr

数据库的水平扩展与垂直扩展

数据库水平扩展与垂直扩展 在互联网应用中,数据库经常是我们存储和访问数据的常用介质.随着负载的增大,对数据库读写性能的要求往往成为很大的挑战.在这种情况下我们可以考虑数据库相关的replication机制提高读写的性能.由于一般采用一写多读的replication机制(写master同步到多个slaves),导致这样的机制往往会有缺陷.首先它依赖于读写的比例,如果写的操作过多,导致master往往成为性能的瓶颈所在,从而使得slaves的数据同步延迟也变大,进而大大消耗CPU的资源,并且导致数据

数据库的水平分割和垂直分割

在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割.那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容. 1.水平分割: 按记录进分分割,不同的记录可以分开保存,每个子表的列数相同. 水平分割通常在下面的情况下使用: A 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度. B 表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用. C需要把数据

【代码笔记】使图片两边不拉伸,中间拉伸

代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //使图片两边不拉伸,中间拉伸 UIImage *image = [UIImage imageNamed:@"1.jpg"]; image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHe

Web 站点的水平扩展和垂直扩展 (译文)

当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展.选 用哪种策略主要依赖于要解决的问题以及系统资源的限制.在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点.如果你已经有一个软件系统需要不断成 长,那么你将有意或者无意中选择这两种策略中的一种. 垂直扩展 在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现.例如,假设你现在负责一批木材采伐的操作. 在这个例子中,我们假设有3辆卡车,每辆车一次可以运25根木材,计算花费1

C# 封装SDK 获取摄像头的水平角度和垂直角度

最近需要做一个C#版本的控制终端,控制摄像头,获取摄像头的水平角度和垂直角度 获取当前摄像头的角度,需要调用一个名为NET_DVR_GetDVRConfig的bool类型的函数 在C++中,函数定义:NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned) 在C#封装过程中,函数改为: [

关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条

关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条 关于<iframe>可以通过设置属性scrolling="no" 去掉iframe的两个滚动条. 如何只去掉水平滚动条或垂直滚动条呢,一些网页组件通过设置组件的style属性的overflow-x : hidden或overflow : hidden来去掉水平滚动条或垂直滚动条.但是对iframe不起作用. 可以通过下面的方法来去掉:在iframe 所包含的网页中添加<style>html { overf