【问题标题】:Twitter Bootstrap zooms text differently on Webkit (Chrome, Safari)Twitter Bootstrap 在 Webkit(Chrome、Safari)上以不同方式缩放文本
【发布时间】:2013-02-10 07:03:17
【问题描述】:

我正在考虑使用 Twitter Bootstrap(带有一些自定义)来重建网站。

一个问题是在 Chrome 和 Safari 等 Webkit 浏览器上的页面/文本缩放。缩放时,这些不会将文本重新包装到屏幕上。相反,文本继续离开需要水平滚动的页面。

例如,比较在 Chrome/Safari 和 Firefox 上缩放 Bootstrap 主页上的文本 - 在 Firefox 上,当由于缩放而没有足够的空间容纳菜单文本时,即使响应式菜单栏也能正常工作。

这似乎是基于像素布局的已知 Webkit“功能”,可以通过使用基于 em 的宽度来解决,这在标准 Bootstrap 中看起来不切实际(更改和维护太多)。

那么,是否有任何使用基于 em 的宽度的 Bootstrap 衍生产品,或者有没有办法添加一个 css 的 sn-p 等来解决这个问题?到目前为止,这是唯一阻止我在这个项目中使用 Bootstrap 的事情。我希望经常缩放的视力较低的用户可以访问该网站。

如果 Webkit 修复了错误/功能以使其表现得像其他浏览器引擎,那就太好了,但不幸的是,我认为这种情况不会很快发生。

[更新] 需要明确的是,这与我所追求的 Firefox 完全相似:缩放文本保持在列内,并且媒体查询意识到当文本缩放和调整菜单时屏幕上的空间是有限的相应的列数。流畅的布局有助于限制主要文章的文本,但在缩放时,Chrome/Safari 上的菜单和侧边栏仍然一团糟。

【问题讨论】:

  • 这个错误似乎终于在 Chrome 中得到修复,至少在 Linux 和 OS/X 上的 Chrome 27 中。现在,Chrome 上的 Bootstrap 的工作方式与 Firefox 相同,随着文本大小的增加在导航栏和导航图标之间跳转,然后在缩小时再次返回,并且始终将所有文本保留在页面上,而不是让列也消失宽的。 OS/X 上的 Safari 6.0.4 仍然损坏。
  • Safari 6.0.3 OSX 也坏了

标签: google-chrome twitter-bootstrap safari webkit zooming


【解决方案1】:

罗伯,

您可以通过在引导程序中使用流体容器然后将其最大宽度属性设置为百分比宽度来完成您想要的操作,例如:

[class*="container-"] {
margin: auto;
padding: 0 20px;
max-width: 90%;
}

html 看起来像:

<div class="content">
    <div class="container-fluid">
        <div class="row-fluid">
            <div class="span12">
                 put your contents in here
            </div>
        </div>
    </div>
</div>

class内容的div不在容器内,可以作为背景。这就是我设置引导站点的方式,并且刚刚在 safari 和 firefox 中尝试了您正在寻找的结果。正如您所提到的,渲染必须执行浏览器的渲染引擎(在 Firefox 的情况下是壁虎,在 safari 的情况下是 webkit)。希望这可以为您解决问题。

【讨论】:

  • 流畅的布局(有或没有额外的 [class*="container-"])确实限制在列内,只有少量缩放。但仍然在 Webkit 中,永远不会根据可见内容切换到更窄的布局。以twitter.github.com/bootstrap/examples/fluid.html 为例——当您缩放菜单时,Chrome 中的侧边栏变得越来越混乱。在 Firefox 中,几级缩放使菜单折叠,而更多缩放则获得单列模式。添加上面的 [class*="container-"] 似乎没有什么不同,你能指出一个工作示例吗?
【解决方案2】:

您可以将滑块设置为 可访问性 选项,以供您网站的低视力访问者使用。 只需使用 jquery 使用文本大小调整。无需缩放页面。 看这个例子:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('a').click(function() {
            var os = $('p').css('font-size');
            var num = parseFloat(os, 10);
            var px = os.slice(-2);

            $('p').css('font-size', num / 1.4 + px);
            if (this.id == 'larger') {
                $('p').css('font-size', num * 1.4 + px);
            }
        });
    });
</script>

<a href="#" id ="larger">Larger [+]</a>
<br>
<a href="#" id="smaller">Smaller [-]</a>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>

【讨论】:

  • 不,我说的是使用标准内置缩放功能的用户。浏览器内置了此功能,强制用户使用特定于站点的 javascript 版本是没有意义的。视力较低的用户通常会设置自动缩放,换句话说,总是以(例如)125% 的速度打开新站点。流体布局确实对此有所帮助,尽管如果它靠近移动/桌面媒体查询断点,则不会激活媒体查询(基于像素),因此最终结果是多列布局被压缩到单个列的空间中布局,并且通常是文本溢出列。
  • 奇怪的是,一个没有解决 Bootstrap 错误的答案得到两票。不能投反对票,不能删除不正确的“自动”赏金。
  • 我明白你在说什么。抱歉,如果此答案对您没有帮助。我也遇到过同样的问题。而且由于我无法解决这个 chrome 问题,我只是选择了另一种解决方案。我之前在旧版本的 chrome 上使用 bootstrap,如果我没记错的话,流畅的布局工作正常。最后,我想这确实是一个错误。
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2013-12-19
  • 2018-03-11
相关资源
最近更新 更多