你的方式听起来比实际上要复杂。首先,桌面和移动设备可以完全相同。这只取决于媒体查询。在桌面上,你的浏览器宽度可以与移动设备相同。因此,在项目中需要明确在哪个点上要向用户显示“移动”样式,以及何时显示“桌面”样式。在我参与或见过的大多数项目中,默认的媒体查询通常是这样的:
@media (min-width: 320px) {}
@media (min-width: 768px) {}
@media (min-width: 1024px) {}
@media (min-width: 1220px) {}
@media (min-width: 1440px) {}
所以你可以在每个媒体查询中附加一些新的样式来适应所选的查询大小。为了更容易编写样式,并且不会在每个新的宽度上覆盖所有这些内容,你可以像这样做:
@media (min-width: 320px) {} // for general stylings (both, mobile && desktop)
@media (max-width: 767px) {} // for only styles between 320px and 768px (most mobile devies)
@media (min-width: 768px) {} // general desktop && tablet styles if needed
@media (min-width: 768px) and (max-width: 1024px) {} // only tablet styles
@media (min-width: 1025px) // start with desktop styling
所有这些媒体查询之间的样式只与尺寸相关联。
所以只需选择您需要的宽度,例如:
All mobile styles attached only between 320px and 1024px
@media (min-width: 320px) and (max-width: 1024px) {
.nav{ background: red; }
}
All desktop styles attached only after 1025px
@media (min-width: 1025px) {
.nav{ background: green; }
}
所有这些媒体查询只是显示不同的宽度,你也可以通过高度来做,但由于设备/显示器尺寸的原因,这会更加困难。
如果你真的想要检查用户代理并在浏览器、代理、设备或类似情况之间进行区分,你将需要使用JavaScript,这比仅仅为不同的宽度显示样式要复杂得多。
如果你对媒体查询以及如何正确编写它们有任何问题,MDN是一个很好的资源:
MDN - 媒体查询。