文段溢出缩略显示,点开显示全文

    关于这个功能有一个比较有名的jQuery插件dotdotdot.js,但用别人的插件总是觉得自由度不高,而且没法像animate一样让盒子动态伸缩,所以便花时间自己写了一个。

    先贴上代码:

    //文段溢出显示省略号 (外部盒子选择器,内部文段选择器,文段最大高度,省略号内容)
    function overFlowDotDot(outBox, boxText, textMaxHeight, ellipsis)
    {
        var origiText = new Array();  //存放会溢出的文段内容原文/缩略文
        var overHeight = new Array();  //存放原溢出高度
        //初始化
        for (var i=0; i<$(boxText).length; i++)
        {
            origiText[i] = "0";
            overHeight[i] = 0;
        }
        $(boxText).each(function()
        {
            //判断文字是否溢出板块
            if (parseInt($(this).css('height')) > textMaxHeight)
            {
                //存放好原文、溢出高度
                var index = $(boxText).index(this);
                origiText[index] = $(this).html();
                overHeight[index] = parseInt($(this).css('height')) - textMaxHeight;
                while (parseInt($(this).css('height')) > textMaxHeight)
                {
                    var text = $(this).text();
                    var text = text.substring(0, text.length-10) + ellipsis;
                    $(this).html(text);
                }
                //鼠标显示为可点击
                $(this).css('cursor', 'pointer');
            }
        });

        //鼠标点击缩略了的文段
        $(boxText).click(function()
        {
            var index = $(boxText).index(this);
            if (origiText[index] != "0")  //判断是不是有缩略的文段
            {
                var temp = $(this).html();
                if ($(this).html().length < origiText[index].length)  //判断是否已点开
                {
                    $(this).parents(outBox).animate({height: "+=" + overHeight[index]}, 100, function()
                    {
                        $(this).find(boxText).html(origiText[index]);
                        origiText[index] = temp;
                    });
                }
                else 
                {
                    $(this).parents(outBox).animate({height: "-=" + overHeight[index]}, 100, function()
                    {
                        $(this).find(boxText).html(origiText[index]);
                        origiText[index] = temp;
                    });
                }
            }
        })
    }

    效果大概如下:



    因为我的文段是像这样放在一个有其他元素的盒子里,外部的盒子高度也要跟随伸缩变化,因此参数里有outBox外部盒子选择器和boxText内部文段的选择器两个,如果只有文段伸缩便自行修改下代码吧。


    origiText和outHeight分别用于存放缩略前的文段和超出的高度,同时可通过判断origiText是否为空来判断该文段是否为缩略的文段。

    存放好原文后,在一个while循环里用substring函数处理文段直至文段高度不超过最大高度。


    点开缩略文段时,要先让高度animate变化,之后再在callback里改变文段内容,出来的效果才好看。

    文段缩略时,origiText存放的是原文;文段点开时,origiText存放缩略文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值