在我的侧边栏中,当我将鼠标悬停在子菜单(公文包或联系人)上时

enter image description here

我希望红色背景占据整个单元格的背景.

enter image description here

你知道我怎么才能创造出这个吗?

我想问题出在这里?但我看不出我应该加什么优先级?

.sidebar .nav-links li:hover {
  background: red;
}

非常感谢

以下是通过Stackblitz进行的演示

100

<ul class="nav-links" id="nav-links" >
   <li *ngFor="let item of menuSidebar" #itemEl >
      <div *ngIf="item.sub_menu.length > 0" class="dropdown-title" (click)="showSubmenu(itemEl)">
      <a>
      <i [class]="item.icon"></i>
      <span class="link_name">{{item.link_name}}</span>
      </a>
      <i class='bx bxs-chevron-down arrow'></i>
      </div>
      <ul class="sub-menu" [class.blank]="item.sub_menu.length == 0">
         <li><a class="link_name">{{item.link_name}}</a></li>
         <li *ngFor="let item_sub of item.sub_menu" routerLinkActive="active">
            <a [routerLink]="[item_sub.link]">{{item_sub.link_name}}</a>
         </li>
      </ul>
   </li>
</ul>

100

/* Sidebar */
.sidebar {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 260px;
  background: white;
  z-index: 100;
  transition: all 0.5s ease;
}

.sidebar.sidebar-close {
  width: 60px;

}

.sidebar .logo-details{
  width: 100%;
  padding: 10px 10px 10px 10px;
}

.sidebar .logo-details img{
  height: 50px;
  width: 80%;
  display: block;
  margin: 0 auto;
 
}

.sidebar.sidebar-close .logo-details img {
  width: 37px;
  height: 50px;
  transform: scale(1.2) translateX(-3px);
}

.sidebar .nav-links {
  height: 100%;
  width: 260px;
  padding-bottom: 150px;
  overflow: auto;
}

.sidebar .nav-links::-webkit-scrollbar {
  display: none;
}

.sidebar .nav-links li {
  list-style: none;
}

.sidebar .nav-links > li {
  position: relative;
  width: fit-content;
}

.sidebar .nav-links li:hover {
  background: red;
}


/* Dropdown Title */
.sidebar .nav-links .dropdown-title {
  width: 260px;
  overflow: hidden;
  transition: all 0.52s ease;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
}

.sidebar.sidebar-close .nav-links .dropdown-title {
  width: 60px;
}


.sidebar .nav-links li i {
  height: 50px;
  min-width: 60px;
  text-align: center;
  line-height: 50px;
  color: #ffa726;
  font-size: 20px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.sidebar .nav-links li:hover i, 
.sidebar .nav-links li.active i {
  color: white;
}

.sidebar .nav-links li.showMenu i.arrow {
  transform: rotate(-180deg);
}

/* a Tag */
.sidebar .nav-links li a {
  display: flex;
  align-items: center;
  text-decoration: none;
  width: 100%;
}

/* Link Name */
.sidebar .nav-links li a .link_name {
  font-size: 16px;
  font-weight: 600;
  color: #ffa726;
  transition: all 0.4s ease;
}

.sidebar .nav-links li:hover a .link_name, 
.sidebar .nav-links li.active a .link_name {
  color: white;
}

.sidebar.sidebar-close .nav-links li a .link_name {
  pointer-events: none;
}

/* Sub Menu */
.sidebar .nav-links li .sub-menu {
  padding: 6px 6px 14px 50px;
  background: #239CD3;
  display: none;
  transition: all 0.4s ease;
}

.sidebar .nav-links li.showMenu .sub-menu {
  display: block;
}

.sidebar .nav-links li .sub-menu a {
  color: #ffa726;
  font-size: 15px;
  padding: 7px 0;
  white-space: nowrap;
  transition: all 0.3s ease;
}

.sidebar .nav-links li .sub-menu li {
  padding-left: 10px;
}


.sidebar .nav-links li .sub-menu li:hover a, 
.sidebar .nav-links li .sub-menu li.active a {
  color: black;
}

.sidebar.sidebar-close .nav-links li .sub-menu {
  position: absolute;
  left: 100%;
  top: -10px;
  margin-top: 0;
  padding: 0;
  border-radius: 0 6px 6px 0;
  opacity: 0;
  display: block;
  pointer-events: none;
  transition: 0s;
  overflow: hidden;
}

.sidebar.sidebar-close .nav-links li .sub-menu li {
  padding: 6px 15px;
  width: 200px;
}

.sidebar.sidebar-close .nav-links li:hover .sub-menu {
  top: 0;
  opacity: 1;
  pointer-events: auto;
  transition: all 0.4s ease;
}

.sidebar .nav-links li .sub-menu .link_name {
  display: none;
}

.sidebar.sidebar-close .nav-links li .sub-menu .link_name {
  font-size: 16px;
  font-weight: 600;
  display: block;
}

.sidebar.sidebar-close .nav-links li .sub-menu li:first-child {
  background: white;
  pointer-events: none;
}


.sidebar .nav-links li .sub-menu.blank {
  pointer-events: auto;
  opacity: 0;
  pointer-events: none;
}

.sidebar .nav-links li:hover .sub-menu.blank, 
.sidebar .nav-links li.active .sub-menu.blank {
  top: 50%;
  transform: translateY(-50%);
}

.sidebar.sidebar-close ~ .home-section {
  left: 60px;
  width: calc(100% - 60px);
}

推荐答案

是的,这种行为源于父母的.sub-menu个填充物.您可以更改被填充推开的子li元素的背景 colored颜色 .

您可以从.sub-menu个容器中删除填充,并相应地将其添加到您的列表项中(如果设计需要):

.sidebar .nav-links li .sub-menu li:nth-child(2) {
  padding: 6px 6px 0 50px;
}

.sidebar .nav-links li .sub-menu li:last-child {
    padding: 0 6px 14px 50px;
}

Css相关问答推荐

为什么图像加载请求没有显示在我的网络请求中?

隐藏div后缺少div的InnerHTML

使用背景滤镜时,伪元素出现在div之前

如何为多个背景和棋盘设置不同的大小

CSS子网格不显示行间距

当具有外部高度的网格项溢出时,为什么溢出滚动端口填充不应用于网格容器?

使用tailwind 将父div限制为其具有溢出的最短子级的高度

如果父元素是弹性元素,则不会显示带有纵横比的空div

如何使我的标语(h1元素)不居中对齐?

Vue.js 变量中的动态类变量

nth-child 在一个页面上工作,但不在另一个页面上

基于变量动态生成 CSS 类 - SCSS

如何制作一个居中的标题样式,其中换行符将最长的行排列在底部

调整屏幕大小时无法让我的视频背景保持不变

firefox overflow-y 不能使用嵌套的 flexbox

如何从 表格单元格中创建链接

在 Firefox 中删除额外的按钮间距/填充

单选按钮和标签显示在同一行

在移动网络上禁用捏zoom

背景图像可以大于 div 本身吗?