javascript - 我如何在没有js的情况下在css中获得宽度

标签 javascript html css

有没有办法只在 css 中检索元素的宽度,而不使用 javascript。我知道如何使用 document.getElementsById("iframe").offsetWidth 并将其设置为重复运行。

var video = document.getElementsByClassName("video");
var ratio = 16/9;
var milliseconds = 100;

setInterval(function(){
  IframeSizeRatioFix(video, ratio);
}, milliseconds);

function IframeVideoFix(video, ratio){
  for(i = 0; i < video.length; i++){
    video[i].style.height = video[i].offsetWidth/ratio;
  }
}

但即使我将毫秒设置为 1 或 0.001,浏览器也无法处理这个速度并跳过更新,并且当用户调整窗口大小时,iframe 大小变化移动有点参差不齐,并且跳跃很多。我想知道是否有办法在 css 中使用 height: calc(100%/(16/9)); 函数,但 100% 似乎显示图像被压扁,并使用 100vw 只是将它拉伸(stretch)到页面,而不是容器(它也以与窗口不同的速率改变大小)。

有没有办法在 css 中获取元素宽度?或者,一种可以更快地更新 javascript 而不会受到浏览器不支持的速度的方法?

最佳答案

这似乎有效。我只是把它放在 window.onresize 上,我会保留它以防其他人发现它有帮助。

var video = document.getElementsByClassName("video");
var ratio = 16/9;

window.onresize = IframeVideoFix;

function IframeVideoFix(){
  for(i = 0; i < video.length; i++){
    video[i].style.height = video[i].offsetWidth/ratio;
  }
}

setTimeout(IframeVideoFix, 500);

关于javascript - 我如何在没有js的情况下在css中获得宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55052414/

相关文章:

javascript - JS 中无法解释的错误

javascript - 嵌入广告会减慢我的网站速度吗?

javascript - 键/值对的值也可以是键吗?

javascript - AddRow 和 Popup 的功能未按预期工作

css - 在同一浏览器中刷新时页面呈现不同

javascript - 如何使用表单指令为 AngularJS 数据表的编辑表单创建 "back"按钮

html - 关于 css 盒模型的 css 书, block 元素宽度如何受到影响等

html - 使用溢出隐藏时通过填充隐藏文本

html - 控制单词之间的断点

html - 没有宽度的CSS div中心