爲了便於閱讀,我製作了自己的csscolumn
(css3)polyfill腳本將文本分成兩列。這不是一個需要參數的動態腳本,而是針對我現在正在工作的站點量身定製的。確定要放在div中的文本的數量以最大化最後一行的寬度
它工作正常,除了第一列中最後一行文本的一個問題。在某些情況下,只有一個單詞在第一列的最後一行顯示,其餘文本進入第二列,句子繼續。換句話說,句子中的空白太多會在column1和column2之間出現中斷。例如:
Column 1. Lorem ipsum dolor sit amet, sentence continued after break in first column.
consectetur adipisicing elit, sed do etc etc etc etc etc etc etc etc etc etc etc
sentence etc etc etc etc etc etc etc.
我認爲這需要通過使用height
,width
和每一列的line-height
(都將具有相同的寬度,49%)來實現。
我的邏輯至今是:
- 找到字符串中的中間索引位置
- 搜索下一個空白,其中的文本將被分割
- ,然後約各執一個空白文本在中間
我沒有運氣使用現有的polyfills這個問題。然後,我使用Columnizer,在那裏我遇到了一個錯誤,當我的字符數不足450時,第一列空了。所以我在我的隔間裏尖叫着「F @ ** it !!我們會活下去!」。 我不想在簡單的文章文字上使用ul li
任何可怕的語義。
但是,如果有更好的腳本來解決這個問題,那麼我將爲此作爲答案。
我的簡化代碼:
$('.article-body').each(function (index) {
if ($(this).text().length > 300) {
var text = $(this).text();
var length = $(this).text().length;
var col1 = null;
var col2 = null;
if (text[Math.floor(length/2)+14].trim() === '') {
col1 = text.slice(0, Math.floor(length/2)+14).trim();
col2 = text.slice((Math.floor(length/2))+15, length).trim();
}
else {
loop1:
for (var i = Math.floor(length/2)+14; i <= length; i++) {
if (text[i].trim() === '') {
col1 = text.slice(0, i).trim();
col2 = text.slice(i+1, length).trim();
$(this).empty();
$(this).append("<div class='first-column'>"+col1+"</div>"); // Column 1
$(this).append("<div class='second-column'>"+col2+"</div>"); // Column 2
break loop1;
}
}
}
}
我不知道,這種做法失去一切格式化文本信息,包括段落,不是嗎?看看div中的段落並在靠近中間的段落中分裂會不會更好?根據我的經驗,網絡上的文章由很多小段落組成。在一篇相當長的文章中,在段落中斷時,列長度的小差異不應成爲問題。 –
問題在於第1列最後一行的句子太早;在第2列中恢復之前。換句話說:句子中的空白在column1和column2之間過多。 – gorn
我明白你的問題是什麼。但我不明白你爲什麼用「.text()」「整頓」整個文本並丟失所有格式。 –