NextJs s-s-r 无法识别移动设备的 CSS 媒体查询

Posted

技术标签:

【中文标题】NextJs s-s-r 无法识别移动设备的 CSS 媒体查询【英文标题】:NextJs s-s-r not recognizing CSS Media queries for mobile 【发布时间】:2019-07-09 03:23:59 【问题描述】:

我刚刚将 Nextjs s-s-r 集成到我的 React 项目中。在此之前,我的用于移动响应的 CSS 媒体查询运行良好。现在,当我使用 Chrome 的工具在移动屏幕大小甚至我自己的设备上查看我的应用程序时,我得到的视图就好像它在桌面上一样。

似乎服务器正在渲染整个页面并假设桌面大小,而不是在到达客户端时重新渲染。如果是这种情况,我如何告诉它用户是移动用户并使用这些 CSS 查询?

以下是我的媒体查询,它们似乎不起作用。我没有在 JS 中使用 CSS,也许我应该使用?我为每个组件使用常规的 css 文件。

.Footer 
    width: var(--webMaxContentWidth);
    height: 200px;
    background: #368efb;
    display: flex;
    flex-direction: column;
    justify-content: center;

@media (max-width: 768px) 
    .Footer 
        width: 100%;
        height: 400px;
        margin: 0 20px;
    

任何帮助表示赞赏!

【问题讨论】:

你有这个项目的链接吗?我想在打开开发工具的情况下看到这个。 @AndyHoffman 嘿!谢谢回复。我目前没有指向它的链接。 当您以正确的屏幕宽度查看.Footer 以使媒体查询正常工作时,它是否会显示在开发工具检查器中?样式是否以某种方式被覆盖? @AndyHoffman .Footer 确实显示在开发工具检查器中,但它以错误的样式显示(不是媒体查询样式)。我将在我的帖子中添加默认样式。 很抱歉,这是一个显而易见的问题,但您的<head></head> 中有<meta name="viewport" content="width=device-width, initial-scale=1.0"> 吗? 【参考方案1】:

之前,React 会自动在您的 SPA 的 <head> 中插入以下内容:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

一旦您转移到s-s-r,责任转移到开发人员自己添加这个位。没有它,当涉及到@media 查询断点时,您会遇到一些非常意外的行为。正如您在解决问题后发现的那样,这已经解决了already。

【讨论】:

这给我带来了一段时间的问题,尝试了一些其他搜索词,但找不到有用的答案。很高兴我终于找到了这个。

以上是关于NextJs s-s-r 无法识别移动设备的 CSS 媒体查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NextJs 中为 Material UI 的媒体查询实现 s-s-r?

Apollo 中 NextJs s-s-r 和 cookie 的问题

如何在 NextJS s-s-r 中存储和获取 access_token

NextJS 上的 s-s-r 是如何工作的?

在 NextJs s-s-r 中操作 DOM onClick

React/nextJS:如何调试 s-s-r react 应用的不同节点?