2011-11-20 36 views
1

添加非等寬字體,在容器標籤空間,等等的Javascript:獲得在預容器文本字符串的顯示寬度,在EM

那麼,如何得到一個文本字符串的寬度是顯示在容器中...在em(而不是px)中。

這對於經常更改字體的設備/網站會很有用。因此,不需要在每個重新大小上「重新繪製」大小(使用插入,測量,移除)方法。其中一些沒有事件觸發/觀看。

手動使用em工作到目前爲止...問題是使其自動。甚至jQuery.width()在px中返回結果。

回答

0

並不完美,但能夠完成任務(有點)用了jQuery]

// [div] : a dom node to test insertion of string (inherits its css prop too) 
// [str] : the string to test against 
function getEmLen(div, str) { 
    var oriInner = div.innerHTML; 
    var res; 

    div.innerHTML = '<a>'+str+'</a><a>m</a>'; 

    res = Math.ceil(100 * (jQuery(div.firstChild).width())/(jQuery(div.lastChild).width()))/100; 
    //the * 100,/100 is to remove long trailing divides 

    div.innerHTML = oriInner; 
    return ''+res+'em'; 
} 
2

您可以將px轉換爲em。記住公式:

var em = px/fontSize; 

所以,如果你有與font-size設定爲1em這通常是一個16px元素pre,而您在PX寬說800px,那麼你使用em寬度800/1650em。希望有所幫助。投票給我的答案,如果你覺得它有用。

+1

這正是因爲你問我,我不是你的答案投票......你在回答問題這裏提供幫助,而不是獲得代表。 – Purag

+0

它仍然幫助我進入正確的方向=) – PicoCreator

相關問題