微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在HTML中隐藏溢出文本的中间

是否可以隐藏溢出文本的中间而不是结束?例如用句点替换overflown文本.

我现在正在谈论一个表,但任何可能的方式将是很好的知道.

所以我的意思是缩短112233445566778899到112 … 899(或类似的东西),而不是11223344

我不太了解JavaScript,但如果这是让我知道的唯一方法,我会用教程找出其余的内容.

解决方法

我提出了一个纯JavaScript解决方案,将 Nick R’salhoseany’s答案结合在一起,同时添加了一些额外的功能来检测长度,并指定省略号两边所需的字符数.

使用这种方法,您不需要知道容纳在容器中的字符数,它们都是自动完成的,并且也可以在窗口调整大小时触发.

JSFiddle demo.

调整结果框架大小以查看结果.

结果

这个:

…成为这样

…或这个:

…或这个!

代码

CSS

p {
    border: 1px dashed #000;
    position: relative;
    display: block;
    width: 50%;
}

p:before {
    content:attr(data-shortened);
    color: #000;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
}

JavaScript的

function shortenContent(content,chars) {
    /* chars here determines how many characters
     * we want on either side of the elipsis. */
    var chars = chars || 3; // Default is 3

    if (!content && !content.length)
        return;

    /* Loop through each content element and
     * shorten where necessary. */
    for (i = 0; i < content.length; i++) {
        var el = content[i],elementWidth = el.offsetWidth,textWidth = el.scrollWidth;

        /* If our element's width is less than
         * its content's width,we need to shorten. */
        if (elementWidth < textWidth) {
            var text = el.innerText;
            /* Set the data attribute for the CSS to use. */
            el.setAttribute(
              'data-shortened',text.slice(0,chars) +'...'+ text.slice(-chars)
            );
            el.style.color = 'rgba(0,0)';
        }
        /* Otherwise,ensure non-shortened text is visible. */
        else {
            el.setAttribute('data-shortened','');
            el.style.color = null;
        }
    }
}

如何使用?

要使用上述函数,只需要将一个元素集合传入shortenContent函数

// Get the content we wish to shorten
var content = document.querySelectorAll('div p');

/* Trigger the function initially. */
shortenContent(content);
abcdefghijklmnopqrstuvwxyz    =>    abc...xyz

指定不同数量的字符

如果要在省略号之前和之后出现不同数量的字符(例如,abcd … wxyz而不是abc … xyz),则可以将一个数字作为第二个参数传入shortenContent函数

/* Trigger the function initially. */
shortenContent(content,4);
abcdefghijklmnopqrstuvwxyz    =>    abcd...wxyz

窗口调整大小示例

当窗口(在这种情况下,JSfiddle结果窗格)改变大小时,这将触发shortenContent函数.

/* Fire the shorten function when the window resizes. */
window.onresize = function(event) {
    shortenContent(content);
};

原文地址:https://www.jb51.cc/html/224212.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐