2010-08-25 63 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