Construire un premier thème WordPress adaptatif pour mobile

La construction de thèmes est au cœur de WordPress. C'est la technique que vous utilisez pour créer des sites Web sur mesure pour vous-même ou vos clients. C'est une compétence essentielle pour quiconque souhaite concevoir et développer avec WordPress..

De plus en plus de thèmes WordPress sont réactifs: ils utilisent les requêtes de médias CSS pour s’adapter à différentes largeurs d’écran, adaptent la mise en page et apportent des modifications de conception et d’interface afin de rendre tout site créé à l’aide du thème plus lisible et interactif tailles d'écran.

Dans ce tutoriel, je vais vous montrer comment construire un thème Word First Mobile First, qui commence par le style des plus petits écrans et fonctionne à la hausse..


Ce dont vous aurez besoin pour ce tutoriel

Dans ce tutoriel, je vais prendre un thème WordPress avec un style minimal, puis le styler pour le rendre mobile en premier. La conception finale sera très simple: l’idée est de couvrir les éléments constitutifs du contenu et de la mise en page. Vous pouvez ensuite ajouter vos propres éléments de design si vous le souhaitez..

Pour suivre les étapes de ce tutoriel, vous aurez besoin des éléments suivants:

  • Un éditeur de texte ou de code. Si vous n'en avez pas déjà un, TextWrangler et Kompozer sont gratuits.
  • Si vous développez localement, MAMP, WAMP ou XAMPP afin que vous puissiez exécuter PHP et MySQL et travailler localement en utilisant WordPress.
  • Si vous développez à distance, un client FTP tel que FileZilla.
  • Une installation WordPress locale (ou une installation distante que vous pourrez utiliser pour tester)

Je suppose que vous êtes déjà familiarisé avec l'installation et l'utilisation de WordPress. Je vais travailler sur une installation WordPress à distance
et fournir des liens au fur et à mesure.

Si vous ne travaillez pas sur votre propre thème, vous aurez également besoin du code de départ du didacticiel. Vous pouvez voir mon thème sur http://rachelmccollin.co.uk/nettuts-wpresponsive-tutorial/ et télécharger le code du thème à différentes étapes de son développement à partir de xxx [à ajouter en fonction du système nettuts + downloads].


Avant de commencer: Qu'est-ce qui est mobile en premier??

Mobile First est un terme inventé par Luke Wroblewski. Il fait référence à la
stratégie de changer la façon dont nous concevons les sites Web et les thèmes. Au lieu de commencer avec une conception de bureau et de l'ajuster ensuite pour les appareils mobiles, nous travaillons dans l'autre sens: nous commençons par concevoir et coder pour les appareils mobiles, puis nous ajoutons ce qui est nécessaire pour les écrans plus grands. Cela présente quelques avantages:

  • C'est plus rapide - le contenu ou le style qui n'est pas nécessaire sur les petits écrans ne leur sont pas envoyés. Cela peut être plus rapide que de simplement le cacher ou l’annuler.
  • Cela change la façon dont nous planifions le contenu - en nous concentrant sur de petits écrans, nous nous concentrons sur ce qui est vraiment important plutôt que sur ce que nous incluons car nous avons de la place. Concevoir de cette manière peut avoir un impact considérable sur la conception éventuelle du bureau..

1. Notre thème de départ

Un style minimal est appliqué au thème de départ et aucun style de mise en page n’est ajouté pour le moment. C’est ce qui sera ajouté à mesure que nous suivrons le didacticiel..

Les éléments inclus dans le thème sont indiqués ci-dessous:

Actuellement, le thème ressemble à ceci sur un smartphone (c'est-à-dire à une taille d'écran de 320 x 480px):

Comme je n’ai encore appliqué aucune largeur, le site devrait redimensionner pour des écrans plus petits, mais ce n’est pas le cas, car le smartphone l’affiche comme s'il faisait 960 pixels de large. La première chose à faire est de dire aux smartphones d'afficher le site à la largeur réelle de l'écran..


2. Réglage de la largeur de l'écran

Pour que les smartphones se comportent bien en ce qui concerne la largeur de l'écran, j'ajoute une ligne dans le section dans header.php, comme suit:

 

Cela indique aux smartphones d'afficher la page à la largeur de l'écran du périphérique plutôt que de créer une fenêtre d'affichage virtuelle de 960 pixels de large, qui constitue le comportement par défaut..

Maintenant, le thème ressemble à ceci sur un petit écran:

Si vous avez déjà créé des feuilles de style responsive mais pas celles de Mobile First, ce sera une révélation. Vous souvenez-vous de tout le style supplémentaire que vous avez ajouté à vos requêtes multimédia pour les petits écrans? Vous en aurez besoin de très peu, car une page avec un style de mise en page minimal a déjà meilleure apparence sur mobile que sur le bureau, comme vous pouvez le voir sur cette capture d'écran prise à 1024 pixels de large:

Mais je dois encore ajouter un style de mise en page pour les petits écrans, ce qui est la prochaine étape.


3. Stylisez les blocs de disposition principaux pour les petits écrans

Je commencerai par ajouter des largeurs et des flotteurs pour les éléments principaux, afin de s’assurer qu’ils s’étendent sur l’écran. J'ajoute quelques largeurs et un clarifier les deux déclaration aux éléments concernés:

 en-tête, nav.main, .container, .content, .sidebar, footer width: 100%; clarifier les deux; 

Ensuite, pour éviter que le design ne soit coincé dans le petit écran, je vais ajouter du rembourrage à certains éléments:

 en-tête, nav.main, .container, footer padding: 10px; 

Notez que ce sont les seules valeurs horizontales que je définirai en pixels, et je le fais parce que je ne veux pas que le remplissage devienne trop grand à mesure que la taille de l'écran augmente.

Maintenant, le site semble moins encombré et les principaux éléments sont affichés l'un en dessous de l'autre:

Ensuite, je vais ranger les zones de widgets et améliorer la navigation.


4. Ajouter un style supplémentaire pour les petits écrans

La navigation doit s’étendre sur la largeur de l’écran et je voudrais centrer chaque élément de menu. Je vais donc ajouter un peu de style au menu:

 nav.main background: # 3394bf; débordement: auto; text-align: center; 

Cela me donne un menu beaucoup plus intelligent:

Les zones de widgets sont toutes assez proches les unes des autres et il est difficile de voir où l’un se termine et où l’autre commence. J'ajouterai quelques bordures et un rembourrage pour résoudre ce problème

 .barre latérale .widget padding: 10px 0; border-top: 1px solid # 3394bf; 

Ensuite, les widgets de pied de page. Je vais faire quelque chose de semblable à eux aussi:

 footer .widget padding: 10px 0; border-top: 1px solid #fff; 

Cela ajoute une certaine séparation entre mes widgets:

J'ai maintenant une mise en page simple pour mon thème sur de petits écrans, avec quelques couleurs, bordures, marges et rembourrages pour vous aider. Je n’ajouterai aucun style supplémentaire ici, car cela pourrait ralentir le thème sur les appareils mobiles et je ne pense pas que ce soit toujours nécessaire sur les petits écrans. Donc, la prochaine étape consiste à commencer à créer des requêtes multimédia.


5. Ajouter des requêtes multimédia

Pour ce thème, je vais cibler trois tailles d'écran supplémentaires:

  • 600px de large et plus, qui englobera les tablettes en portrait ou en paysage ainsi que les écrans de bureau
  • 800px de large et plus, ce qui inclura les tablettes en mode paysage et les ordinateurs de bureau
  • 1025 pixels de large et plus, ce qui englobera tous les écrans de bureau, sauf les plus petits. Je vais délibérément à un pixel au-dessus de 1024 pixels afin que les grandes tablettes ne soient pas concernées par cette requête multimédia..

Vous avez peut-être remarqué que mes requêtes multimédia ne sont pas toutes basées sur la largeur d'un périphérique spécifique. En effet, à mesure que la gamme de périphériques et la largeur d’écran s’élargissent, le ciblage de périphériques spécifiques devient moins fiable que le paramétrage des requêtes multimédia au moment où la présentation en profite. J'ai testé la mise en page en redimensionnant la fenêtre de mon navigateur. À 600px large, elle ressemble à ceci:

À mon avis, la conception semble fausse à cette largeur et peut bénéficier de certains changements de disposition.

Je commence donc par ajouter mes requêtes multimédia à la fin de la feuille de style:

 / * tablettes - portrait * / écran @media et (min-largeur: 600px)  / * tablettes - paysage * / écran @media et (min-largeur: 800px)  / * ordinateurs de bureau * / @ écran multimédia et ( min-width: 1025px) 

Notez que j'ai utilisé largeur min, ne pas largeur maximale comme vous le feriez si vous dessiniez d'abord le bureau et écrivez des requêtes multimédia pour des écrans plus petits.

Ensuite, je passe au style pour les tablettes.


6. Ajouter un style pour les tablettes en mode Portrait

Je souhaite améliorer ma mise en page afin de mieux utiliser l'espace écran sur ces écrans plus grands, et j'ajouterai également des dégradés CSS pour affiner le design..

Tout d'abord, la mise en page. Dans ma requête multimédia pour les écrans de 600 pixels et plus, j'ajoute:

 / * layout - zones de widget côte à côte * / footer débordement: auto;  .sidebar .widget, footer apart float: left; largeur: 49%; marge droite: 2%;  .sidebar .widget: nth-child (pair), pied de page de côté: nth-child (pair) margin-right: 0; 

Cela ajoute des flottants et quelques marges pour mieux utiliser la largeur de l'écran:

Je vais maintenant modifier la navigation, car la mise en page actuelle laisse beaucoup d’espace vide à côté de chaque élément et prend beaucoup de place. J'ajoute le style suivant pour créer une barre de navigation horizontale:

 / * navigation - place les éléments les uns à côté des autres * / nav.main text-align: left; rembourrage: 0 10px;  nav.main li float: left; marge: 0;  nav.main li a padding: 0 20px; 

Je vais aussi ajouter un dégradé au menu pour cette taille d'écran et plus:

 nav.main, nav.main a background: # 183c5b; / * Anciens navigateurs * / arrière-plan: -moz-linear-gradient (en haut, # 183c5b 0%, # 3394bf 100%); / * FF3.6 + * / background: -webkit-gradient (linéaire, gauche en haut, gauche en bas, couleur-stop (0%, # 183c5b), couleur-stop (100%, # 3394bf)); / * Chrome, Safari4 + * / background: -webkit-linear-gradient (haut, # 183c5b 0%, # 3394bf 100%); / * Chrome10 +, Safari5.1 + * / arrière-plan: -o-linear-gradient (haut, # 183c5b 0%, # 3394bf 100%); / * Opera 11.10+ * / background: -ms-linear-gradient (haut, # 183c5b 0%, # 3394bf 100%); / * IE10 + * / background: linéaire-dégradé (haut, # 183c5b 0%, # 3394bf 100%); / * W3C * /

En fonction des appareils et des navigateurs que je cible, je peux omettre certains de ces préfixes de navigateur, mais je les ai laissés à d'autres utilisateurs de mon thème..

Ainsi, j'ai maintenant une mise en page améliorée pour les tablettes en orientation portrait, comme le montre la capture d'écran:


7. Ajouter un style pour les tablettes en mode Paysage

Je ne ferai qu'un changement pour les écrans de cette largeur: je déplacerai la barre latérale à droite du contenu, car le contenu a l'air un peu étiré s'il couvre tout l'écran. Pour ce faire, j'ajoute les éléments suivants dans le ciblage de la requête multimédia largeur min de 800px:

 .contenu largeur: 65%; float: gauche;  .sidebar width: 33%; Flotter à droite; clair: droit;  .sidebar .widget width: 100%; float: aucun;  .sidebar .widget: premier-enfant border-top: none; 

Cela fait quelques choses:

  • Il déplace la barre latérale à la droite du contenu
  • Il redimensionne la barre latérale et le contenu et ajoute des flottants et un clair propriété pour la mise en page
  • Il supprime les flottants sur les widgets afin qu'ils soient maintenant dans une colonne
  • Ça enlève le bordure supérieure à partir du premier widget, qui n'en a plus besoin

Le thème ressemble maintenant à ceci sur une tablette en mode paysage:


8. Ajouter un style de bureau

Si j'avais construit mon thème responsive de manière traditionnelle, en commençant par le bureau, je travaillerais d'abord sur cette taille d'écran, mais ici, je travaille avec le dernier. Vous avez peut-être déjà remarqué que cela rend les choses très efficaces. D'après mon expérience, la suppression du style de bureau dans les requêtes multimédia destinées aux mobiles demande beaucoup plus de travail que de peaufiner ma présentation de mobile pour le bureau..

Je vais ajuster la disposition du pied de page pour avoir les quatre zones de widget de pied de page côte à côte et ajouter une image d'arrière-plan à l'en-tête. Cette image n'est pas cruciale pour le contenu mais est là pour la décoration, donc je suis à l'aise avec le fait que ce n'est pas dans mon balisage.

Tout d'abord, la mise en page. En plus d’ajuster la disposition du pied de page, je vais ajouter un largeur maximale valeur à la corps tag pour éviter d’étirer la mise en page sur toute la largeur d’écrans très larges:

 corps largeur: 95%; largeur maximale: 960px; marge: 0 auto;  footer apart float: left; largeur: 23,5%; marge droite: 2%;  footer apart: nth-child (pair) margin-right: 2%;  footer apart.fourth margin-right: 0; 

Le style ci-dessus est utilisé dans la requête multimédia pour les écrans avec largeur min de 1025px, et fait ce qui suit:

  • Ajoute largeur maximale au corps
  • Ajuste la largeur et la marge droite sur le de côté éléments dans le pied de page
  • Ajuste la marge pour les zones de widget paires numérotées à 2%, conformément aux autres zones de widget
  • Utilisation de la classe attribuée à la quatrième zone de widget dans le thème (.Quatrième), réduit sa marge à 0. J'ai délibérément utilisé une classe ici au lieu de nième enfant car j'ai besoin que cela fonctionne sur plusieurs navigateurs

Alors, à quoi ressemble mon thème sur le bureau?

Pas mal. Enfin, je vais ajouter une image de fond à mon en-tête..

 header background: URL (images / banner-image.jpg) centre bas non-répétition; rembourrage en bas: 210px; 

Cela ajoute mon image en tant qu'arrière-plan avec un rembourrage pour lui laisser de l'espace:

L'avantage d'utiliser cette approche est que cette image ne sera téléchargée que par des ordinateurs de bureau. Etant donné que ce n'est pas dans le style principal ni dans les requêtes multimédia pour les plus petits périphériques, cela ne les ralentira pas. L'utilisation d'images en tant qu'arrière-plan présente toutefois des inconvénients, en particulier en ce qui concerne l'accessibilité. Il est donc important d'utiliser cette technique uniquement lorsque l'image est uniquement conçue pour la conception et ne fait pas partie du contenu. Sinon, j'aurais pu ajouter une version plus petite de l'image dans mon balisage et utiliser CSS pour masquer cette image et afficher une version plus grande de la même image en tant qu'arrière-plan pour les écrans plus grands..


Résumé

J'ai maintenant un thème réactif, Mobile First. En commençant par de petits écrans et en remontant, j'ai réduit la quantité de code nécessaire pour créer mon design réactif et j'ai pu m'assurer qu'une grande image ne soit pas envoyée aux appareils mobiles..

Alors que de plus en plus de développeurs et de propriétaires de sites exigent que leurs sites soient réactifs, pouvoir créer des thèmes WordPress réactifs deviendra une compétence inestimable. Dans ce tutoriel, j'ai montré que le processus n'était pas nécessairement fastidieux et ne devait pas prendre trop de temps. Bien sûr, vous pouvez aller plus loin dans le processus et ajouter du contenu spécifique au mobile ou un style supplémentaire ciblant des appareils spécifiques, mais c'est quelque chose de différent pour un autre jour.!