媒体查询命名

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

如果我们将来可以在 CSS 中做到这一点,那将非常酷。我遇到的最佳想法是在 <head> 中的 <meta> 标签中定义它。这样(也许)CSS 可以使用它,JS 也可以使用它。例如 window.matchMedia(nameOfMyMediaQuery)@media (nameOfMyMediaQuery) { }。但由于我们无法做到,Sass 为我们提供了支持。现在问题是,我们如何命名它们?

在 Sass 中,@mixin 看起来像这样

@mixin breakpoint($point) {
  @if $point == papa-bear {
    @media (max-width: 1600px) { @content; }
  }
  @else if $point == mama-bear {
    @media (max-width: 1250px) { @content; }
  }
  @else if $point == baby-bear {
    @media (max-width: 650px)  { @content; }
  }
}

并且您可以像这样使用它

.module {
  width: 25%;
  @include breakpoint(baby-bear) {
    width: 100%;
  }
}

尽管在现实中我更喜欢类似“bp”的东西,因为它更短,并且您需要一直输入它。这就是为什么“+”比“@include”更理想。但我扯远了。或者你可以参考 Brandon Mathis 的风格

$name1:  320px;
$name2:  500px;
$name3:  600px;
$name4:  992px;

@mixin at-least($device-width) {
  @media screen and (min-width: $device-width) {
    @content 
  }
}

@mixin until($device-width) {
  @media screen and (max-width: $device-width - 1) {
    @content 
  }
}

名称应避免使用实际数字。这里的重点是为抽象含义分配一个名称,因此数字可以更改,但名称保持不变。我也会避免使用“iPad”或其他设备名称,因为这只会造成错误的期望,并且很快就会过时。

更好的命名方案是暗示名称之间关系的方案。其中一个显然大于或小于另一个。当然,这是假设宽度查询,这些查询当然是最常见的。但当然,您的媒体查询可能不同或更复杂,并且命名方案应体现这一点。

以下是一些想法

baby-bear
mama-bear
papa-bear

straw-house
stick-house
brick-house

private
corporal
sergeant
captain
major
lieutenant
colonel
general

alpha
beta
gamma
delta
epsilon

very-small
small
medium
large
very-large




—-
——

>-< [---] <----->

seed
seedling
sprout
plant

pebble
stone
rock
boulder

pawn
knight
queen
king

bishop
archbishop
cardinal
pope

eddard
catelyn
robb
sansa
arya
bran
rickon

knife
dagger
scimitar
claidmore

A
B
C
D
E

来自 Vince Speelman

lil-bowow
eminem
jay-z
krs-one
rick-ross

来自 James Nowland

matryoshka-doll
the-one-inside-matryoshka-doll
the-one-inside-the-one-inside-matryoshka-doll
the-one-inside-the-one-inside-the-one-inside-matryoshka-doll

来自 Philip Brown

michael
jermaine
jackie
marlon
tito

来自 Rob Stinogle

gandalf-the-gray
gandalf-the-white

来自 Darby Brown

stewie
brian
chris
lois
peter
(我省略了 Meg)

还有其他想法吗?