根據html容器大小和顯示文字多少調節字型大小

2022-03-09 12:48:29 字數 1612 閱讀 4596

在做html相關的東西的時候經常會遇到這樣的問題,容器大小(長x寬)固定,容器包含內容(特指文字)多少不固定,這個時候就讓人很苦惱了,將字型大小設定成多少才合適呢?下面看看我的解決思路:

首先要知道網頁中所說的字型大小的px指的是字型的寬和高,也就是說在35px顯示乙個中文字元,該字元占去35x35的空間。知道這個之後,我們就可以想辦法動態的根據容器大小和包含內容多少顯示文字了。

首先要做的就是計算乙個字串的長短(乙個中文字元記1個,乙個英文本元記0.5個),我這裡使用了簡單的判斷,當蚊子unicode編碼大於255的時候計算乙個漢字字元,小於255的時候計算0.5個漢字字元:

var l=0.0;

for(var i in

str)

l=match.ceil(l);

也許機制的你已經注意到了,在最後我對長度進行了向上捨入,如果不進行這個操作也可以,但是為了不要那麼多麻煩的小數直接給他向上捨入。

var font_size=math.floor(math.sqrt(parseint(width)*parseint(height)/l));

這裡計算的font_size是乙個剛好合適的情況,如下面圖2014-11-11 1所示

inin

inin

inin

inin

inin

inin

inin

in圖 2014-11-11 1

但往往情況會是這樣的

inin

inin

inin

inin

inin

inin

in圖 2014-11-11 2

這樣的情況就會導致容器被這些字的體積加兩個空閒位置撐破了,因此就要進行接下來這一步,進行修正,調整字型大小,準確的說是減小,知道剛好裝得下位置:

var rows=math.floor(width/font_size);

var lines=math.ceil(l/rows);

while(lines*rows*font_size*font_size>width*height)

這裡是檢測所有位置大小的總和(包括用到的位置和空閒位置),直到它剛好小於等於容器體積,此時的字型就是滿足要求的字型。

下面看看完整程式:

fontsize=function

(width,height,str,maxsize)

l=math.ceil(l);

var font_size=math.floor(math.sqrt(parseint(width)*parseint(height)/l));

//看下是否真的放得下

var rows=math.floor(width/font_size);

var lines=math.ceil(l/rows);

while(lines*rows*font_size*font_size>width*height)

return font_size>maxsize?maxsize:font_size;

}

這裡面還進行了最大字型設定,免得只有乙個字的時候,字型過分的大。

好了今天就到這裡。

send me~

根據容器大小設定字型

如果容器大小固定,怎麼根據容器大小變換字型的font size,使無論字型多少都不溢位容器呢 最小為12px 在網上查了資料,總結如下 html 如果有來生 要做一棵樹站成永恆 沒有悲傷的姿勢 一半在塵土裡安詳 一半在空中飛揚 一半散落陰涼 一半沐浴陽光 非常沉默 非常驕傲 從不依靠 從不尋找 可以...

根據螢幕寬高比適配文字大小 和 布局

很久沒寫文章了,畢竟新人就只能寫給新人的福利了,還是那句話,讓新人少走一點彎路.談技術之前,先來說明靈感在於哪,老規矩,上圖 首先,除了iphone4,iphone5,6,6plus機型,都是成比例的,也就是每個螢幕的寬度 高度都是相等的,所以我們可以利用這個成比例,寫以下 螢幕適配 判斷裝置型別 ...

iframe顯示html文字

以前的專案用到了ifram標籤,直接設定src某個頁面的url即可,可以今天後台同學要求前端請求頁面資料的時候帶引數,並且要是post請求,這就尷尬了,iframe的src是乙個get請求,本來帶引數直接在url後面追加引數即可,用post請求只能接收到html的文字資料。一番搜尋之後,終於找到如下...