【问题标题】:CSS @media is not working properly on mobile phoneCSS @media 在手机上无法正常工作
【发布时间】:2021-12-29 15:30:23
【问题描述】:

啊,我这里有个小问题,是关于@media的

这是我的 HTML 代码:

<main>
<section class="a">
  <p>AAA</p>
</section>
</main>

这是我的 CSS 代码:

* {
margin: 0px;
padding: 0px;
}
.a {
background-color: lavender;
color: indianred;
width: 100vw;
height: 100vh;
}

@media only screen and (min-width: 1300px) {
.a {
color: darksteelblue;
height: 50vh;
}
}

My phone resolution (screenshot)

上面的一些代码和关于我手机规格的屏幕截图,所以如果我旋转手机或打开桌面模式,那么

的高度应该改为 50vh 而不是 100vh,因为我的手机显示分辨率超过 1300px。但是问题就在那里,当我旋转手机甚至尝试打开桌面模式时,它都不起作用。 然后,过了一会儿,我尝试将最小宽度更改为 600,它的工作。所以我打开控制台,它说“宽度是 400 像素,高度是 720 像素”,我喜欢“这到底是什么???”

Console (screenshot)

所以,这部分我有一个大问题,因为我的显示分辨率与我的 ide 和我的浏览器分辨率不一样,无论如何我可以让我的浏览器和我的 ide 只使用我手机的相同分辨率显示而不是分成两个不同的分辨率。我还检查了另一部手机,它是 Samsung Galaxy Note 10,我知道,它不是基于任何比率来计算显示分辨率和浏览器分辨率之间的差异,我认为它是基于每个显示器的像素密度。请帮帮我。

/*Before someone start to wondering 
why I don't use a computer, Imma 
say... Hmm..... yeah, I know, I 
know that I should to use a pc 
instead of a mobile phone, but I b 
don't have a pc (just for now)*/

【问题讨论】:

  • 对于旋转,您应该使用方向:纵向 ||景观。这在@media 中有很好的记录。你可以在这里读到它。规则堆积如山。 developer.mozilla.org/en-US/docs/Web/CSS/@media/orientation
  • 移动设备浏览器的宽度与实际屏幕分辨率不同。大多数移动设备的屏幕宽度约为 480 像素。

标签: css media-queries responsive scaling


【解决方案1】:

媒体查询始终有效

问题是你认为你对 My-Mobile 的假设总是超过 1300 像素被过分强调了。

是的,还有其他 MQ 选择器或条件,例如 (orientation: portrait || landscape),但即使您不使用它,结果 min-widh:xxmax-width:xx) 也会为您获取正确的结果。

尝试添加 JS,以便在页面加载时,您还可以看到像素尺寸

$(document).ready(function(){
  alert($(window).width());
});
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"&gt;&lt;/script&gt;

使用以下函数,并添加到您的代码中,以在应用 Media-Query 时以像素为单位查看屏幕的正确分辨率是多少。您会看到 MQ 实现没有问题!

另外,据我所知,768px 对应于平板电脑,所以天知道你的手机是怎样的——假设像素宽度为 1300px,这太荒谬了!

【讨论】:

  • IDK,这是系统告诉我的,其实我不知道浏览器会得到多少。在我的情况下,系统告诉(w720 h1600)但浏览器只能得到大约(w400 h700)。我看到人们用他们屏幕的实际宽度来计算,比如“如果他们有一个 1920 的屏幕,他们会将值设置为 @media,比如 0 到 600 用于手机,600 到 1000 用于平板电脑和1000 及以上适用于桌面或旋转移动设备”,他们只需要调整浏览器窗口的大小,就可以正常工作。然后,我觉得这些乱七八糟的东西只能在桌面上正常工作
  • 你能给我一个链接,让我阅读你所说的内容:“另外,据我所知,768px 对应于平板电脑,所以上帝知道你的手机是怎样的-假设像素宽度为 1300 像素,这太荒谬了!”我真的很想知道哪个长度对应哪个屏幕分辨率。有很多问题在我脑海中浮现,比如“那么,4k 显示器怎么样?”,“为什么高度为 1300 像素的元素在我的屏幕上实际上显示为 1300 像素,但@media 没有检测到高度为 1300 像素但总是比那个短?”
【解决方案2】:

使用元视口值 width=device-width 指示页面以与设备无关的像素匹配屏幕宽度。这允许页面重排内容以匹配不同的屏幕尺寸,无论是在小型手机还是大型桌面显示器上呈现。

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

移动 CSS:

@media only screen and (min-width: 480px){
  .a {
      color: darksteelblue;
      height: 50vh;
     }
}

https://stackoverflow.com/questions/6370690/media-queries-how-to-target-desktop-tablet-and-mobile

【讨论】:

  • @Yunnie Sōjo:使用上面的代码。它会工作
猜你喜欢
  • 1970-01-01
  • 2016-01-02
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多