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”>&nbsp;</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”>&nbsp;</span>
<a href=”index.php” title=”<?php echo JText::_(’Revert styles to default’); ?>” onclick=”revertStyles(); return false;” class=”reset”><?php echo JText::_(’reset’); ?></a>

Comments:

2 Responses to “Javascript 字体大小动态调整解决方案”


  1. 这个方法似乎不太好,运算量太大。
    ps:为什么要注册才能评论呢?很麻烦


  2. 整个过程其实只是按照当前的值,重载了样式表,并且按照百分比给字体增加了大小而已。

    和现在流行的各种重型Ajax framework比起来,这种运算九牛一毛吧。似乎谈不上运算量?

    注册才能评论是很麻烦,主要是我懒得老来清SPAM。

    过几天考虑去掉,加个captch好了。

Leave a Reply


本站通过XHTML1.0认证全面支持FireFox和Opera