我需要關於jQuery功能的幫助。爲每個絕對長度單元匹配具有內嵌式字體大小的元素
比方說,我想改變整個文檔的字體大小,第一個任務是增加<body>
標籤的字體大小,以便修改所有相對單位,如em或rem。但是,內嵌字體大小和老式的<font size="x">
?另外,我想將修改應用到line-height
,所以一切都很好地重新格式化。
有人可以幫助完成一個過濾器的代碼,將匹配:
<font size="2">
<div style"font-size:14px;line-height:17px">
<div style"font-size:14‘cm’, ‘mm’, ‘in’, ‘pt’, ‘pc’ and ‘px’;line-height:xyz">
HTML
<div class='parent' style='font-size:15px'>
<div>div 1 no inline styling</div>
<div style='font-size:1em'>div 2 inlined font-size 1em</div>
<div class='div-3'>div 3, CSS font-size:14px;</div>
<div style='font-size:22px'>div 4 inlined font-size 22px</div>
<div style='font-size:16pt'>div 5 inlined font-size 16pt</div>
<div style='font-size:80%'>div 6 inlined font-size 80%</div>
<div><font size="2">legacy html font size="2"</font></div>
</div>
<div id="output_box"></div>
經過幾個trys和從@wared and @ZaheerAhmed幫助答案,我可以改革這個JavaScript。我不知道如何測試每個單位的目標,而不是多個if-then-else
algorythm和使用通用選擇器'*'
可能不是一個好主意,有什麼建議嗎?
的javascript:
$("#trigger").click(function() {
/* the overall body tag for relative units */
$("body").css("font-size","+=5%");
/* targetting inlined font-size in pixels */
$('*').each(function (index, value) {
if (/font-size:[^;]+px/.test($(this).attr('style'))) {
$(this).css("font-size","+=2");
}
});
});
我製備a jsFiddle
msdn values and units reference
相對長度單位
- em計算出的字體大小。 ex小寫字母「x」的高度。
- px像素,相對於查看設備。
- %百分比。
- rem根元素的字體大小。
- 那些不考慮實際問題
- vw視口寬度。
- vh視口高度。
- vm視口寬度或高度的較小值。
- ch零寬度(渲染字體中零字形的寬度)。
絕對長度單位
- 以英寸(1英寸= 2.55釐米)。
- 釐米釐米。
- 毫米毫米。
- pt分(1分= 1/72英寸)。
- pc Picas(1 pica = 12分)。
A usefull article from Klemen Slavič
嗨Oriol,謝謝你的回答。我瞭解前端設計和最佳實踐。我正在嘗試構建一個腳本來調整舊版網站的字體大小。 –
@Milkywayspatterns但我不認爲JS腳本是解決方案。它不會在JS禁用的瀏覽器中工作,它會減慢頁面的負載,...也許你可以嘗試一個服務器端腳本從代碼中刪除內聯樣式 – Oriol
我明白你的意思,重寫html服務器 - 但這不是我的目標,這意味着後端/內容在我的控制之下。我只需要實現[+]和[ - ]字體大小調整按鈕女巫可以對待每種可能的方式已完成樣式。 –