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

Posted

技术标签:

【中文标题】如何删除下拉菜单上的填充【英文标题】:How to remove the padding on a dropdown-menu 【发布时间】:2017-12-12 22:16:54 【问题描述】:

我正在寻找一种在列表为空时删除“下拉菜单”<ul> 标记上的填充的方法,因此没有显示任何内容,而不是显示对应于填充的狭窄空间。 我不想做.dropdownpadding: 0,因为当它不为空时它会删除必要的填充。但是.dropdown:emptypadding: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>

【问题讨论】:

你可能对 javascript 或/和 jQuery 有很好的了解,所以只需检查 .dropdown-menu 或其他 div 是否有子元素...如果现在,设置 .css('padding','0px') .dropdown-menu 中删除填充并使用li 或其中的内容的填充,这样如果没有li 就没有填充 【参考方案1】:

只需将父级上的padding 替换为第一个和最后一个子级上的margins

.dropdown-menu 
   padding-top: 0;
   padding-bottom: 0;

.dropdown-menu > li:first-child 
   margin-top: 15px;

.dropdown-menu > li:last-child 
   margin-bottom: 15px;

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

【讨论】:

您给了我使用内容的想法,而不是我顽固地试图操纵的“下拉菜单”。 :last-child/:first-child 没有用,但是将 template1 和 template2 内容的类跨越了 margin-top:0.5em ; margin-bottom:0.5em 成功了!

以上是关于如何删除下拉菜单上的填充的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firefox 中删除 SELECT/OPTION 下拉控件上的虚线?

从相邻下拉列表的单元格中输入数据时,如何删除填充颜色?

如何从表格的下拉菜单中删除先前选择的选项?

Jquery 删除一个下拉菜单中除第一个option之外的所有option

如何从 jQuery Chosen 选择下拉菜单中隐藏或删除选项

如何创建使用 PHP 从数据库中删除行的下拉菜单?