Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从DIV中获取文本溢出格式的文本_Javascript_Jquery_Html_Css_D3.js - Fatal编程技术网

Javascript 如何从DIV中获取文本溢出格式的文本

Javascript 如何从DIV中获取文本溢出格式的文本,javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,[更新]:我后来想出了一个愚蠢的方法来处理它(不总是有效,但大多数时候): 风格: #txt_ruler { position: fixed; top: -100px; left:-100px; visibility: hidden; } <div id="txt_ruler"></div> String.pr

[更新]:我后来想出了一个愚蠢的方法来处理它(不总是有效,但大多数时候):

风格:

        #txt_ruler {
            position: fixed;
            top: -100px;
            left:-100px;
            visibility: hidden;
        }
        <div id="txt_ruler"></div>
        String.prototype.visualLength = function(style) {
            var ruler = $("#txt_ruler")[0];
            if(style["font-weight"]){
                d3.select("#txt_ruler").style("font-weight", style["font-weight"]); 
            }else {
                d3.select("#txt_ruler").style("font-weight", null);
            }
            d3.select("#txt_ruler").style("font-size", style["font-size"]);
            ruler.innerHTML = this;
            return ruler.offsetWidth;
        }
        String.prototype.visualText = function(style, width) {
            var l = this.visualLength(style);
            if(l<=width){
                return this.toString();
            }else {
                var percent = width/l;
                var breakIndex = Math.floor(this.length*percent);
                var tmpStr = this.substring(0, breakIndex+1)+ "&hellip;";
                while(breakIndex>=0 && tmpStr.visualLength(style)>width){
                    breakIndex--;
                    tmpStr = this.substring(0, breakIndex+1)+ "...";
                }
                return tmpStr;
            }
        }
HTML:

        #txt_ruler {
            position: fixed;
            top: -100px;
            left:-100px;
            visibility: hidden;
        }
        <div id="txt_ruler"></div>
        String.prototype.visualLength = function(style) {
            var ruler = $("#txt_ruler")[0];
            if(style["font-weight"]){
                d3.select("#txt_ruler").style("font-weight", style["font-weight"]); 
            }else {
                d3.select("#txt_ruler").style("font-weight", null);
            }
            d3.select("#txt_ruler").style("font-size", style["font-size"]);
            ruler.innerHTML = this;
            return ruler.offsetWidth;
        }
        String.prototype.visualText = function(style, width) {
            var l = this.visualLength(style);
            if(l<=width){
                return this.toString();
            }else {
                var percent = width/l;
                var breakIndex = Math.floor(this.length*percent);
                var tmpStr = this.substring(0, breakIndex+1)+ "&hellip;";
                while(breakIndex>=0 && tmpStr.visualLength(style)>width){
                    breakIndex--;
                    tmpStr = this.substring(0, breakIndex+1)+ "...";
                }
                return tmpStr;
            }
        }
但我现在的问题是:

我如何使用jQuery或D3.js或js获取带有3个点但不是全部的裁剪文本?


根据我的目的,是否有一种数学方法可以应用特定的字体大小来计算特定宽度的DIV中的文本剩余量?

请查看@soyuka谢谢,但我想我在该网站上没有完全了解你,你能告诉我如何使用该插件来达到我的目的吗,我在那个网站上没有找到如何做到这一点。它使用数学方法根据容器大小(javascript)应用字体大小。github自述文件中提供了使用示例。@soyuka谢谢,我想我的目的不是动态决定适合容器的字体大小,我想要的是在给定宽度的DIV容器中的给定文本字符串上使用特定的字体大小,并获得视觉上显示的文本Hacky imo,这段代码可能会给您一个开始的位置,祝你好运