Javascript - 如何改变 css class 的 属性

Javascript - How to alter a property of a css class


这是我正在尝试做的事情:

我想在每次调整 window 大小时更改特定 div 的宽度。 div 的 class 属性位于外部 css 文档中,class 名称为“.nav”。

在HTML中:<body onResize="nav_resize()">

在 JS 中:

var w= window.innerWidth, h= window.innerHeight;
var nav= document.getElementsByClassName('nav');


function nav_resize(){
 if (w<700){ nav.style.width= w-150;}
}

 .nav{ background-color:#5F1C1C;
    position:fixed;
    float:left; 
    width:190px;
    min-width:85px;
    top:105px;
    height:100vh;
    overflow:hidden;
    z-index:1; }
我知道我做错了什么,因为在浏览器中尝试时没有任何反应。
任何帮助表示赞赏。

getElementsByClassName returns 节点列表。所以要么使用

document.getElementsByClassName('nav')[0];

document.querySelector(".nav")
var w= window.innerWidth, h= window.innerHeight;
var nav= document.getElementsByClassName('nav')[0];



function nav_resize(){
    if (w<700){ nav.style.width= (w-150)+"px";}
}

要控制此类调整大小事件,请使用 @media CSS rule

@media only screen and (min-width: 700px) {
    // CSS style for +700px
}

@media only screen and (max-width: 700px) {
    // CSS style for -700px
}

这将避免您在调整大小时出现从小到大和相反的问题。

您需要更改 window 调整大小事件侦听器中的宽度和列表中的导航元素。

var w= window.innerWidth, h= window.innerHeight;
var nav= document.getElementsByClassName('nav')[0]; // get nav element from list


function nav_resize(){
    w= window.innerWidth; // get updated window width after resize.
 if (w<700){ nav.style.width= w-150 ;}
}