我想让所有浏览器保持导航菜单的字体大小相同。我将导航菜单文本的字体大小设置为特定的像素大小。在IE中这是有效的,但不是在FF中。
问题是,如果一个人更改了浏览器的字体大小,那么它会完全破坏FF中的菜单布局。
有没有办法为FF调整此值,还是没有办法绕过它?我理解它是为了可访问性,但它会弄乱设计,我宁愿不使用图像而不是文本作为导航菜单。
谢谢!
答案 0 :(得分:7)
您有三种选择:
答案 1 :(得分:2)
如果你试图保持一切固定并且只为你的眼睛感到高兴,那么你正在打一场你不会赢的战斗。如果内容如果供公众使用,那么了解公众女士对于她应该阅读的正确字体大小有不同的看法。
浏览器已经发展了很长的路要走,阻止人们看到内容,阻止你做的事情。
发展并理解字体大小应该以CTRL +'+/-'改变
答案 2 :(得分:1)
获得此级别控制的唯一保证方法是将文本呈现为图像。虽然这可以用于菜单(经常不会改变),但我已经看到它被所有文本作为图像完成的网站所滥用。
我有一位受过印刷设计师培训的好朋友。当她第一次开始做网页设计时,由于缺乏控制,几乎让她变得疯狂。我建议她深呼吸,研究CSS盒子模型,然后设计“普通”字体大小+/- 1大小。
答案 3 :(得分:0)
问题不在于某人正在缩放,客户想要这样,而且就像他想要的那样,问题是9pt字体在7和8中移位而且chorme但不在ff中
答案 4 :(得分:0)
还有另一种选择:
使用以下脚本检测用户的字体大小:http://www.alistapart.com/articles/fontresizing/
然后在“ems”中调整容器div以补偿用户大小。
例如,如果用户font-size为22且base为20,则使容器div的字体大小为20/22(即22 *(20/22)= 20)。 :)
注意:您需要容器div的原因是因为您的事件监听器会监视正文的字体大小更改。
(这个答案可能会让一些可用性专家感到沮丧。对不起那些人。对你有好处,但答案仍然是答案。:p)
PS。我想我最好附上我的实现代码,以证明它有效。我没有编辑此代码用于全局应用程序。它被复制和粘贴......注意诸如替换我的IE条件(使用动态添加的CSS类)和传统的浏览器检测条件(例如)。
这很冗长,但都是必要的:
updateBaseFontSize : function(fontSize,reloadBool){
/*Format 1 is fed from the plug; format2 is the body size equiv
*examples:
*Frmt 1 (all/IE) | Frmt 2 (all/IE)
*20/18 | 16px/16px
*21/21 | 17.6px/19px
*22/23 | 19.2px/22px
*
*Purpose of updateBaseFontSize is:
* 1. convert format 1 figures to format 2
* 2. modify the all containing div 'fontbodyreadjust'
* to compensate for the new user defined body font size
*/
var format1Base;
var format1Size = fontSize; //equals new size in pixels
var reloadPage = reloadBool; //prevents reload on 1st visit
var baseConverter;
var changeConverter;
if ($('body').hasClass('browserIE')) {
format1Base = 19; //expected base size value for IE
baseConverter=16/19; //converts from format 1 to 2 for IE
changeConverter=1.5; //ditto for the difference from base size for IE
} else {
format1Base = 20;//expected base size value for all other browsers
baseConverter=16/20; //converts from format 1 to 2 for all others
changeConverter=1.6; //ditto for the difference from base size for all others
}
//Find modifiedSize, how much to compensate for the new body size
var format2Base = format1Base * baseConverter;
var format2SizeChange = (format1Size-format1Base)*changeConverter;
var format2NewSize = format2SizeChange + format2Base;
var modifiedSize = format2Base/format2NewSize;
//Allow text resizing for shrinking text and very very large text
//Only works for safari. meant to prevent odd behavior at math extremes
if ((format2NewSize >= format2Base)&&(modifiedSize>.6)){
$('#fontbodyreadjust').css('font-size',modifiedSize+'em');
}
//reloadPage boolean in place so that reload doesn't occur on first visit
if (reloadPage){
window.location.reload()
}
},
initHome : function(){
// UNHIDE HOME PAGE CONTENT AFTER IT'S LOADED. OTHERWISE, LAYERED AND MESSY
$('#slider').css('display', 'block');
// PREVENT VARIOUS USER BROWSER-FONT RESIZE SCENARIOS
// Note: irrelevant for browsers that zoom all elements simultaneously
window.initFontResizeDetector = function(){
var iBase = TextResizeDetector.addEventListener(onFontResize,null);
//Don't run the updateBaseFontSize if font size is not larger than usual
if (iBase>20){
var reloadBoolean = false;
window.updateBaseFontSize(iBase,reloadBoolean);
}
}
//id of element to check for and insert control
TextResizeDetector.TARGET_ELEMENT_ID = 'bodyContent';
//function to call once TextResizeDetector has init'd
TextResizeDetector.USER_INIT_FUNC = window.initFontResizeDetector;
window.onFontResize = function(e,args) {
var iSize = args[0].iSize; //get new user defined size
// var iDelta = args[0].iDelta; //get new user defined size
// var iBase = args[0].iBase; //get new user defined size
var reloadBoolean = true;
// console.log(iSize,iDelta,iBase);
window.updateBaseFontSize(iSize,reloadBoolean);
}