编辑说明:本文介绍的是一种适用于旧版浏览器的方法。已更新的答案使用了更加现代化的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) {
}
@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) {
}
那么这些标签有什么用处呢?用于设置悬停和点击事件与触摸事件的不同。
除了一些灰色地带的设备,触摸设备与桌面设备的分辨率非常不同。不要使用它来设置设计元素,而是用于导航元素。有些人可能会认为某些最大宽度的疯狂做法更好,但是现在有太多高清晰度的手机了,设备最大宽度很快就变得无用了。
然而,您应该使用宽度媒体查询。但是,不要费心去设置max-device-width,只需设置max-width和min-width即可。让上述标签处理您的触摸用户与非触摸用户,让min-width与max-width根据窗口大小调整网站视觉效果。
此外,使用方向来确定它是否是移动设备是愚蠢的,因为甚至可以将监视器放置在各种方向(我见过的常见设置是纵向中心监视器和横向侧面监视器)。
对于宽度视图,请专注于使您的网站在各种宽度上保持清洁,忽略实际访问它的设备类型,只需确保您的屏幕在各种大小上显示清晰即可。这是适用于桌面和移动设备的良好设计。如果他们将您的网站放在屏幕左上角的小窗口中以供参考(或快速分心),而在其他地方使用大部分屏幕房地产,则应该为他们以及移动用户构建较小的宽度。尝试任何其他方法都会迅速走下一条非常痛苦和自我毁灭的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;
}
}
@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;
}
}
@media (min-width: 541px){
}
@media (max-width: 540px) and (min-width: 400px){
}
@media (max-width: 399px){
}
虽然如此,请不要忘记在页面头部包含以下内容:
<meta name='viewport' content="width=device-width, initial-scale=1" />
虽然在某些情况下仍可能出现问题,但这种解决方案应该比许多其他解决方案更简洁、更完整。