回答
的一個問題是,字體渲染甚至可以在不同的版本,並在不同的操作系統是從瀏覽器到瀏覽器不同。所以在預先計算文本的長度/高度時,並不那麼容易。你可以做這樣的事情:
- 創建一個字段的最大高度
- 集這一領域的溢出隱藏
- 編寫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