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)+ "…";
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)+ "…";
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,这段代码可能会给您一个开始的位置,祝你好运