离子项目颜色和 href 不起作用

ionic-item color and href not working

我开始了一个基于侧边菜单模板的离子项目。我正在尝试更改侧边菜单每个元素的背景颜色(我希望每个项目都具有不同的颜色)。

我尝试添加离子颜色class:

<ion-side-menu side="left">
    <ion-header-bar class="bar-stable">
      <h1 class="title">Left</h1>
    </ion-header-bar>
    <ion-content>
      <ion-list>
        <ion-item class="positive-bg" nav-clear menu-close ng-click="login()">
          Login
        </ion-item>
        <ion-item class="calm-bg" nav-clear menu-close href="#/app/search">
          Search
        </ion-item>
        <ion-item class="assertive-bg" nav-clear menu-close href="#/app/browse">
          Browse
        </ion-item>
        <ion-item nav-clear menu-close class="balanced-bg" href="#/app/playlists">
          Playlists
        </ion-item>
      </ion-list>
    </ion-content>

它适用于登录元素,但不适用于其他元素。删除其他元素上的 href 属性有效...我怎样才能拥有背景色和 href 元素?

问题是 ion-item 指令呈现 a 元素,如果它有 href 属性,则里面有 class .item-content。您应用于 ion-item 元素的 classes 定义如下:

.assertive-bg {
  background-color: #ef473a;
}

同时 class ionic 将这些内部链接的样式定义为

.item-complex .item-content, .item-radio .item-content {
  position: relative;
  z-index: 2;
  padding: 16px 49px 16px 16px;
  border: none;
  background-color: white;
}

后面的规则具有更高的 specificity,因此它优先于简单的 .assertive-bg class 规则。

要解决此问题,您需要手动创建一些额外的规则:

.item-complex.assertive-bg .item-content {
  background-color: #ef473a;
}

演示: http://plnkr.co/edit/bbUel2goJGYy8fv0ltXm?p=preview


UPD。 brandyshea 提供了更好的解决方案,即如何在不重复颜色值的情况下重载样式。不过,为了便于解释,我会保留我的答案。

具有 href 属性的 ion-item 呈现不同。有关 为什么 的更多信息,请参阅 dfsq 的回答

你可以做的是不使用 ion-list 指令,而是使用 类:

<ion-content>
    <ul class="list">
        <a href="" class="item positive-bg" nav-clear menu-close ng-click="login()">Login</a>
        <a href="#/app/search" class="item calm-bg" nav-clear menu-close>Search</a>
        <a href="#/app/browse" class="item assertive-bg" nav-clear menu-close>Browse</a>
        <a href="#/app/playlists" class="item balanced-bg" nav-clear menu-close>Playlists</a>
    </ul>
</ion-content>

Demo on Codepen

有几种方法可以做到这一点。这是另一种方式:

将自定义 class 添加到您的侧边菜单列表:

<ion-list class="sidemenu-list">

然后告诉 item-content 从 item 继承 background-color:

.sidemenu-list .item-complex .item-content { 
  background-color: inherit;
}

Codepen demo