Maison > Questions et réponses > le corps du texte
Je développe la navigation à gauche. Je veux que la barre rouge apparaisse avant l'élément de menu en survol. Cela fonctionne pour l'élément "Accueil" et ses sous-éléments, mais d'autres éléments racine provoquent une barre rouge au survol qui s'étend sur toute la largeur de la page de haut en bas.
$(document).foundation();
.vertical.dropdown.menu [href] > i { display: block; } .vertical.dropdown.menu [href] { display: block; text-align: center; } .left-bar { position: fixed; top: 0; left: 0; width: 150px; height: 100%; color: #333; background: #FFFFFF; } .left-bar .vertical.menu.nested { padding: 0; } .left-bar [href] > i { display: block; } .left-bar [href] { display: block; text-align: left; padding: 0; color: #333; } .left-bar [href]:hover { background: #9B9B9BFF; } .left-bar .vertical.menu > li { position: relative; background: #FFFFFF; color: #333; border: 0; } .left-bar .top-level-item [href]:hover::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background-color: red; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0/css/material-design-iconic-font.min.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.5.0/css/foundation.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.5.1/js/foundation.min.js"></script> <ul class="vertical dropdown menu left-bar" data-dropdown-menu> <li class="top-level-item"> <a href="#"> <i class="zmdi zmdi-home zmdi-hc-3x"></i> <span>Home</span> </a> <ul class="vertical menu nested"> <li><a href="#"><i class="zmdi zmdi-list zmdi-hc-3x"></i> Sub Item 1</a></li> <li><a href="#"><i class="zmdi zmdi-list zmdi-hc-3x"></i> Sub Item 2</a></li> <!-- ... --> </ul> </li> <li class="top-level-item"> <a href="#"> <i class="zmdi zmdi-account zmdi-hc-3x"></i> <span>Account</span> </a> </li> <li class="top-level-item"> <a href="#"> <i class="zmdi zmdi-settings zmdi-hc-3x"></i> <span>Settings</span> </a> </li> <li class="top-level-item"> <a href="#"> <i class="zmdi zmdi-help-outline zmdi-hc-3x"></i> <span>Help</span> </a> </li> <!-- ... --> </ul>
Comment faire pour que la barre rouge ne s'étende que sur la hauteur de l'élément de menu ?
P粉7980104412024-02-04 14:13:32
J'ai apporté des modifications au CSS et y ai ajouté des commentaires. Il y a un problème avec les sélecteurs CSS basés sur la structure DOM
.left-bar.vertical.menu li
而不是 .left-bar .vertical.menu > li
,我删除了空格和 >
,以便所有 li
Désormais, tous ont des positions relatives
$(document).foundation();
.vertical.dropdown.menu [href] > i { display: block; } .vertical.dropdown.menu [href] { display: block; text-align: center; } .left-bar { position: fixed; top: 0; left: 0; width: 150px; height: 100%; color: #333; background: #FFFFFF; } .left-bar .vertical.menu.nested { padding: 0; } .left-bar [href] > i { display: block; } .left-bar [href] { display: block; text-align: left; padding: 0; color: #333; } .left-bar [href]:hover { background: #9B9B9BFF; } /* I made a change here */ .left-bar.vertical.menu li { position: relative; background: #FFFFFF; color: #333; border: 0; } .left-bar .top-level-item [href]:hover::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background-color: red; }
sssccc sssccc
P粉8999507202024-02-04 11:59:21
J'ai laissé une bordure pour le rouge initialement définie sur le blanc.
J'ai apporté des modifications :
[href]
que je considère comme "fragiles" background-color
pour plus de clarté rem
而不是 px
,因为典型的浏览器使用 16px
= 1rem
base de taille ; vous pouvez forcer le soutien pour ceux qui ne le font pas si nécessaire. Si vous souhaitez que le conteneur continue à avoir une bordure et fasse quelque chose en rapport avec cela en utilisant CSS, vous pouvez choisir l'enfant comme ceci : Comment styliser l'élément parent lorsque l'enfant est survolé ? Ou peut-être utilisez un simple JavaScript pour vous aider.
$(document).foundation();
.nav-item { width: 10rem; background-color: #FFFFFF; text-align: center; color: #333; border: 0; border-left-width: 0.25rem; border-left-style: solid; border-left-color: #FFFFFF; } .nav-item:hover { border-left-color: #FF0000; } .nav-item .nav-link:hover { background-color: #9B9B9BFF; } .nav-link { color: #333333; } .nav-link * { display: block; }
sssccc sssccc