-1

我正在尝试编写一个布局,其中有一个工具栏和一个主 div。当窗口 Y 轴小于窗口 X 轴时,工具栏在左侧。当窗口 X 轴小于窗口 Y 轴时,工具栏位于顶部。我已经将工具栏绝对定位在顶部:0 和左侧:0 并尝试在调整大小时更改宽度和高度属性。但是我的代码不起作用。

Javascript:

window.onresize = function(event) {
winW = window.innerWidth;
winH = window.innerHeight;   
console.debug("x axis:" + winW  + "y axis:" + winH);

if(winW < winH){
   var elem = document.getElementById('div1');

    console.debug("test" + elem.style.width);

   var a = elem.style.height;
   elem.style.height = elem.style.width;
   elem.style.width = a;

}
else{
   var elem = document.getElementById('div1');

    elem.style.height = elem.style.height;
    elem.style.width = elem.style.width;
}
}

CSS:

#div1{
  background: red;
  position:absolute;
  height:100%;
  width:20px;
  top:0;
  left:0;
}
#div2{
  width:100%;
  height:500px;
  background-color:green;
  margin-left: 20px;
}

jsFiddle 示例在这里

4

2 回答 2

6

您可以使用@media screen and (min-aspect-ratio: 1/1) { ... }. 此查询中的任何样式仅在窗口与窗口一样宽或比其高宽时才会激活。

演示

我添加了这段代码,并删除了所有的 JavaScript:

@media screen and (min-aspect-ratio: 1/1) { 
    #div1 {
        width: 100%;
        height: 20px;
    }

    #div2 {
        width: 100%;
        margin: 0;
     }                
}

可以在 MDN 上找到信息

可以在此处找到对媒体查询的支持,但由于您可以使用 JavaScript,因此我建议您使用Respond.js使它们适用于所有用户。

于 2013-01-03T09:38:20.047 回答
2

支持媒体比例;)

更多浏览器兼容:

window.onresize = function(event) {
    winW = window.innerWidth;
    winH = window.innerHeight;

    console.debug("x axis:" + winW  + "y axis:" + winH);

    document.getElementById("div1").className = ( winW < winH ? "verticalMenu" : "horizontalMenu" );
}

// optionally invoke window.resize() once manually for setting it default. Or set a defaultClass on the div itself in HTML

.horizontalMenu {
    height:20px;
    width:100%;
}
.verticalMenu {
    height:100%;
    width:20px;
}

请参阅此 CodePen

于 2013-01-03T09:47:28.067 回答