【问题标题】:How can I scale media queries?如何扩展媒体查询?
【发布时间】:2015-05-15 13:35:49
【问题描述】:

喂...

我正在做一个 Ember 应用程序,我需要能够缩放布局,因为它有时需要显示在大面板上,而我无法获得像素比。 (哦,一直到 iPhone 屏幕......)

所以,这是我的问题: 我已经让整个事情变得完全可扩展和漂亮,但我确实还需要在这里和那里使用一堆媒体查询。

现在,虽然我可以使用我的 JS Skillz 上下缩放应用程序(字体等),但总体布局保持不变,因为媒体查询没有改变。这显然让一切看起来有些扭曲。

我需要的基本上是能够将缩放因子应用于我的媒体查询中的限制。

我意识到一种解决方法是更改​​屏幕宽度的元标记,但这是行不通的,因为我们需要设备像素 = 实际像素才能获得最干净的渲染(许多 Android 的像素比看起来很模糊,例如 1.75) .

我已经研究过在媒体查询中使用 calc(..)(不起作用)。当我使用 Ember 时,我可以访问所有模板和内容。我正在考虑在 JS 中计算所有内容并将其推入 STYLE 标记中的 DOM 中,但是有大约 100 个媒体查询,我想它会变得很痛苦......并且让我在周末远离啤酒...... . 所以这是我起草的...没有双关语...

编辑:

似乎我没有足够强调一个关键问题:MQ 需要在客户端是可变的。如前所述,应用程序需要在任意尺寸的壁挂式电视屏幕上运行,因此虽然它们可能都具有 HD 或 HD-ready 分辨率,但 PPI 变化很大,这是获得适当设计规模的唯一方法,是启动这​​个东西并对其进行缩放以适应应用程序配置。仅仅使用普通的 MQ 是不行的。

【问题讨论】:

  • 您的测量单位是像素还是更合理的单位,例如 em、rem 和 %?
  • 这听起来像是一个通用的响应式设计问题。我不会对这样的 JavaScript 做任何疯狂的事情,因为 Sass/CSS 可能提供了您需要的所有工具。一个可能有用的小改进是响应式元素,它确实是一个使用 JavaScript 的框架,但总有一天可能会成为标准,而且你不必自己使用 JavaScript - 请参阅kumailht.com/responsive-elements
  • @gabe3886 这应该是这个问题的答案。 emch 中的媒体查询效果很好,非常适合这种情况。
  • 同意@mahemoff 和李斯特先生。确定您的布局在哪些维度分解并针对这些边界编写媒体查询。
  • 谢谢大家,但它仍然没有削减它。我确实使用了不运行客户端的,所以它仍然让我陷入困境,因为我需要扩展运行时(见编辑)。显然,我确实使所有内容都可扩展,根本没有在 CSS 中使用 px,除了 MQ(恕我直言,它们非常僵化且设计不佳,但这是另一回事)。由于面板非常愚蠢,我不能使用任何像像素比这样的花哨的 MQ 东西。唯一的方法是手动调整 - 这需要客户端解决方案。我可以使用 LESS,但由于我们已经在使用 SASS,这会使代码库变得相当复杂,这是不行的。

标签: javascript html css ember.js


【解决方案1】:

根据我的评论的积极反馈,我创建了这个答案,以帮助人们查看这个问题。

在创建需要从小型设备扩展到大屏幕的应用程序或网站时,最好使用易于扩展的测量单位。这意味着避免在 CSS 中使用 px

为了获得最佳的跨设备兼容性和可扩展性,应使用以下单位:

%。要测量的屏幕百分比。例如100% 是屏幕的 100%,50% 是屏幕的一半,以此类推。相当直截了当。

雷姆。相对于根元素 em 大小的大小。这意味着无论文档的基本字体大小是什么,所有内容都会与之相关。如果基本字体大小是 16 像素,而您将某些东西设置为 1.5rem,那么它将是 24 像素; 1.5 x 16 像素。这是添加辅助功能并允许用户自己增加字体大小的理想选择。

em(事情可能会变得复杂)。这是相对于直接父容器字体大小的大小。它类似于rem(见上文),但会随着您进入的结构越往下越多。

假设以下css:

html {
    font-size : 16px;
}

div {
    font-size : 1.5em;
}

当我们将它与嵌套 div 结合起来时,事情会变得令人沮丧:

<div>
    <!-- font-size is 24px !-->
    <div>
        <!-- font-size is 36px !-->
        <div>
            <!-- font-size is 54px !-->
        </div>
    </div>
</div>

请谨慎使用em,因为您会发现事情的扩展速度非常快,而您却没有预料到。

【讨论】:

  • @MrLister 谢谢。现在习惯比什么都重要。我已经更正了。
  • 非常感谢您的回复! :o) 我在我的 CSS 中只使用一次像素:html 标签字体大小。其他一切都是 em、rem 或 %。我可以轻松地放大和缩小。但是当我扩大规模时,我实际上是把屏幕变小了——实际上并没有把它变小。因此,MQ 不会动弹,因为它们在屏幕像素大小上触发,当我缩放时它不会改变。将像素比率混合到 MQ 中不会减少它,因为必须将其设置为 1 才能在某些设备上获得最佳渲染效果。我天真地在 MQ 中尝试了 rem,这显然不起作用,因为它们被固定为默认大小。
猜你喜欢
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多