Javascript 字体大小动态调整解决方案
分类:Web UI & Ajax, 网页&平面设计, 计算机与互联网 作者: 秋天 时间: 08-04-2009
关于这个问题,我的解决方案如下:
JAVASCRIPT部分:
var prefsLoaded = false;
var defaultFontSize =100;
var currentFontSize = defaultFontSize;function revertStyles(){
currentFontSize = defaultFontSize;
changeFontSize(0);}
function toggleColors(){
if(currentStyle == “White”){
setColor(”Black”);
}else{
setColor(”White”);
}
}function changeFontSize(sizeDifference){
currentFontSize = parseInt(currentFontSize) + parseInt(sizeDifference * 5);if(currentFontSize > 220){
currentFontSize = 220;
}else if(currentFontSize < 60){
currentFontSize = 60;
}setFontSize(currentFontSize);
};function setFontSize(fontSize){
var stObj = (document.getElementById) ? document.getElementById(’content_area’) : document.all(’content_area’);
document.body.style.fontSize = fontSize + ‘%’;//alert (document.body.style.fontSize);
};function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = “; expires=”+date.toGMTString();
}
else expires = “”;
document.cookie = name+”=”+value+expires+”; path=/”;
};function readCookie(name) {
var nameEQ = name + “=”;
var ca = document.cookie.split(’;');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==’ ‘) c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
};window.onload = setUserOptions;
function setUserOptions(){
if(!prefsLoaded){cookie = readCookie(”fontSize”);
currentFontSize = cookie ? cookie : defaultFontSize;
setFontSize(currentFontSize);prefsLoaded = true;
}}
window.onunload = saveSettings;
function saveSettings()
{
createCookie(”fontSize”, currentFontSize, 365);
}
参考了Joomla developer本站的JS代码,有reset设置,并且设置记录到cookie下次留用。
HTML部分:
<h3><?php echo JText::_(’FONTSIZE’); ?></h3><p class=”fontsize”>
<a href=”index.php” title=”<?php echo JText::_(’Increase size’); ?>” onclick=”changeFontSize(2); return false;” class=”larger”><?php echo JText::_(’bigger’); ?></a><span class=”unseen”> </span>
<a href=”index.php” title=”<?php echo JText::_(’Decrease size’); ?>” onclick=”changeFontSize(-2); return false;” class=”smaller”><?php echo JText::_(’smaller’); ?></a><span class=”unseen”> </span>
<a href=”index.php” title=”<?php echo JText::_(’Revert styles to default’); ?>” onclick=”revertStyles(); return false;” class=”reset”><?php echo JText::_(’reset’); ?></a>
这个方法似乎不太好,运算量太大。
ps:为什么要注册才能评论呢?很麻烦
整个过程其实只是按照当前的值,重载了样式表,并且按照百分比给字体增加了大小而已。
和现在流行的各种重型Ajax framework比起来,这种运算九牛一毛吧。似乎谈不上运算量?
注册才能评论是很麻烦,主要是我懒得老来清SPAM。
过几天考虑去掉,加个captch好了。