Maison  >  Article  >  interface Web  >  HTML5 et CSS3 réalisent l'effet de commutation de l'animation intelligente

HTML5 et CSS3 réalisent l'effet de commutation de l'animation intelligente

不言
不言original
2018-06-09 17:17:242017parcourir

Cet article partagera avec vous une démo basée sur HTML5+CSS3 pour obtenir un effet de commutation de tabulation animé intelligent. C'est très bien et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer

Le concepteur. a donné une image de changement d'onglet. Bien qu’il s’agisse d’une petite fonction, les ingénieurs front-end doivent encore prêter attention à de nombreux détails lors de sa mise en œuvre. J'ai écrit une démo pour votre référence.

L'effet final est le suivant :

HTML5+CSS3 做一个灵动的动画 TAB 切换效果

Pour que l'animation gif montre les détails, j'ai prolongé la durée de l'animation à 3 secondes

Idée de mise en œuvre

Lignes verticales à intervalles, car elles ne sont pas verticales, donc les bordures ne peuvent pas être utilisées. Je vais utiliser des pseudo-éléments.

Il n'y a que 3 barres verticales, mais il y a 4 li. C'est simple et peut être sélectionné à l'aide du sélecteur :not(:first-child).

La couleur d'arrière-plan change parce que je veux avoir un effet de petit à grand. Par conséquent, je ne peux pas utiliser directement la couleur d'arrière-plan pour y parvenir. Je prévois également d'utiliser des pseudo-éléments pour y parvenir.

Si la taille du pseudo-élément est utilisée pour le contrôler, le calcul sera plus compliqué, je souhaite donc utiliser box-shadow pour y parvenir.

D'accord, c'est tout. Commençons à écrire le code, comme suit :

Code HTML

  <p class="m">
    <ul class="tab">
      <li><a href="">导航1</a></li>
      <li><a href="">导航2</a></li>
      <li><a href="">导航3</a></li>
      <li><a href="">导航4</a></li>
    </ul>
  </p>

La structure du code ci-dessus a déjà été écrite. Je pense que c'est OK, je ne ferai donc aucun ajustement. Il n'y a pas de code encombrant.

Code CSS

.m { margin: 100px; }
.tab { width: 400px; margin: 0 auto; border: 1px solid #ddd; height: 40px; text-align: center; line-height: 40px; background: #fff; border-radius: 10px; overflow: hidden; }
.tab li { float: left; width: 100px; position: relative; overflow: hidden; }
.tab li:before, .tab li:after, .tab li a { -webkit-transition: all 0.25s ease-in-out; transition: all 0.25s ease-in-out; }
.tab li:before, .tab li:after { content: ""; display: block; }
.tab li:not(:first-child):after { background: #ddd; height: 20px; width: 1px; left: 0; top: 10px; position: absolute; }
.tab li a { display: block; position: relative; z-index: 2; color: #000; font-size: 14px; }
.tab li:before { width: 0; height: 0; top: 50%; left: 50%; z-index: 1; position: absolute; }
.tab li:hover a { color: #fff; }
.tab li:hover:before { box-shadow: 0 0 0 100px #36bc99; }
.tab li:hover + li:after, .tab li:hover:after { height: 0; top: 20px; }

Analyse du code :

L'implémentation de l'animation est très simple, utilisez simplement l'attribut transition.

Pour contrôler votre propre pseudo-élément et le pseudo-élément de l'élément frère suivant, utilisez simplement le sélecteur +.

Les autres codes sont relativement clairs et simples, vous pouvez les analyser vous-même.

Il est très simple d'obtenir cet effet. L'accent est mis sur l'accumulation quotidienne et la combinaison flexible de divers paramètres. Penser à la méthode d’implémentation et enfin écrire le code est très rapide. Et il n’y a pas de point culminant de connaissance là-dedans.

La raison pour laquelle CSS est difficile n'est pas que vous ne savez pas comment le faire, mais que vous ne savez pas comment l'adapter.

En fait, nous n'avons encore restauré que 99 % de l'effet de conception. L'une des deux lignes est à l'intérieur de l'arrière-plan et l'autre est à l'extérieur de l'arrière-plan. Que dois-je faire si je veux mettre les deux divisions. lignes à l’intérieur de l’arrière-plan ? Qu’en est-il de la mise en œuvre ? Vous pouvez y réfléchir.

Profitez du scss. Le CSS ci-dessus est compilé. En fait, il est très pratique et rapide de l'implémenter avec scss, et le code est plus lisible.

La démonstration est la suivante :

.m {
  margin: 100px;
}
.tab {
  width: 400px;margin: 0 auto;border: 1px solid $cdd;height: 40px;text-align: center;line-height: 40px;
  background: $cff;border-radius: 10px;overflow: hidden;
  li {
    float: left;width: 100px;position: relative;overflow: hidden;
    &:before,&:after,a {@include dz();}
    &:before,&:after {
      content: "";display: block;
    }
    &:not(:first-child) {
      &:after {
        background: $cdd;height: 20px;width: 1px;left: 0;top: 10px;position: absolute;
      }
    }
    a {
      display: block;position: relative;z-index: 2;color: $c00;font-size: 14px;
    }
    &:before {
      width: 0;height: 0;top: 50%;left: 50%;z-index: 1;position: absolute;
    }
    &:hover {
      a {color: $cff;}
      &:before {
        box-shadow: 0 0 0 100px $cyan;
      }
      & + li:after,&:after {
        height: 0;top: 20px;
      }
    }
  }
}

Bien sûr, j'ai utilisé des variables de couleur et du code mixin dans ce code. Vous ne pouvez pas l'utiliser directement.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Comment utiliser le dégradé linéaire de CSS3 pour créer une bordure

Comment masquer la barre de défilement en CSS

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Disposition du tableau HTMLArticle suivant:Disposition du tableau HTML