繁体   English   中英

检测浏览器字体大小

[英]detect browser font size

是否可以检测浏览器字体大小? 当用户从菜单选择中更改字体大小时,还可以设置新的字体大小吗? 非常感谢大家的帮助。 最好的祝福。

嗯,这是可能的,但是我坐在水晶球上的乌鸦告诉我不要告诉你怎么做,而是问你想要达到什么目标。 最有可能的是,无论字体大小如何,您都希望网页看起来不错。 为此,我推荐CSS单位emex

是否可以检测浏览器字体大小?

有点,但这不是一个好主意。 假设<body>没有设置字体大小且没有干扰规则(如'body div'):

var measure= document.createElement('div');
measure.style.height= '10em';
document.body.appendChild(measure);
var size= measure.offsetHeight/10;
document.body.removeChild(measure);

为您提供1em的像素大小。

当用户从菜单选择中更改字体大小时,还可以设置新的字体大小吗?

不是直接的,但你可以经常轮询上面的测量器功能。 在IE上你可以挂掉一个CSS表达式(),因为这些在字体大小改变时重新计算(在许多其他时间),但它可能不值得(你仍然需要其他浏览器和表达式的轮询器( )无论如何都被弃用了)。

据我所知,没有办法找出答案。 您只需假设默认大小为16像素,这是标准。

最佳做法是在ems中设置所有字体大小,相应地缩放到基本字体大小。

大多数人将基本字体设置为10像素,这使得使用ems更容易。

16px = 1em

p {
    font-size:2em;
}

那将等于32px


10px = 0.625em

body {
    font-size:0.625em;
}

p {
    font-size:2em;
}

那将等于20px;

我希望有所帮助。

最简洁的答案是不。 但是,我怀疑你希望根据用户的字体大小在不同的元素上放置不同的大小。 如果是这样,您可能需要查看在“em”中指定CSS规则,其定义为相对于当前字体大小。

我需要同样的东西。 在这里,我找到了最好的答案。

https://developer.mozilla.org/en-US/docs/DOM/window.getComputedStyle

我监视文本大小更改的动机是动态更改元素的高度(或宽度),以便整个页面不需要浏览器窗口滚动条。 通常,当您执行此操作时,您将响应resize事件,但字体大小更改也会影响您的计算。 我并不在乎实际的字体大小是什么,我只需要知道它何时发生变化。

这是我使用的一些jQuery代码。 这类似于bobince建议的解决方案。 我有一个resize函数,它将更新div的高度等。

$(window).resize(resize); // update when user resizes the window.

$("body").append("<p id='textSizeReference' style='display:none;padding:0'>T</p>");
var refTextHeight = $("#textSizeReference").height();
setInterval(function() {
    var h = $("#textSizeReference").height();
    if (h != refTextHeight) {
        refTextHeight = h;
        resize(); // update when user changes text size
    }
}, 500);

如果这是一个ajax应用程序,它会轮询location.hash中的更改,则可以使用相同的轮询函数来更改文本大小。

以下是我发现的适用于在IE中检测文档当前字体系列的方法:

document.documentElement.currentStyle [ “fontFamily中”]

在Firefox / Opera中:

有一个名为getComputedStyle的方法应该返回给定的特定元素的css样式,但是我还没有想出让它返回整个文档的方法。

希望这有点帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM