2010-08-25 97 views
2

我在http://labnol.blogspot.com/2006/12/allow-site-visitors-to-change-font.html處發現了一些代碼,以允許人們更改字體大小並將其調整爲使用按鈕。HTML JavaScript字體大小更改

<html> 
<head> 

<script language="JavaScript" type="text/javascript"> 
function changeFontSize(inc) 
{ 
    var p = document.getElementsByTagName('*'); 
    for(n=0; n<p.length; n++) { 
    if(p[n].style.fontSize) { 
     var size = parseInt(p[n].style.fontSize.replace("px", "")); 
    } else { 
     var size = 16; 
    } 
    p[n].style.fontSize = size+inc + 'px'; 
    } 
} 
</script> 

</head> 
<body> 
<basefont size=3/> 
<p> 
asdf 
hhui 
jnj 
ghvt 
</p> 

<input type="button" value="+" onclick="changeFontSize(1)" /> 
<input type="button" value="-" onclick="changeFontSize(-1)" /> 

</body> 
</html> 

我知道瀏覽器的功能,如CTRL鼠標滾輪改變字體大小。

我有一些問題,這...

1)我怎樣才能發現常數16應該是什麼,而不是代碼它? 2)是否有反正導致字體變化影響頁面鏈接的頁面?

在另一個靜脈。如果使用鼠標滾輪來改變字體大小,我的瀏覽器(Firefox)即使在瀏覽器執行新操作時也會記住頁面的字體大小。有沒有其他的地方可以讓java設置/發現這些信息?

+0

只是爲了澄清,你說的是Javascript而不是Java,對吧? – theycallmemorty 2010-08-25 14:06:47

+0

是的,認爲這是我選擇作爲標籤,對不起:-( – 2010-08-25 14:08:05

+0

我改變了標題,所以它說JavaScript而不是Java – epascarello 2010-08-25 14:17:55

回答

0

這裏是你可以用它來計算像素1EM大小的JavaScript函數:

function getEmSize(el) { 
    // If you pass in an element ID then get a reference to the element 
    if (typeof el == "undefined") el = document.documentElement; 

    var tempDiv = document.createElement("DIV"); 
    tempDiv.style.height = 1 + "em"; 
    // Just in case the content of "el" takes up it's container's height :) 
    tempDiv.style.marginTop = -1 + "em"; 

    el.appendChild(tempDiv); 
    var emSize = tempDiv.offsetHeight; 
    el.removeChild(tempDiv); 
    return emSize; 
} 

我也寫了一篇文章關於Changing Text Size On Click。只要確保您通過cookie或localStorage保存偏好。

希望這很有用。

+0

我有一系列相關的頁面如果我實現文字大小的變化,預期這些變化會在頁面之間持續存在(順便說一句,與瀏覽器功能相比,這是一個很好的參數)如果我在一個頁面中保存一個cookie,我能夠在另一個頁面中檢索它嗎?頁面將存在於服務器上的同一目錄中服務器屬於我的isp,所以當cookie發送到那裏時我可能會遇到問題嗎? – 2010-08-25 23:55:51

+0

是的,只要它位於同一個頂級域中,就可以讀取cookie例如google.com) – 2010-08-26 00:01:18

+0

這裏有一個很棒的頁面,整​​個shebang http://www.simon.kaulius.com/dynamically_change_text_javascript.htm – 2010-08-26 13:02:24

0

最簡單的做法是將頁面更改爲不使用像素。如果你使用ems,你所要做的就是不得不改變body元素的字體大小,其他的東西都會調整。

大多數瀏覽器都可以更改內置的字體大小,所以如果您正確編寫頁面的代碼,這對編碼沒有任何好處。

+0

能夠改變字體大小對於一組相關的頁面對我很重要。恕我直言,我發現瀏覽器(Firefox)記得一個給定的頁面惱人的字體大小已經增加的事實。 – 2010-08-26 12:34:17