Javascript – JQ-Text mit fester Höhe erweitern und reduzieren
伊谢尔伦
伊谢尔伦 2017-06-29 10:09:11
0
3
1238

<p class="text">
                <p class="desc">目木家居旗舰店,专注家居二十年。我们彰显个性,具有浓郁现代感现代风格家居设计的特色是,其设计的元素、材料都很单一,这种设计风格已经成为越来越多时尚潮人装修的首选,现代风格家居设计从整体到局部、从空间到室内陈设塑造,精雕细琢,给人一丝不苟的印象</p>
                <a href="javascript:void(0);" class="more">更多</a>
            </p>

Wie erreicht man diesen Effekt? ​​Der Erweiterungspfeil ändert sich, wenn man ihn reduziert.
Ich habe versucht, den Effekt zu schreiben. Er scheint nicht ideal zu sein, da die Höhe der Schrift hier festgelegt ist, aber die Menge des Textes ist ungewiss.
Demo

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(3)
ringa_lee

直接在p外层包上一层,外层overflow隐藏,获取p的高度设置即可;
注意p的默认margin,下面例子用父元素的padding抵消;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="http://at.alicdn.com/t/font_y2pevr1o81moyldi.css" rel="stylesheet" type="text/css">
    <style>
        .text{
            line-height: 1.8;
            margin:0 auto;
            width: 500px;
        }
        .text .desc{
            height:50px;
            padding: 20px 0;
            overflow: hidden;
        }

        .iconfont{
            width: 100%;
            font-size: 20px;
            text-align: center;
            cursor: pointer;
        }

    </style>
</head>
<body>
<p class="text">
    <p class="desc">
    <p class="desc-content">目木家居旗舰店,专注家居二十年。我们彰显个性,具有浓郁现代感现代风格家居设计的特色是,其设计的元素、材料都很单一,这种设计风格已经成为越来越多时尚潮人装修的首选,现代风格家居设计从整体到局部、从空间到室内陈设塑造,精雕细琢,给人一丝不苟的印象目木家居旗舰店,专注家居二十年。我们彰显个性,具有浓郁现代感现代风格家居设计的特色是,其设计的元素、材料都很单一,这种设计风格已经成为越来越多时尚潮人装修的首选,现代风格家居设计从整体到局部、从空间到室内陈设塑造,精雕细琢,给人一丝不苟的印象目木家居旗舰店,专注家居二十年。我们彰显个性,具有浓郁现代感现代风格家居设计的特色是,其设计的元素、材料都很单一,这种设计风格已经成为越来越多时尚潮人装修的首选,现代风格家居设计从整体到局部、从空间到室内陈设塑造,精雕细琢,给人一丝不苟的印象目木家居旗舰店,专注家居二十年。我们彰显个性,具有浓郁现代感现代风格家居设计的特色是,其设计的元素、材料都很单一,这种设计风格已经成为越来越多时尚潮人装修的首选,现代风格家居设计从整体到局部、从空间到室内陈设塑造,精雕细琢,给人一丝不苟的印象</p>
    </p>
    <p href="javascript:void(0);" class="iconfont icon-unfold"></p>
</p>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $(".text").off('click').on('click','.icon-unfold', function () {
            $(".desc").animate({height: $('.desc-content').height()}, "slow");
            $(this).removeClass('icon-unfold icon-fold').addClass('icon-fold');
        }).on('click','.icon-fold', function () {
            $(".desc").animate({height: '50px'}, "normal");
            $(this).removeClass('icon-fold icon-unfold').addClass('icon-unfold');
        });
    })
</script>
</body>
</html>

巴扎黑

其实挺简单的:
如果你要根据文字数量来展开或者收缩,那么你就根据文字的length来设定判断条件,当长度小于的时候format一份html,这个html上面没有图标,当长度大于规定长度时,收缩时,对所有文字字符串进行截取然后拼接一个展开的图标,这个font-awesome上面有很多,就对应然后展示到页面上,然后展开也是一样的套路,只不过不用截取字符串了,就把所有字符串拼接一个收缩的图标即可,然后分别在两个图标上面绑定事件,我在下面给了我之前实现的具体例子,代码不全,给你提供思路及实现应该是足够了

function format_html_collapse(info) {
    var expand_html = '<a href="#" class="click_expand">...点击展开 ></a>';                                                                                             
    if (info.content.length > info.max_length) {
        info.content = info.content.substring(0, info.max_length) + expand_html; 
    }

    return info.content;
}

function format_html_expand(info) {
    var collapse_html = '<a href="#" class="click_collapse">...点击收起 ></a>';
    if (info.content.length > info.max_length) {
        info.content = info.content + collapse_html; 
    }

    return info.content;
}
function to_collapse(wtable) {
    $('.click_collapse').on('click', function(e) {
       xxx.html(format_html_collapse(fc_value));
    });
    to_expand(wtable);
    });
} 
    
function to_expand(wtable) {
    $('.click_expand').on('click', function(e) {
        // 此处省略部分代码
        fe_value.td.html(format_html_expand(fe_value));
    });

    to_collapse(wtable);
});                                 
女神的闺蜜爱上我

动画的话,试试这个:
demo

前几天看了 @姑奶奶 的回答(这里)受到了一些启发。
重点在于:不定高度的情况下的展开,先将高度设置为auto,再使用getComputedStyle获取到高度,然后设置高度为0,在使用获取到的高度去做动画。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage