【问题标题】:Div in responsive page ignoring viewport size in mobile browsers响应页面中的 Div 忽略移动浏览器中的视口大小
【发布时间】:2013-07-02 03:53:08
【问题描述】:

我正在努力使我的 pet project web app 具有响应性,但我无法让该页面在移动浏览器中正确显示。我的页面基本上是由一个容器 div、标题、导航栏(从桌面移动到移动设备时从侧面移动到顶部)和一个主要内容 div 构成的,并且在我在 iPhone 上测试之前一切都按预期进行(两者都是Safari 和 Firefox) - 标题和导航栏正确显示,但内容 div 太大而破坏了页面。 Here are some screenshots to show you what I mean(iPhone/Safari 默认缩放,iPhone 缩小以显示整个页面,在 Firefox 中等效窗口大小)。

令人困惑的是,这似乎只影响主要内容 div (.list),因为标题和导航栏仍以预期大小显示,但我很难在代码中看到任何可以使它的内容表现不同。

相关 HTML:

<!DOCTYPE html>
<html>
<head>
...
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
...
</head>
<body>
<div id="container">


<div id="logoheader"><h1>...</h1><h2>...</h2></div>
<div class="buttonbar">...</div>

<div class="list">
    <h3>...</h3>
    <div class="maintable">
    ...
    ...
    </div>
</div>


</div>
</body>
</html>

相关CSS:

body {
    height: 100%;
    width: 100%;
}
#container {
    position: relative;
    top: 0;
    margin: 0 auto 10px auto;
    width: auto;
    max-width: 1250px;
    min-height: 600px;
    white-space: nowrap;
}
#logoheader {
    width: auto;
    min-width: 888px;
    height: auto;
    display: block;
}
.buttonbar {
    position: absolute;
    left: 18px;
    width: 90px;
    display: inline-block;
}
.list {
    position: absolute;
    left: 108px;
    right: 20px;
    min-height: 490px;
    min-width: 750px;
    display: block;
    vertical-align: top;
    white-space: normal;
}
.maintable {
    font-size: .875rem;
    width: auto;
    min-height: 406px;
}

@media screen and ( max-width: 600px ) {
#container {
    max-width: auto;
    min-height: auto;
}
#logoheader {
    min-width: auto;
    width: 100%;
    height: 40px;
}
.buttonbar {
    position: relative;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: auto;
}
.list {
    position: relative;
    left: 0;
    right: 0;
    min-height: auto;
    min-width: auto;
    width: 100%;
}
.nontable {
    min-height: auto;
   }
}

【问题讨论】:

  • 我只是想知道为什么你不想使用浮动而不是为 .buttonbar 和 .list 应用绝对位置?
  • 没有什么特别的原因(除了这是我做的第一个网站,当时我很害怕浮动)。幸运的是,据我所知,这些部件工作正常。

标签: html css mobile responsive-design media-queries


【解决方案1】:

在 .list 的 CSS 样式中

.list {
    position: absolute;
    left: 108px;
    right: 20px;
    min-height: 490px;
    min-width:750px;
    display: block;
    vertical-align: top;
    white-space: normal;
}

删除min-width:750px,你就可以开始了:)

【讨论】:

  • 成功了,谢谢!我还发现了一堆其他的最小宽度,它们弄乱了布局并将它们设置为 0 或 100% 而不是自动解决了我的问题。
  • 很高兴它有帮助。从上面的代码中,您告诉最小宽度是 750 像素。因此,如果您的设备屏幕宽度为 320px,列表容器将不会是 320px 宽度,而是会保持 750px 宽度
【解决方案2】:

只需将display:inline 添加到.list 的媒体查询!

我在响应式布局中对其进行了测试:

您可以看到纵向布局有display: inline 而横向没有,只是为了向您展示区别!

【讨论】:

  • 我将 Qiqi 的答案标记为正确,但这也有效,因为display: inline 删除了盒子中的所有尺寸,包括给我带来麻烦的最小宽度。谢谢!
猜你喜欢
  • 2015-03-04
  • 2011-10-24
  • 2018-02-14
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 2018-09-22
  • 2023-03-12
  • 2012-01-20
相关资源
最近更新 更多