Bref tutoriel
Il s'agit d'un effet de menu déroulant avec un effet de soulignement suivant réalisé en CSS3 pur. Le menu déroulant utilise la transformation et la transition CSS3 pour créer des effets de suivi de soulignement et des effets de menu déroulant.
Utilisation
Structure HTML
Ce menu déroulant utilise l'élément
<nav> <ul id="main"> <li>主页</li> <li>关于我们</li> <li>项目分类 <ul class="drop"> <p> <li>scss</li> <li>jquery</li> <li>html</li> </p> </ul> </li> <li>联系我们</li> <p id="marker"></p> </ul> </nav>
Style CSS
L'ensemble du menu ul#mian est positionné en utilisant le positionnement relatif. display est affiché sous la forme d'un élément de niveau bloc en ligne. Les éléments de menu sont dimensionnés à l'aide du remplissage et la largeur minimale min-width est définie sur 120 pixels.
#main { position: relative; list-style: none; background: #6BBE92; font-weight: 400; font-size: 0; text-transform: uppercase; display: inline-block; padding: 0; margin: 50px auto; } #main li { font-size: 0.8rem; display: inline-block; position: relative; padding: 15px 20px; cursor: pointer; z-index: 5; min-width: 120px; } li { margin: 0; }
Dans la structure HTML, ul.drop est le composant du menu déroulant. Sa méthode de positionnement utilise le positionnement absolu. L'élément p à l'intérieur utilise la fonction de translation pour se déplacer de -100 % sur l'axe Y afin de le masquer (overflow : Hidden est utilisé sur .drop).
.drop { overflow: hidden; list-style: none; position: absolute; padding: 0; width: 100%; left: 0; top: 48px; } .drop p { -webkit-transform: translate(0, -100%); -moz-transform: translate(0, -100%); -ms-transform: translate(0, -100%); transform: translate(0, -100%); -webkit-transition: all 0.5s 0.1s; -moz-transition: all 0.5s 0.1s; -ms-transition: all 0.5s 0.1s; transition: all 0.5s 0.1s; position: relative; } .drop li { display: block; padding: 0; width: 100%; background: #3E8760 !important; }
#marker est un élément de soulignement. Il utilise également le positionnement absolu. Et définissez un effet de transition d'animation de 0,35 seconde pour toutes les animations.
#marker { height: 6px; background: #3E8760 !important; position: absolute; bottom: 0; width: 120px; z-index: 2; -webkit-transition: all 0.35s; -moz-transition: all 0.35s; -ms-transition: all 0.35s; transition: all 0.35s; }
Lorsque la souris glisse sur l'élément de menu #main li element, utilisez nth-child pour déterminer sur quel élément de menu la souris glisse actuellement. Remettez ensuite la position de l'axe Y du sous-menu dans l'élément de menu à 0, affichez le menu déroulant et définissez la valeur de mouvement dans la direction X de la fonction de traduction pour déplacer le soulignement en fonction des différents éléments de menu.
#main li:nth-child(1):hover ul p { -webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } #main li:nth-child(1):hover ~ #marker { -webkit-transform: translate(0px, 0); -moz-transform: translate(0px, 0); -ms-transform: translate(0px, 0); transform: translate(0px, 0); } #main li:nth-child(2):hover ul p { -webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } #main li:nth-child(2):hover ~ #marker { -webkit-transform: translate(120px, 0); -moz-transform: translate(120px, 0); -ms-transform: translate(120px, 0); transform: translate(120px, 0); } #main li:nth-child(3):hover ul p { -webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } #main li:nth-child(3):hover ~ #marker { -webkit-transform: translate(240px, 0); -moz-transform: translate(240px, 0); -ms-transform: translate(240px, 0); transform: translate(240px, 0); } #main li:nth-child(4):hover ul p { -webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } #main li:nth-child(4):hover ~ #marker { -webkit-transform: translate(360px, 0); -moz-transform: translate(360px, 0); -ms-transform: translate(360px, 0); transform: translate(360px, 0); }
Ce qui précède est le contenu du simple effet de menu déroulant CSS3 avec effet de soulignement suivant. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn. )!
Articles connexes :
Introduction à la méthode simple de création d'un menu déroulant CSS