通过 CSS 媒体查询,您可以使用最大设备宽度来定位设备宽度(例如 iPhone 或 Android 设备
)和/或定位页面宽度的最大宽度
。
如果您使用max-device-wide
,当您更改桌面上浏览器窗口的大小时,CSS不会更改,因为您的桌面不会更改大小。
如果您使用max-width
,当您更改桌面上浏览器窗口的大小时,可能会显示面向移动的样式,例如触摸友好的元素和菜单等。
针对特定的浏览器(和设备?)现在已被弃用,您应该对您的目标更加不可知。这也适用于媒体查询吗?
你为什么要瞄准一个而不是另一个?哪一个是推荐的?
这是我在制作网站上使用的媒体查询示例:
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (min-device-height: 480px) and (max-device-height: 640px) {
/* Change a menu to fit the screen better, etc... */
}
我倾向于同时使用< code >最大设备宽度和< code >最大宽度。
如果您使用最大宽度,当您更改桌面上浏览器窗口的大小时,可能会显示面向移动的样式,例如触摸友好的元素和菜单等。
令人震惊的是,这似乎是一种普遍的观点,认为这是可取的。我还没有弄清楚手机之前的流体/液体设计是否因为错误或正确的原因而被认为是糟糕的。在我看来,这只是液体布局的一个更高级的版本,但设计师出于某种原因正在接受它。
2000年代中期,当整个设计界选择固定布局而非液体布局时,这是因为文本回流阻碍了易读性,通常会导致寡妇和其他打字错误。此外,从一个设计到另一个设计,维护代码库通常是很棘手的,以防止元素冲突等。液态布局和响应式设计之间的唯一区别是响应式设计,由于更好的浏览器和类似于砖石结构的框架的激增,它更容易完成。
我个人使用min/max-device-wide是因为我更喜欢遵循已有数十年先例的桌面文档约定。并非您在Internet上打开的所有文档都会在桌面上以这种方式运行,您加载在桌面上的其他类型的文档或应用程序也不会如此。在移动设备占主导地位之前设计的页面,就像MS Word、Photoshop等一样。保持滚动位置,不改变布局,允许用户在执行窗口管理的无关任务时跟踪页面流中的内容。
我通常使用3个断点:一个用于手机,一个用于平板电脑,一个用于桌面。桌面和通常至少横向纵向是固定的,平板电脑纵向和下方是流动的。这种自适应和响应的组合允许桌面像桌面站点一样运行,同时让我不需要布局10多个单独的固定宽度移动设备布局。文本不会在移动设备上重排,因为视口无法调整大小。
避免设备宽度。原因是你无法知道用户的浏览器如何回应它。
对于IOS来说,这似乎很简单,至少在Safari中如此。这似乎是一个独立于方向的单个器件宽度响应。此外,设备宽度仅针对设备的较短侧。我确实在iPhone 4S和iPad上测试了这个。无论什么方向,他们都分别对320和768做出了反应。
对于Android来说,这更不可预测。我在一台华为Ascend Y330上测试了六款浏览器(Android默认浏览器,Chrome,Opera,Firefox,Firefox Beta,Dolphin)。响应因浏览器类型和方向而异。
我在一个带有query(max-device-wide:***px)的页面上进行了测试,并找出我需要填写什么px值才能使查询处于真实状态。根据浏览器类型和方向,需要四个不同的值(320、480、534、800)。这使得设备宽度无法使用。
如果您正在制作一个响应式网站,请在媒体查询中使用最小宽度
/最大宽度
,而不是设备最小宽度
/设备最大宽度
,以便针对更大范围的屏幕尺寸。
根据2018 Media Queries Level 4规范草案,设备宽度
媒体功能已弃用。将保留它以实现向后兼容性,但应避免使用。
8.附录A:不推荐的媒体功能
要查询视窗(或页面媒体上的页面框)的大小,应使用< code>width 、< code>height和< code>aspect-ratio媒体功能,而不是< code>device-width 、< code>device-height和< code>device-aspect-ratio,它们指的是设备的物理大小,而不考虑有多少空间可用于布局的文档。< code>device-*媒体功能有时也用作检测移动设备的代理。相反,作者应该使用能更好地代表他们试图设计的设备外观的媒体特征。
作为旁注,请记住在中指定视口元标记
<meta name="viewport" content="width=device-width, initial-scale=1">
由于给定设备可能具有所有不同的屏幕分辨率和像素密度,像素不是像素,因为有几个因素需要考虑(缩放、像素密度、屏幕分辨率和大小、设备方向、纵横比等)。在这种情况下,像素实际上被称为“光学参考单元”,而不是物理硬件像素。
幸运的是,您可以在
<meta name="viewport" content="width=device-width, initial-scale=1">
,因为< code>max-width将针对视窗(当前浏览器窗口),而< code>max-device-width将针对设备的实际全屏尺寸/分辨率。就媒体查询而言,您可能希望使用< code>max-width
而不是< code>max-device-width
换句话说,如果您使用的是max-device-wide
,您将不会看到在调整桌面浏览器大小时应用的不同媒体查询,因为与max-wide
不同,只考虑设备的实际全屏尺寸;而不是浏览器窗口的当前大小。
如果您尝试创建自适应布局,这将产生巨大的差异,因为调整浏览器大小时网站不会响应。此外,如果您使用的是最大设备宽度
,则用于定位屏幕较小设备的媒体查询将不适用于桌面,即使调整浏览器窗口大小以匹配所述较小的屏幕尺寸也是如此。
截至2018年,最新的媒体查询规范草案实际上已经否决了< code >设备宽度媒体功能,因此应该避免使用。
此外,这篇关于 Google 开发者的文章强烈建议不要使用最大设备宽度
:
Google Developers-Web基础知识-响应式CSS媒体查询
也可以基于< code>*-device-width创建查询;尽管强烈反对这种做法。
差异很微妙,但非常重要:最小宽度基于浏览器窗口的大小,而
最小设备宽度
基于屏幕的大小。遗憾的是,某些浏览器(包括旧版 Android 浏览器)可能无法正确报告设备宽度,而是以设备像素而不是预期的视口宽度报告屏幕大小。
此外,使用< code>*-device-width可以防止内容在允许调整窗口大小的桌面或其他设备上进行调整,因为查询是基于实际的设备大小,而不是浏览器窗口的大小。
问题内容: 使用CSS媒体查询,您可以用于定位设备宽度(例如iPhone或Android设备)和/或定位页面宽度的。 如果使用,则在更改桌面上浏览器窗口的大小时,CSS不会更改,因为您的桌面不会更改大小。 如果使用,则在更改桌面上浏览器窗口的大小时,可能会显示面向移动的样式,例如触摸友好的元素和菜单等。 现在已不再针对特定的浏览器(和设备?)定位,并且您应该对目标对象有所了解。那也适用于媒体查询吗
问题内容: 我有这个设置: HTML : CSS : 通过此设置,它可以在iPhone上运行,但不能在浏览器中运行。 是因为我已经在meta中,也许已经在? 问题答案: 我发现最好的方法是为较旧的浏览器编写默认CSS,因为较旧的浏览器包括5.5、6、7和8。无法读取@media。当我使用@media时,我会这样使用: 但是,您可以使用@media进行任何操作,这只是为所有浏览器构建样式时最适合我的
问题内容: 我需要为iPhone / Android手机开发一些html页面,但是和之间有什么区别?我需要为不同的屏幕尺寸使用不同的CSS。 有什么不同? 问题答案: 是目标显示区域的宽度,例如浏览器 是设备整个渲染区域的宽度,即实际设备屏幕 这同样适用于和自然。
我已经尝试了几个小时来解决这个问题,我正在努力,不管我做什么,它拒绝在我添加max-width或min-width的瞬间调用媒体标记中的CSS。为了测试,我让media标记使主体变红,并将min-width降低到可笑的低。什么都没发生。如果我留下屏幕标记而不留下任何其他东西,它就会调用它 CSS: HTML: 请原谅代码的绝对混乱,但我还没来得及清理这个问题,就在我对这个问题失去理智之前。
问题内容: 编写CSS媒体查询时,有什么方法可以使用“或”逻辑指定多个条件? 我正在尝试做这样的事情: 问题答案: 使用逗号指定两个(或多个)不同的规则: 从https://developer.mozilla.org/en/CSS/Media_queries/ …此外,您可以在逗号分隔的列表中组合多个媒体查询;如果列表中的任何媒体查询为true,则将应用关联的样式表。这等效于逻辑“或”运算。
我的一个程序中的java类遇到了一个奇怪的问题。谢天谢地,我能够使用示例取自Oracle网站: https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/FrameDemoProject/src/c
我用的是木星笔记本。我有一个相当宽的屏幕,但是显示的输出(例如,当我打印一个数组时)被格式化,就像屏幕很窄一样。 我找到了一种增加细胞宽度的方法 但这似乎只影响输入,而不影响输出(参见屏幕截图): 我已尝试在
问题内容: 我对媒体查询世界还很陌生,很明显,宽度和设备宽度之间的差异让我遗漏了一些基本知识,除了它们明显的定位能力之外。 我想同时针对具有相同断点的常规计算机和设备,因此我只将所有最小和最大宽度查询都复制到了最小设备和最大设备宽度查询中。无论出于何种原因,当我添加- device对应项时,常规计算机对CSS的解释都大不相同,因此我不确定自己做错了什么。 您可以在这里看到效果(这是应该的样子) 此