最大宽度与最小宽度

Jam*_*ery 54 css media-queries zurb-foundation

我正在阅读的大多数使用媒体查询的教程都在演示如何使用min-width,但我很少看到人们使用max-width.

这是某种设计趋势或模式,为什么人们会使用min-widthmax-width

例如,我正在设计一个从移动设备开始,一直到桌面的网站.我正在使用Foundation 4,但使用媒体查询删除页面上的各种元素并重新定位源顺序.

我面临的一件事是任何宽度为360px或更小的设备的自定义导航.我希望它们具有垂直导航,而不是内联水平.所以我的想法是max-width用来定位这些设备.

如果我先min-width设计手机,我应该使用吗?即所有默认样式都是针对移动设备,因此使用min-width逐步增强布局?

Jam*_*lly 77

这实际上取决于样式表的工作方式.例如:

@media screen and (min-width:100px) {
    body { font-weight:bold; }
}

@media screen and (min-width:200px) {
    body { color:#555; }
}
Run Code Online (Sandbox Code Playgroud)

上述两个媒体查询会使body字体加粗如果屏幕是大于或等于为100px,但使颜色#555,如果是大于或等于200像素;

另一个例子:

@media screen and (max-width:100px) {
    body { font-weight:bold; }
}

@media screen and (max-width:200px) {
    body { color:#555; }
}
Run Code Online (Sandbox Code Playgroud)

与第一个示例不同,仅当屏幕宽度介于0和100px之间时,才会使body字体变为粗体和颜色#555.如果介于0px和200px之间,则为彩色#555.

媒体查询的优点在于您可以将这些语句组合在一起:

@media screen and (min-width:100px) and (max-width:200px) {
    body { font-weight:bold; color:#555; }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,您仅定位宽度介于100px和200px之间的设备 - 仅此而已.

简而言之,如果您希望样式从媒体查询中泄漏出来,您可以使用min-width 或者 max-width,但是如果您想要影响非常具体的标准,您可以将两者结合起来.


jpo*_*ign 74

2部分答案

第1部分:回答"为什么人们使用最小宽度超过最大宽度?":

它与设计流程有关.通常,使用最小宽度模式,您将设计移动优先.使用最大宽度模式,您将设计为桌面优先.

使用min-width进行移动优先,默认样式是移动样式.之后的查询然后逐渐增大屏幕.

body {
    /* default styles here, 
       targets mobile first */
}

@media screen and (min-width:480px) {
    /* style changes when the screen gets larger */
}

@media screen and (min-width:800px) {
        /* And even larger */
    }
Run Code Online (Sandbox Code Playgroud)

相反,使用max-width是桌面优先,然后添加查询以使样式适合移动设备

body {
        /* default styles here, 
           targets desktops first */
    }

@media screen and (max-width:800px) {
    /* style changes when the screen gets smaller */
}

@media screen and (max-width:480px) {
        /* And even smaller */
    }
Run Code Online (Sandbox Code Playgroud)

第2部分:对于宽度为360px或更小的任何设备的特定自定义导航:

您可以将其包含为单独的最大宽度查询,IF是规则的唯一例外.或者使用该样式作为基线,然后将其更改为更宽的屏幕.

如果你做了一个例外(它不是真正遵循移动优先设计方法),它会是这样的:

body {
        /* default styles here, 
           targets mobile first
           ALSO will cover 361 - 479 width */
    }

@media screen and (max-width:360px) {
    /* style ONLY for screens with 360px or less width */
}

@media screen and (min-width:480px) {
    /* style changes when the screen gets larger */
}
etc...
Run Code Online (Sandbox Code Playgroud)


Her*_*s2u 9

简而言之,min-width是移动第一种方法,max-width是桌面第一种方法.

最小宽度是样式开始应用的最小宽度.(必须从最小到最大订购才能正常工作,首先是常规款式).换句话说:如果设备宽度大于或等于......,则应用一些特定样式.使用min-width,样式START,只要满足min-width,就会永久地继续,并且不指定max-width.

最大宽度是继续应用样式的最大宽度.之后,样式将停止应用.(必须从大到大排序才能正常工作,首先是常规款式).换句话说:如果设备宽度小于或等于......,则应用特定样式.一旦宽度大于最大宽度,样式就会停止.

最后,这取决于您希望如何实施.有人可能声称没有一个正确的解决方案.在我看来,从头开始,min-width工作得很好,但是在改造现有网站时,max-width对我来说通常更有意义.


小智 6

什么是移动优先和桌面优先的方法?

移动第一方法的造型装置,其样式首先应用到移动设备。然后通过媒体查询将大屏幕的高级样式和其他覆盖添加到样式表中。

这种方法使用

最小宽度

媒体查询。

这是一个快速示例:

// This applies from 0px to 600px
body {
  background: red;
}

// This applies from 600px onwards
@media (min-width: 600px) {
  body {
    background: green;
  }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中, 将有一个低于 600px 的红色背景。它的背景在 600 像素及以上时变为绿色。

另一方面,桌面优先的样式方法意味着样式首先应用于桌面设备。然后通过媒体查询将小屏幕的高级样式和覆盖添加到样式表中。这种方法使用 >max-width 媒体查询。

这是一个快速示例:

// This applies from 600px onwards
body {
  background: green;
}

// This applies from 0px to 600px
@media (max-width: 600px) {
  body {
    background: red;
  }
}
Run Code Online (Sandbox Code Playgroud)

所有宽度的背景颜色均为绿色。如果屏幕低于 600 像素,则背景颜色变为红色。


小智 5

因为您正在开发的网站从移动设计开始,并且分辨率越来越高,所以我建议您这样做,min-width因为这遵循相同的工作模式。

从技术上讲,min-width“移动优先”是指您通常开始为移动开发,并且随着分辨率的提高而增加了更多的复杂性。

但是,该术语比它的替代含义更受欢迎,这通常意味着更多地关注于对移动工作和优先级的关注(主要是由不了解技术推断的客户或管理人员推动)。这可能就是为什么您最终在min-width网上看到很多示例(时髦的博客写有关时尚话题的博客作者)的原因。

当我使用复杂的桌面设计时,我个人发现编写这样的max-width查询以“简化方程式” 更为容易。但是,使用max-width查询不会阻止您专注于移动设备,并且仍然可以完全成为“移动设备优先”策略的一部分。

无论哪种情况,最重要的是一致性。使用一个并坚持该项目。如果一个项目同时使用,可能会造成混乱。

最后一点,理想的是使用尽可能少的查询。这可以通过良好的响应式设计来实现。