Javascript 字幕文本-获取屏幕边界以外的文本长度(以像素为单位)
我正在尝试获取一个新闻提要的长度,该提要在页面上从一侧滚动到另一侧。我需要计算文本的宽度(以像素为单位),以确定何时在开始时重新定位 我已经将新闻提要文本包装在一个div容器中。文本具有CSS规则Javascript 字幕文本-获取屏幕边界以外的文本长度(以像素为单位),javascript,jquery,html,css,viewport,Javascript,Jquery,Html,Css,Viewport,我正在尝试获取一个新闻提要的长度,该提要在页面上从一侧滚动到另一侧。我需要计算文本的宽度(以像素为单位),以确定何时在开始时重新定位 我已经将新闻提要文本包装在一个div容器中。文本具有CSS规则溢出:可见和空白:nowrap设置 但是,当我试图获取文本的长度(以像素为单位)时:我只能获得视口的最大宽度 我使用以下jQuery获取长度:$(“.scroll text”).width() 这仅达到我的浏览器的最大视口大小 是否有办法确定包含视口/屏幕外文本的文本长度(以像素为单位)? 编辑:这是我
溢出:可见代码>和空白:nowrap代码>设置
但是,当我试图获取文本的长度(以像素为单位)时:我只能获得视口的最大宽度
我使用以下jQuery获取长度:$(“.scroll text”).width()代码>
这仅达到我的浏览器的最大视口大小
是否有办法确定包含视口/屏幕外文本的文本长度(以像素为单位)?
编辑:这是我的标记:
可能将此帖子标记为重复的邮件:
它不是复制品。屏幕边界外的像素长度毫无疑问。使用您喜爱的浏览器检查元素:
我花了很长时间才找到,但也许你想在我的答案中找到类似的答案
使用此代码,您可以找到文本的宽度,并从中计算字符串的宽度
function charSizes(numChars, cssFont) {
var span = document.createElement('span'),
text = document.createTextNode(''),
uia, i, j;
span.appendChild(text);
if (cssFont) span.style.font = cssFont;
span.style.padding = span.style.margin = 'none';
document.body.appendChild(span);
numChars = (numChars || 255);
uia = new Uint32Array(numChars * 2);
for (j = i = 0; i < numChars; j = 2 * ++i) {
text.data = String.fromCharCode(i);
uia[j] = span.offsetWidth;
uia[j + 1] = span.offsetHeight;
}
// free memory
document.body.removeChild(span);
span = text = numChars = cssFont = null;
// output lookup function
return function (c) {
var i = c.charCodeAt(0) * 2;
return {
width: uia[i],
height: uia[i + 1]
};
};
}
var defaultFont = charSizes(0xFF); // match the style of the text in your marquee
// using the second parameter if necessary
函数字符大小(numChars、cssFont){
var span=document.createElement('span'),
text=document.createTextNode(“”),
uia,i,j;
span.appendChild(文本);
如果(cssFont)span.style.font=cssFont;
span.style.padding=span.style.margin='none';
document.body.appendChild(span);
numChars=(numChars | | 255);
uia=新的UINT32阵列(numChars*2);
对于(j=i=0;i
现在
var str='foobar',i,len=0;
对于(i=0;i
如果我们有更多关于标记的信息,您可能可以直接测量DOM中的#文本节点。您可以共享HTML标记,以便我们可以看到字幕是如何实现的吗?@Shiva添加了标记链接。当我这样做时:它实际上显示了它应该获得的正确宽度。但出于某些原因:jQuery在屏幕宽度上剪切了。请告诉我们在正文
和html
、html开始标记(模板的第一行)上应用了什么css,以及是否在视口中使用了元标记。第162行出现语法错误:请删除)代码>。下一步:您必须引用id,而不是类,请尝试$(“#滚动文本”).width()代码>。请分享你的结果。当我运行这个脚本时,我得到了以下错误:但是除了错误:它似乎可以工作。我还没有测试我的字幕文本。待命,对不起。似乎无法让它工作。当我尝试使用它时,我得到了一个NaN
值。@DJZorrow0xFF
基本上是指“前256个字符”。您是否使用非ASCII/ANSI字符(它们将超出此范围)?我使用。我使用ÆØÅ(挪威字母表中的3个结尾字符)作为附加字符。我该怎么添加这些呢?我不知道你的奶奶来自哪里。它们应该包括在内(198
,216
,197
)<代码>JSON.stringify('ÆØÅ'.split('').map(defaultFont));//“[{“宽度”:13,“高度”:16},{“宽度”:11,“高度”:16},{“宽度”:9,“高度”:16}]”
var str = 'foobar', i, len = 0;
for (i = 0; i < str.length; ++i) {
len += defaultFont(str[i]).width;
}
len; // 36 pixels on this page