编辑说明:这是一种特别适用于旧浏览器的方法。已接受的答案已更新为更现代的 CSS,它确实具有使这变得容易的媒体查询。我主要建议将我的旧代码用于特定于旧浏览器的 CSS。
我建议使用以下媒体标签,而不是最初使用特定宽度,或者弄乱方向或任何其他废话……
@media only screen and (min-resolution: 117dpi) and (max-resolution: 119dpi), only screen and (min-resolution: 131dpi) and (max-resolution: 133dpi), only screen and (min-resolution: 145dpi) and (max-resolution: 154dpi), only screen and (min-resolution: 162dpi) and (max-resolution: 164dpi), only screen and (min-resolution: 169dpi) {
/* Your touch-specific css goes here */
}
@media only screen and (min-resolution: 165dpi) and (max-resolution: 168dpi), only screen and (min-resolution: 155dpi) and (max-resolution: 160dpi), only screen and (min-resolution: 134dpi) and (max-resolution: 144dpi), only screen and (min-resolution: 120dpi) and (max-resolution: 130dpi), only screen and (max-resolution: 116dpi) {
/* Your click-specific css goes here */
}
你用这些标签做什么?设置悬停和点击与触摸事件的内容。
除了上面提到的灰色区域中的少数设备外,触摸设备的分辨率与桌面设备非常不同。不要——不要——设置设计元素,而是设置导航元素。一些通俗的人可能会说,一些疯狂的 max-width 可能会更好,但是有这么多高清手机,设备 max-width 很快变得无用是荒谬的。
但是,您应该使用宽度媒体宽度查询。但是,不要为最大设备宽度而烦恼,只需最大宽度和最小宽度。让上面的标签解决您的触摸与非触摸用户,让 min-width 与 max-width 根据窗口大小解决并调整站点视觉效果。
此外,使用方向来确定它是否是移动的只是愚蠢的,因为即使是显示器也可以放置在各种方向上(我见过的 3 显示器的常见设置是纵向中心显示器和横向侧显示器。)
对于宽度视图,专注于使您的网站在各种宽度上保持整洁,忽略实际访问它的设备类型,只需确保您的屏幕以各种尺寸清晰显示即可。这是适用于台式机和移动设备的好设计。如果他们将您的网站放在屏幕左上角的一个小窗口中以供参考(或快速分散注意力),同时在其他地方使用他们的大部分屏幕空间,那么对于他们以及移动用户来说,您的较小的宽度是专为。尝试任何其他方法很快就会让 Web 开发走上一条非常痛苦和弄巧成拙的道路。因此,对于那些较小的宽度,您可以将宽度设置为任何您想要的,但我会包括一些我个人喜欢的。
所以总的来说,你应该有这样的东西......
@media only screen and (min-resolution: 117dpi) and (max-resolution: 119dpi), only screen and (min-resolution: 131dpi) and (max-resolution: 133dpi), only screen and (min-resolution: 145dpi) and (max-resolution: 154dpi), only screen and (min-resolution: 162dpi) and (max-resolution: 164dpi), only screen and (min-resolution: 169dpi) {
#touch_logo {
display: inherit;
}
#mouse_logo {
display: none;
}
/* Your touch-specific css goes here */
}
@media only screen and (min-resolution: 165dpi) and (max-resolution: 168dpi), only screen and (min-resolution: 155dpi) and (max-resolution: 160dpi), only screen and (min-resolution: 134dpi) and (max-resolution: 144dpi), only screen and (min-resolution: 120dpi) and (max-resolution: 130dpi), only screen and (max-resolution: 116dpi) {
#touch_logo {
display: none;
}
#mouse_logo {
display: inherit;
}
/* Your click-specific css goes here */
}
@media (min-width: 541px){
/* Big view stuff goes here. */
}
@media (max-width: 540px) and (min-width: 400px){
/* Smaller view stuff goes here. */
}
@media (max-width: 399px){
/* Stuff for really small views goes here. */
}
不过,不要忘记在页面头部包含以下内容:
<meta name='viewport' content="width=device-width, initial-scale=1" />
在某些情况下它可能仍然会中断,但这应该比许多其他解决方案更简洁和更完整。