修复了 Safari 中元素的宽度错误?

Posted

技术标签:

【中文标题】修复了 Safari 中元素的宽度错误?【英文标题】:Fixed element's width bug in safari? 【发布时间】:2015-04-03 21:43:14 【问题描述】:

我的网站已将视口的宽度固定为 1300 像素。我在 ios 的 safari 中发现了一些奇怪的固定元素行为。没有其他浏览器会这样做。

所以,我制作了一个测试页(代码在下面)。它有 3 个 div - 静态、绝对、固定。所有 100% 宽度。视口设置为 1300 像素。还有一个简单的 js 打印每个 div 的宽度。 所有桌面浏览器都忽略视口,所有 div 彼此相等,并且与窗口的宽度相等。没错。

android 的浏览器(标准版和移动版 firefox)将窗口的宽度设置为 1300 像素,并将所有 div 的宽度设置为 1300 像素,无论方向如何。没错。

问题出在我的 ipod 和我朋友的 iphone 上。顶部 div 为 1300px,但底部 div(固定位置)为 1280px。这只发生在纵向。在横向所有 div 都是正常的 (1300px)。 为什么横向模式下固定div的宽度是1280px?这真的是 Safari 中的错误吗?还是我错过了什么?

测试页面代码:

<!doctype html>
<html>
<head>
<meta content="width=1300" name="viewport" />
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type=text/javascript>
function updateInfo()

  $("div.test").each(function()
  
    var t = $(this);
    var w = t.width();
    t.find("span").html("width = "+w);
  );

$(function()setInterval(updateInfo,100););
</script>
</head>
<body>

<div class="test t1">100% width relative <span></span></div>
<div class="test t2">100% width absolute <span></span></div>
<div class="test t3">100% width fixed bottom <span></span></div>

<style>
*

  padding:0;
  margin:0;

bodymin-width:1300px;
divwidth:100%;

div.t1background:lime;
div.t2position:absolute;background:blue;
div.t3position:fixed;bottom:0;background:red;
</style>
</body>
</html>

【问题讨论】:

【参考方案1】:

问题在于最小规模。默认值为 0.25,我的设备宽度为 320 因此,视口宽度的最大值为 1280px。在 meta 中正确设置最小比例有助于

【讨论】:

以上是关于修复了 Safari 中元素的宽度错误?的主要内容,如果未能解决你的问题,请参考以下文章

修复 iOS 12 Safari Cors 预检错误

修复Mac上的“ Safari无法找到服务器”错误的解决方法

ios9 Safari错误计算总和

解决 Safari 表格 colspan/writing-mode 宽度错误

Safari 视频元素不会在 403 响应时触发错误事件

ios9 Safari 计算错误总和