Sass MediaScreen: definición de dispositivos CSS

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 github
Biblioteca en el repositorio de Npm
Página de demostración

Source: https://habr.com/ru/post/471044/


All Articles