Saya sedang membangunkan navigasi kiri. Saya mahu bar merah muncul sebelum item menu pada tuding. Ia berfungsi untuk item "Rumah" dan sub-itemnya, tetapi item akar lain menyebabkan bar merah pada tuding merentangi keseluruhan lebar halaman dari atas ke bawah.
$(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>
Bagaimana untuk memperbaikinya supaya bar merah hanya merentangi ketinggian item menu?
Saya membuat perubahan pada CSS dan menambah ulasan di sana. Terdapat masalah dengan pemilih CSS berdasarkan struktur DOM
.left-bar.vertical.menu li
而不是.left-bar .vertical.menu > li
,我删除了空格和>
,以便所有li
Kini semua mempunyai kedudukan relatifSaya meninggalkan sempadan untuk merah pada mulanya ditetapkan kepada putih.
Saya membuat perubahan:
[href]
yang saya anggap "rapuh"background-color
untuk kejelasanrem
而不是px
,因为典型的浏览器使用16px
=1rem
saiz asas; anda boleh memaksa sokongan untuk mereka yang tidak jika diperlukan.Jika anda mahu bekas itu terus mempunyai sempadan dan melakukan sesuatu yang berkaitan dengannya menggunakan CSS, anda boleh memutuskan anak seperti ini: Bagaimana untuk menggayakan elemen induk apabila kanak-kanak itu dilegar? Atau mungkin gunakan JavaScript mudah untuk membantu.