是否可以使用javascript获取以em为单位的窗口宽度
Is it possible to get the width of the window in em units using javascript?
我正在寻找一种可靠的方法来使用JavaScript获得以em为单位的窗口宽度。我惊讶地发现jQuery只会返回像素测量的结果。
这似乎有效:
$(window).width() / parseFloat($("body").css("font-size"));
这里有一个不需要jQuery的解决方案,也不需要显式的字体大小声明。
window.innerWidth / parseFloat(
getComputedStyle(
document.querySelector('body')
)['font-size']
)
对于那些需要将其全部组合在一起的人,以下代码对我有效:
<p>Window size: <span id="width_px"></span> pixels or <span id="width_ems"></span> ems</p>
<script>
window.onresize = function() {
document.getElementById("width_px").innerHTML = window.innerWidth;
document.getElementById("width_ems").innerHTML = window.innerWidth / parseFloat($("body").css("font-size"));
};
</script>
它是使用上面添加到链接教程中的窗口宽度测试代码中的答案组合在一起的。
可以计算它,但em
不像px
那样是一个"简单"的单元,因为它取决于字体选择(即字体族、样式(粗体、斜体等)和字体大小的组合)。当然,字体大小本身可以是相对的(例如,如果给字体一个em
、ex
或百分比大小,则该字体的计算px
高度是从父元素的大小派生出来的)。
要获得页面的em
宽度,可以进行如下转换(警告:psuedocode):
// For this to work reliably, size should be in px, pt, or mm.
function getWindowWidthInEm(fontFamily, style, size) {
var box = document.createElement("span");
box.innerText = "M";
box.style.fontFamily = fontFamily;
box.style.fontSize = size;
box.style.fontWeight = style is bold;
box.style.fontStyle = style is italic;
var body = document.getElementsByTagName("body")[0];
body.appendChild( box );
var emInPx = box.getComputedStyle().width;
body.removeChild( box );
var windowPx = window.width;
return windowx / emInPx;
}
简单,因为我们知道1em = 16px
var window_width_em = 1/16 * window_width_px;
相关文章:
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 每小时倒计时一次,但以30分钟为单位
- 以天为单位计算年龄-Javascript
- 是否可以使用javascript获取以em为单位的窗口宽度
- 获取以屏幕像素为单位的旋转SVG元素的边界
- GridStack项的高度和宽度(以像素为单位)
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- JQPlot's仪表-以针为单位显示值
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 从Javascript到C#获取正确的日期(以毫秒为单位)
- 如何获得一个进度元素,它被设置为在窗口调整大小时调整大小
- 远距离变换元素的宽度/高度(以像素为单位)
- fancybox将内容更改为模式窗口
- 如何将宽度和高度变量设置为浏览器窗口的宽度和高度
- jquery匹配以px为单位的样式字体大小的元素
- 以周为单位计算日期差异(Javascript)
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- 如何从顶部获取窗口位置(以像素为单位)