Nowa składnia zakresu zapytań o media CSS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Nowa składnia zakresu zapytań o media CSS

Polegamy na Zapytania o media CSS do wyboru i stylizacji elementów w oparciu o docelowy stan. Warunek ten może być różny, ale zwykle dzieli się na dwa obozy: (1) rodzaj używanego nośnika oraz (2) konkretną cechę przeglądarki, urządzenia, a nawet środowiska użytkownika.

Powiedzmy, że chcemy zastosować określony styl CSS do drukowanego dokumentu:

@media print {
  .element {
    /* Style away! */
  }
}

Fakt, że możemy stosować style na określonej szerokości okna roboczego, sprawił, że CSS Media Queries stał się podstawowym składnikiem responsywnego projektowania stron internetowych od czasów Ethana Marcotte'a ukuł termin. Jeśli szerokość widocznego obszaru przeglądarki ma określony rozmiar, zastosuj zestaw reguł stylów, który pozwoli nam zaprojektować elementy odpowiadające rozmiarowi przeglądarki.

/* When the viewport width is at least 30em... */
@media screen and (min-width: 30em) {
  .element {
    /* Style away! */
  }
}

Wskazówka and tam? To operator, który pozwala nam łączyć wyrażenia. W tym przykładzie połączyliśmy warunek, że typ mediów to a screen i to jest min-width funkcja jest ustawiona na 30em (lub wyżej). Możemy zrobić to samo, aby kierować reklamy na różne rozmiary widocznego obszaru:

/* When the viewport width is between 30em - 80em */
@media screen and (min-width: 30em) and (max-width: 80em) {
  .element {
    /* Style away! */
  }
}

Teraz te style mają zastosowanie do określonego zakresu szerokości widocznego obszaru, a nie do pojedynczej szerokości!

Jednak specyfikacja Media Queries Level 4 wprowadziła nową składnię do kierowania na zakres szerokości widocznego obszaru przy użyciu typowych matematycznych operatorów porównania — na przykład <, >, = — które mają więcej sensu syntaktycznie, pisząc mniej kodu.

Zastanówmy się, jak to działa.

Nowe operatory porównania

Ten ostatni przykład jest dobrą ilustracją tego, w jaki sposób „sfałszowaliśmy” zakresy, łącząc warunki za pomocą and operator. Duża zmiana w specyfikacji Media Queries Level 4 polega na tym, że mamy nowe operatory, które porównują wartości, a nie łączą je:

  • < ocenia, czy wartość to mniej niż inna wartość
  • > ocenia, czy wartość to większa niż inna wartość
  • = ocenia, czy wartość to równy do innej wartości
  • <= ocenia, czy wartość to mniejsze lub równe to inna wartość
  • >= ocenia, czy wartość to większe lub równe to inna wartość

Oto, jak moglibyśmy napisać zapytanie o media, które stosuje style, jeśli przeglądarka jest 600px szeroki lub większy:

@media (min-width: 600px) {
  .element {
    /* Style away! */
  }
}

Oto jak wygląda napisanie tego samego za pomocą operatora porównania:

@media (width >= 600px) {
  .element {
    /* Style away! */
  }
}

Kierowanie na różne szerokości widocznego obszaru

Często, kiedy piszemy CSS Media Queries, tworzymy coś, co nazywa się a breakpoint — stan, w którym projekt „przerywa” i stosuje się zestaw stylów, aby go naprawić. Projekt może mieć kilka punktów przerwania! I zwykle opierają się na tym, że widoczny obszar znajduje się między dwiema szerokościami: gdzie zaczyna się punkt przerwania i gdzie kończy się punkt przerwania.

Oto jak to zrobiliśmy za pomocą and operator, aby połączyć dwie wartości punktów przerwania:

/* When the browser is between 400px - 1000px */
@media (min-width: 400px) and (max-width: 1000px) {
  /* etc. */
}

Zaczynasz mieć dobre wyczucie, o ile krótsze i łatwiejsze jest napisanie zapytania medialnego, gdy porzucimy Boolean and operator na korzyść nowej składni porównywania zakresów:

@media (400px <= width <= 1000px) {
  /* etc. */
}

Dużo łatwiej, prawda? I jest dokładnie jasne, do czego służy ta kwerenda medialna.

Obsługiwane przeglądarki

Ta ulepszona składnia zapytań o media jest wciąż na początku w momencie pisania tego tekstu i nie jest tak szeroko obsługiwana w tej chwili, jak podejście, które łączy min-width i max-width. Ale jesteśmy już blisko! Safari jest jedynym głównym oporem w tym momencie, ale jest na to otwarty bilet które możesz śledzić.

Te dane obsługi przeglądarki pochodzą z Mogę uzyć, który ma więcej szczegółów. Liczba wskazuje, że przeglądarka obsługuje tę funkcję w tej wersji i nowszych.

Stacjonarny

Chrom Firefox IE krawędź Safari
104 63 Nie 104 Nie

Telefon komórkowy / tablet

Android Chrome Android Firefox Android iOS Safari
106 106 106 Nie

Spójrzmy na przykład

Oto układ, który dobrze pasuje do większych ekranów, takich jak komputer stacjonarny:

Nowa składnia zakresu zapytań o media CSS

Ten układ ma podstawowe style, które są wspólne dla wszystkich punktów przerwania. Ale gdy ekran staje się węższy, zaczynamy stosować style, które są warunkowo stosowane w różnych mniejszych punktach przerwania, które idealnie pasują do tabletów aż do telefonów komórkowych:

Zrzuty ekranu obok siebie układów mobilnych i tabletów z nałożonymi ścieżkami CSS Grid.
Nowa składnia zakresu zapytań o media CSS

Aby zobaczyć, co się dzieje, oto jak układ reaguje między dwoma mniejszymi punktami przerwania. Wyświetlana jest ukryta lista nawigacyjna, a także title main wzrasta w font-size.

Ta zmiana jest wywoływana, gdy zmiany w widocznym obszarze przechodzą z dopasowania warunków jednego nośnika do drugiego:

/* Base styles (any screen size) */
header {
  display: flex;
  justify-content: center;
}

header ul {
  display: none;
}

.title p {
  font-size: 3.75rem;
}

/* When the media type is a screen with a width greater or equal to 768px */
@media screen and (width >= 768px) {
  header {
    justify-content: space-between;
  }

  header ul {
    display: flex;
    justify-content: space-between;
    gap: 3rem;
  }

  .title p {
    font-size: 5.75rem;
  }
}

Połączyliśmy kilka koncepcji, które omówiliśmy! Kierujemy reklamy na urządzenia z screen typ mediów, oceniając, czy szerokość widocznego obszaru jest większa lub równa określonej wartości przy użyciu nowej składni zakresu funkcji mediów, i łącząc te dwa warunki z parametrem and operator.

Schemat składni zapytania o media z wyszczególnieniem typu mediów, operatora i funkcji mediów zakresu.
Nowa składnia zakresu zapytań o media CSS

OK, więc świetnie nadaje się na poniższe urządzenia mobilne 768px oraz dla innych urządzeń równych lub większych niż 768px. Ale co z układem pulpitu… jak się tam dostaniemy?

Jeśli chodzi o układ:

  • Połączenia main element staje się siatką 12 kolumn.
  • Na obrazie wyświetlany jest przycisk.
  • Rozmiar .title czcionka elementu zwiększa się i nakłada na obraz.

Zakładając, że odrobiliśmy pracę domową i określiliśmy dokładnie, gdzie te zmiany powinny nastąpić, możemy zastosować te style, gdy rzutnia pasuje do width warunek dla tego punktu przerwania. Powiemy, że punkt przerwania jest na 1000px:

/* When the media type is a screen with a width greater or equal to 1000px  */
@media screen and (width >= 1000px) {
  /* Becomes a 12-column grid */
  main {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: auto 250px;
  }

  /* Places the .title on the grid */
  .title {
    grid-row: 1;
  }

  /* Bumps up the font-size */
  .title p {
    font-size: 7.75rem;
  }

  /* Places .images on the grid */
  .images {
    grid-row: 1 / span 2;
    align-self: end;
    position: relative;
  }

  /* Displays the button */
  .images .button {
    display: block;
    position: absolute;
    inset-block-end: 5rem;
    inset-inline-end: -1rem;
  }
}
Wyświetlanie ścieżek siatki CSS dla układu pulpitu za pomocą zapytania o media CSS z nową składnią zakresu.
Nowa składnia zakresu zapytań o media CSS

Pobaw się z tym:

Dlaczego nowa składnia jest łatwiejsza do zrozumienia

Najważniejsze: łatwiej odróżnić operator porównania (np. width >= 320px) niż odróżnić min-width i max-width używając and operator. Usuwając niuans pomiędzy min- i max-, mamy jednego singla width parametr do pracy, a operatorzy mówią nam o reszcie.

Poza wizualnymi różnicami tych składni robią też nieco inne rzeczy. Za pomocą min- i max- jest równoznaczne z użyciem matematycznych operatorów porównania:

  • max-width jest równoważne z <= operator (np. (max-width: 320px) jest taki sam jak (width <= 320px)).
  • min-width jest równoważne z >= operator (np. (min-width: 320px) jest taki sam jak (width >= 320px)).

Zauważ, że żaden z nich nie jest odpowiednikiem > or < operatorów.

Weźmy przykład prosto ze specyfikacji Media Queries Level 4, gdzie definiujemy różne style w oparciu o punkt przerwania w 320px w szerokości rzutni za pomocą min-width i max-width:

@media (max-width: 320px) { /* styles for viewports = 320px */ }

Oba zapytania o media spełniają warunek, gdy szerokość widocznego obszaru jest równa 320px. To nie jest dokładnie to, czego chcemy. Chcemy bądź jeden z tych warunków, a nie oba jednocześnie. Aby uniknąć ukrytych zmian, możemy dodać piksel do zapytania na podstawie min-width:

@media (max-width: 320px){ /* styles for viewports = 321px */ }

Zapewnia to, że dwa zestawy stylów nie są stosowane jednocześnie, gdy szerokość widocznego obszaru wynosi 320px, dowolna szerokość widocznego obszaru mieszcząca się między 320px i 321px spowoduje powstanie bardzo małej strefy, w której nie zostanie zastosowany żaden styl w żadnym z zapytań — dziwna sytuacja „błysk treści bez stylu”.

Jednym z rozwiązań jest zwiększenie drugiej wartości skali porównawczej (liczby po przecinku) do 320.01px:

@media (max-width: 320px) { /* styles for viewports = 320.01px */ }

Ale to robi się głupie i zbyt skomplikowane. Dlatego nowa składnia zakresu funkcji multimediów jest bardziej odpowiednim podejściem:

@media (width <= 320px) { /* styles for viewports  320px) { /* styles for viewports > 320px */ }

Zamykając

Uff, dużo omówiliśmy w nowej składni kierowania na zakresy szerokości widocznego obszaru w zapytaniach o media CSS. Teraz, gdy specyfikacja Media Queries Level 4 wprowadziła składnię i została zaadaptowana w przeglądarkach Firefox i Chromium, zbliżamy się do możliwości korzystania z nowych operatorów porównania i łączenia ich z innymi funkcjami multimediów zakresu. width, lubić height i aspect-ratio

A to tylko jedna z nowszych funkcji, które wprowadzono w specyfikacji Level 4, obok a kilka zapytań, które możemy wykonać w oparciu o preferencje użytkownika. Na tym się nie kończy! Sprawdź Kompletny przewodnik po zapytaniach o media CSS na zajawkę co może być zawarte w Zapytaniach o media na poziomie 5.

Znak czasu:

Więcej z Sztuczki CSS