Creo que recientemente la diferencia en el tamaño de la pantalla entre diferentes grupos de dispositivos se está volviendo más borrosa. A pesar de esto, intenté escribir una herramienta para determinar grupos de dispositivos (teléfonos móviles, tabletas, computadoras portátiles, computadoras de escritorio) y dispositivos específicos (iPhone 5, iPhone X, iPad Pro 12, etc.). Resultó, en mi opinión, un paquete bastante conveniente de SASS mixins. Y lo que es más importante, la herramienta es fácil de usar y también le permite expandir la lista de dispositivos a los suyos sin editar la fuente.

Por cierto,
mete la demo aquí .
Solo un par de reservas:
- No verifique la adaptabilidad en el navegador DevTools, los tamaños de los lados en la orientación horizontal del dispositivo no se calculan allí correctamente . Es mejor verificar en un dispositivo real o en un simulador (por ejemplo, xCode Simulator).
- Use group-css-media-queries para combinar las mismas consultas de medios. Sin él, se genera una gran cantidad de código
@media ...
repetitivo @media ...
si por conveniencia usamos el @include device()
en cada selector por separado. Gulp wrapper - gulp-group-css-media-queries .
Instalación
Descargue la biblioteca:
$ yarn add sass-mediascreen $ npm install sass-mediascreen $ curl -O https://raw.githubusercontent.com/gvozdb/sass-mediascreen/master/_mediascreen.scss
Y conecte los mixins a nuestra aplicación:
@import "mediascreen";
Ejemplos
Así es como puede probar dispositivos específicos:
@include device(iPhone5, portrait) { // portrait orientation // iPhone 5, iPhone 5s, iPhone 5c, iPhone SE } @include device(iPhone6Plus iPhoneXR, landscape) { // landscape orientation // iPhone 6+, iPhone 6s+, iPhone 7+, iPhone 8+, iPhone XR } @include device(iPadPro10 iPadPro11 iPadPro12) { // all orientations // iPad Pro 10.5, iPad Pro 11, iPad Pro 12.9 }
Aquí están los grupos de dispositivos:
@include device(desktop) { // all orientations // desktop } @include device(mobile tablet laptop, landscape) { // landscape orientation // mobile, tablet, laptop } @include device(mobile-landscape tablet laptop) { // landscape orientation // mobile // all orientations // tablet, laptop } @include device(mobile-landscape tablet laptop, portrait) { // landscape orientation // mobile // portrait orientation // tablet, laptop }
Y estos son mixins estándar para verificar los tamaños de pantalla (de, a) y la orientación actual del dispositivo:
@include screen(min-width, max-width, orientation) {/*...*/} @include min-screen(width) {/*...*/} @include max-screen(width) {/*...*/} @include screen-height(min-height, max-height, orientation) {/*...*/} @include min-screen-height(height) {/*...*/} @include max-screen-height(height) {/*...*/} @include landscape() {/*...*/} @include portrait() {/*...*/}
Lista de dispositivos compatibles
Grupos- Móviles 320-767px -
mobile
,
mobile-portrait
mobile-landscape
- Tabletas 768-1023px -
tablet
,
tablet-portrait
,
tablet-landscape
- Portátiles 1024-1199px -
laptop
,
laptop-portrait
,
laptop-landscape
- Escritorios> = 1200px -
desktop
,
desktop-portrait
,
desktop-landscape
Teléfonos- iPhone 5, 5s, 5c, SE -
iphone5
,
iphone5s
,
iphone5c
,
iphonese
- iPhone 6, 6s, 7, 8 -
iphone6
,
iphone6s
,
iphone7
,
iphone8
- iPhone 6+, 6s +, 7+, 8+ -
iphone6plus
,
iphone6splus
,
iphone7plus
,
iphone8plus
- iPhone X, XS -
iphonex
,
iphonexs
- iPhone XR -
iphonexr
- iPhone XS Max -
iphonexsmax
Tabletas- iPad 1, 2, Mini, Aire -
ipad1
,
ipad2
,
ipadmini
,
ipadair
- iPad 3, 4, Pro 9.7 "-
ipad4
,
ipadpro9
,
ipadpro9
- iPad Pro 10.5 "-
ipadpro10
- iPad Pro 11.0 "-
ipadpro11
Laptops- iPad Pro 12.9 "-
ipadpro12
¡Ay, en términos de tamaño de pantalla, el iPad Pro 12 es una computadora portátil!Ampliación de la lista de dispositivos.
Como dije anteriormente, puede agregar soporte para dispositivos personalizados o grupos de dispositivos sin editar la fuente de la biblioteca. Para hacer esto, antes de importar
@import "mediascreen"
, debe declarar la variable Sass
$ms-devices
con una lista de sus dispositivos:
$ms-devices: ( desktop-sm: ( group: true, // - min: 1200px, max: 1919px, ), desktop-md: ( group: true, min: 1920px, max: 2879px, ), desktop-lg: ( group: true, min: 2880px, ), pixel2xl: ( group: false, // - width: 411px, // or 412px?.. height: 823px, pixel-ratio: 3.5, ), macbook12: ( group: false, orientation: landscape, width: 1440px, height: 900px, pixel-ratio: 2, ), imac27: ( group: false, orientation: landscape, width: 5120px, height: 2880px, ), ); @import "mediascreen";
Después de eso, puede verificar sus dispositivos, así como los dispositivos de biblioteca estándar:
@include device(desktop-sm) { // desktop-sm } @include device(desktop-md) { // desktop-md } @include device(desktop-lg) { // desktop-lg } @include device(Pixel2XL, landscape) { // landscape orientation // Google Pixel 2XL } @include device(MacBook12) { // landscape orientation // MacBook 12 } @include device(iMac27) { // landscape orientation // iMac 27 }
Referencias
Biblioteca en githubBiblioteca en el repositorio de NpmPágina de demostración