离子项目颜色和 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>
有几种方法可以做到这一点。这是另一种方式:
将自定义 class 添加到您的侧边菜单列表:
<ion-list class="sidemenu-list">
然后告诉 item-content 从 item 继承 background-color:
.sidemenu-list .item-complex .item-content {
background-color: inherit;
}
我开始了一个基于侧边菜单模板的离子项目。我正在尝试更改侧边菜单每个元素的背景颜色(我希望每个项目都具有不同的颜色)。
我尝试添加离子颜色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>
有几种方法可以做到这一点。这是另一种方式:
将自定义 class 添加到您的侧边菜单列表:
<ion-list class="sidemenu-list">
然后告诉 item-content 从 item 继承 background-color:
.sidemenu-list .item-complex .item-content {
background-color: inherit;
}