JavaScript onresize 事件未触发

标签 javascript dom-events

我正在尝试在调整浏览器大小时调整背景图像的边框宽度。我将该函数称为 onloadonresize。不幸的是,只有 onload 被调用。因此,当我调整浏览器大小时,我必须刷新页面才能看到更新后的边框宽度。控制台中没有错误消息,其他一切都运行良好 - 就好像我什至没有编写调整大小监听器一样。

w = window.innerWidth;
h = window.innerHeight;
hypotenuse = Math.sqrt(w * w + h * h);
borderWidth = window.hypotenuse/74;

function adjustBorder(width) {
    document.getElementById('tileBlock').style.borderWidth = width + 'px';
}

window.onload=function(){
adjustBorder(borderWidth);
}
 
window.onresize = function() {
    adjustBorder(borderWidth);
}

 <div class="wrapper" id="tileBlock"></div>

    #tileBlock {
    position: fixed;
    background-color: #0b0b0b;
    background-position: center;
    background-repeat: no-repeat;
    background-image: url(photo.jpg);
    border: 20px solid #fff;
    background-size: cover;  
    }

最佳答案

问题是您仅在第一次加载 JavaScript 时定义您的 borderwidth 。当窗口改变时,它也需要改变。大致如下:

function adjustBorder(width) {
    document.getElementById('tileBlock').style.borderWidth = width + 'px';
}

window.onload=function(){
    var borderWidth = getBorderWidth();
    adjustBorder(borderWidth);
}

window.onresize = function() {
    var borderWidth = getBorderWidth();
    adjustBorder(borderWidth);
}

function getBorderWidth(){
    w = window.innerWidth;
    h = window.innerHeight;
    hypotenuse = Math.sqrt(w * w + h * h);
    borderWidth = window.hypotenuse/74;
}

未经测试,尝试一下看看是否有帮助。

关于JavaScript onresize 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834398/

相关文章:

javascript - knockoutjs foreach绑定(bind)获取长度值

javascript - 使用缓动滚动 Bootstrap 水平和垂直部分

javascript - 如何按日期对 Javascript 对象数组进行排序?

javascript - 如何在HTML中触发onChange事件,即使在js中内容发生了变化?

javascript - 其他 js 事件移动设备内的 JS 事件

JavaScript 逗号计数器

javascript - 无法在 Backbone 中绑定(bind)点击事件

javascript - 删除自动发布后,如何读取 Meter.user().services?

javascript - 使用socket.io发送鼠标点击事件

javascript - event.stopPropagation 未按预期工作