如何删除下拉菜单上的填充

Veg*_*ega 5 css bootstrap-4 angular

我正在寻找一种<ul>在列表为空时删除“下拉菜单”标签上的填充的方法,因此没有显示而不是与填充相对应的狭窄空间。我不想这样做.dropdown{padding: 0},因为它会在它不为空时删除必要的填充。但.dropdown:empty{padding:0}不起作用,因为内容不为空,仅由 *ngIf 过滤(我猜,虽然我知道 Angular 从 DOM 中删除了元素)。

<ul role="menu" class="dropdown-menu">
    <li *ngFor="let option of options">
      <span *ngIf="option.condition;then template1 else template2">
      </span>
      <ng-template #template1>some content</ng-template>
      <ng-template #template2>some content</ng-template>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

And*_*hiu 5

只需将 on 父级替换paddingmarginson 第一个和最后一个子级即可:

.dropdown-menu {
   padding-top: 0;
   padding-bottom: 0;
}
.dropdown-menu > li:first-child {
   margin-top: 15px;
}
.dropdown-menu > li:last-child {
   margin-bottom: 15px;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这里的选择器是通用的。您需要更改它们以适用于您的特定示例,并且不影响其他.dropdown-menu可能不应该受到影响的实例。
另外,15px是通用尺寸。您应该在顶部和底部填充中使用相同的值和单位.dropdown-menu