回答
的一个问题是,字体渲染甚至可以在不同的版本,并在不同的操作系统是从浏览器到浏览器不同。所以在预先计算文本的长度/高度时,并不那么容易。你可以做这样的事情:
- 创建一个字段的最大高度
- 集这一领域的溢出隐藏
- 编写JavaScript代码执行以下操作:
__
- 1获取文本
- 2切断了最后一个词(usin GA正则表达式或类似的东西)
- 3检查容器是否仍具有溢出
- 4执行步骤2和3这么久,直到没有更多的溢出
- 5切断多了一个字(你仍然可以有情况下,你没有空间“...”)
- 6追加“...”
,如果你有一个纯文本这一次才有效。如果你在标题中有标签,像这样的东西可能会把你的HTML结构搞得一团糟。想象一下,这个结果是一个开放的“<范围>” - 标签永远不会关闭...... :)
你的正则表达式/文字查找器也应该是如此聪明,以切除“词分离”的东西。
我不知道这是否是一个非常好的方法,但也许有点帮助,因为使用jQuery,这只会是4-5行。
这听起来很有趣。我尽量避免使用jQuery,所以我会试试这个。我认为最好先追加“...”,然后用正则表达式去掉最后一个单词。这样,您就避免了最后一个字是1-2个字符而没有更多空间的情况,并且删除该字段并尝试为“...”添加3个字符,在这种情况下,一个点仍然会溢出。 –
是的,上面的例子可以通过这种方式进行优化。我找到了一个解决方案,其中有最小的代码可能在这里:http://jsfiddle.net/MPkSF/151/ – insertusernamehere
你将需要玩弄你的设计,看看有多少角色将等于两行。如果你没有使用固定字体,你必须看一堆案例。
我使用此功能在我的一个网站上执行此操作。这会修剪到某个最大数量的字符,然后在字符串结尾之前的第一个空格处打断字符串。可能发生的
function str_tr($string,$max)
{
if(strlen($string)>$max)
{
$string = substr($string,0,$max);
$i = strrpos($string," ");
$string = substr($string,0,$i);
$string .= "...";
}
return $string;
}
正如@cpilko说...如果它不是一个固定大小的字体......它不会是肯定的工作...
30我(小字符)与W的非固定字体
iiiiiiiiiiiiiiiiiiiiiiiiiiiiii(大字符)
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
但是,在固定大小的字体......事情更容易预测:
iiiiiiiiiiiiiiiiiiiiiiiiiiiiii
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
你需要的是文本溢出CSS属性。它使用CSS来切断固定宽度容器中的多余文本,并用省略号字符替换溢出。更多详情:
,只适用于一行,我希望它与2行 –
最后我做这样的事情:
<p id="titleContainer">blabla bla bla blablabla bla blabla bla bla blablabla bla blabla bla bla blablabla bla</p>
<script type="text/javascript">
function checkOverflow(el){
var curOverflow = el.style.overflow;
if (!curOverflow || curOverflow === "visible"){
el.style.overflow = "hidden";
}
// 26 pixels was the height of 2 lines
var isOverflowing = el.scrollHeight > 26;
el.style.overflow = curOverflow;
return isOverflowing;
}
var titleContainer = document.getElementById("titleContainer");
var titleTxt = titleContainer.innerHTML + "...";
while(checkOverflow(titleContainer)){
titleTxt = titleTxt.replace(/ [^ ]+\.\.\.$/, "...");
titleContainer.innerHTML = titleTxt;
}
</script>
- 1. MySQL:文本占用多少空间?
- 2. cpu占用多少太多
- 3. PDF:我如何找到渲染时文本会占用多少空间?
- 4. 使用C++找出文本文件中有多少行
- 5. u-boot占用多少DRAM?
- 6. 多少字节将一个字符串占用,少信
- 7. 查找少于2000行的文本文件并删除它们
- 8. 本地存储密钥本身占用多少空间?
- 9. 多文本框和查找
- 10. 查找JTextField的文本输入中有多少单词
- 11. Objective-C:textfields占位符文本的实际颜色是多少?
- 12. 找出数据库中一行所占用的存储量有多少
- 13. 空值占用多少内存?
- 14. Vector元素占用多少空间?
- 15. 选项卡占用多少空间?
- 16. DLR的内存占用量是多少?
- 17. 一般NSPasteboard占用多少内存?
- 18. Python Pickle占用多少内存?
- 19. 以下占用多少存储空间?
- 20. 进程占用了多少核心?
- 21. (iphone)UIImage占用多少内存?
- 22. 每个Apache进程占用多少?
- 23. int [n] []占用多少内存?
- 24. 检查PHP数组占用多少内存
- 25. 占用整行的文本字段
- 26. 使用repl.bat查找和替换文本多行
- 27. 查找跨越文本的多行并使用PowerShell替换
- 28. 如何查找MySQL查询在Java中返回多少行?
- 29. 计数,多少行将给定文本字符串
- 30. Bash脚本在文件中查找占位符
你如何定义 “两线”? – Mike
[你有什么尝试?](http://whathaveyoutried.com/) – sczizzo