Maison >interface Web >tutoriel CSS >Le guide ultime du développement Web réactif
Voici comment vous assurer que vos créations restent flexibles et s'affichent parfaitement sur n'importe quel appareil. Jetons un coup d'œil aux éléments clés à prendre en compte lors de la création d'une application Web réactive.
CSS propose une variété d'unités, à tel point qu'il peut parfois être déroutant de choisir la bonne.
Pour une liste complète des unités CSS (même si beaucoup sont rarement utilisées), consultez cette page MDN Web Docs.
Il existe plusieurs façons d'améliorer la réactivité de vos images sur le Web.
En définissant une limite de largeur et une hauteur maximales sur automatique, nous pouvons rendre nos images réactives sans modifier le rapport hauteur/largeur de l'image.
img { width: 100%; /* or any fixed width */ height: auto; }
Utilisez max-width au lieu de width si vous souhaitez qu'une image soit réduite, mais jamais plus grande que sa taille d'origine.
Que faire si vous avez besoin de différentes versions de la même image pour différentes tailles de fenêtre ou résolutions ? Le La balise avec l'attribut srcset permet au navigateur de sélectionner automatiquement l'image la plus appropriée pour l'appareil.
Veuillez noter que différentes versions ne signifient pas des fichiers identiques mais plutôt des images qui ont été ajustées (par exemple, redimensionnées, compressées) pour s'adapter à différents appareils.
<img src="small.jpg" srcset="small.jpg 600w, medium.jpg 1200w, large.jpg 2000w" sizes="(max-width: 600px) 100vw, (min-width: 601px) and (max-width: 1200px) 75vw, (min-width: 1201px) 50vw" alt="Example Image">
Et si vous avez besoin de différentes images pour différentes tailles de fenêtre ou résolutions ? L'écran
<picture> <source srcset="small.jpg" media="(max-width: 600px)"> <source srcset="medium.jpg" media="(max-width: 1200px)"> <img src="large.jpg" alt="Example image"> </picture>
Dans cet exemple :
html { font-size: 16px; } .parent { font-size: 2rem; /* 32px (2 * 16px) */ } .child { font-size: 0.5em; /* 16px (0.5 * 32px) */ }
L'unité em est relative à la taille de la police de l'élément parent. Dans l'exemple ci-dessus, la classe enfant a une taille de police de 16 px car elle correspond à la moitié de la taille de police de l'élément parent, qui est de 32 px.
L'unité rem est relative à la taille de police de l'élément racine (html). Dans l'exemple ci-dessus, la classe parent a une taille de police de 32 px car elle correspond au double de la taille de police de la racine, qui est de 16 px.
h1 { font-size: 5vw; } h2 { font-size: 5vh; }
Que faire si vous devez utiliser des unités relatives ou basées sur une fenêtre d'affichage, mais dans une limite minimale et maximale ?
Par exemple, je souhaite que la taille de ma police soit relative à la largeur de la fenêtre, mais la valeur minimale doit être de 12 px et la valeur maximale doit être de 48 px. La fonction de serrage est le choix idéal pour de tels scénarios.
h1 { font-size: clamp(12px, 3vw, 48px); }
Que se passe-t-il si vous devez aligner des éléments principalement dans des mises en page unidimensionnelles ? (ligne ou colonne)
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> </div>
.card-container { display: flex; /* Enable flexbox layout */ justify-content: space-around; /* Space evenly between and around cards */ } .card { background-color: black; border: 1px solid white; color: white; text-align: center; padding: 20px; }
En savoir plus sur Flexbox ici
Que se passe-t-il si vous devez aligner des éléments principalement dans des mises en page bidimensionnelles ? (ligne et colonne)
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> <div class="card">Card 4</div> </div>
.card-container { display: grid; /* Enable grid layout */ grid-template-columns: 1fr 1fr; /* Two equal columns */ grid-template-rows: 1fr 1fr; /* Two equal rows */ gap: 10px; /* Space between grid items */ width: 100%; /* Full width of the container */ } .card { background-color: black; border: 1px solid white; color: white; text-align: center; padding: 20px; }
En savoir plus sur Grid ici
Que faire si vous souhaitez appliquer des styles spécifiques lorsqu'un appareil remplit certaines conditions ? Le plus souvent, ces conditions concernent la largeur de l'appareil.
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> </div>
.card-container { display: flex; flex-direction: column; /* Default: single-column layout */ } /* Media query for tablet devices (min-width: 768px) */ @media (min-width: 768px) { .card-container { flex-direction: row; /* Change to two-column layout */ } .card { flex: 1; /* Equal width for all cards */ } } /* Media query for desktop devices (min-width: 1024px) */ @media (min-width: 1024px) { .card { flex: 25%; /* Each card takes 25% of the width */ } }
Media queries can also be used with other characteristics, such as height, orientation, aspect-ratio, resolution, pointer, prefers-color-scheme, and display-mode.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
This tag is responsible for giving instructions to the browser on how to control the page's dimensions and scaling. The width=device-width part sets the width of the page to follow the screen width and initial-scale=1.0, which controls the zoom level when the page is first loaded.
If you don't want to reinvent the wheel, there are many responsive frameworks available to save time and effort.
Bootstrap: A widely used framework with pre-designed components for quick responsive site development.
Tailwind CSS: A utility-first framework that enables fast custom design with utility classes.
MUI: A React library based on Material Design, offering responsive pre-styled components.
ShadCN: Focuses on modern, accessible, and customizable responsive components.
Ant Design: A comprehensive design system by Alibaba for enterprise applications, featuring responsive components.
A mobile-first approach means starting with the design for smaller screens, like smartphones, and then gradually adding more features for larger screens, like tablets and desktops. This way, we ensure that the basic experience works great on mobile, and then you build on that for bigger devices.
.card-container { /* default code is for mobile view */ display: flex; flex-direction: column; flex-wrap: wrap; justify-content: center; padding: 20px; gap: 12px; } @media (min-width: 768px) { /* queries/cases are for larger views */ .card-container { flex-direction: row; gap: 18px; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!