【发布时间】:2016-10-08 10:56:07
【问题描述】:
我的 SASS 和通知有问题。我有 3 种类型的警报通知(危险、警告、成功),我希望显示这 3 种警报的最后一种类型(见下图右点)。提前感谢您的回复。
我的 SASS
#app-notification {
top: inherit;
bottom: 20px !important;
.alert {
padding: 10px;
margin-bottom: 20px;
border: 0;
border-radius: 0;
box-shadow: 0 0 4px rgba(0,0,0,.5);
background: #fff;
color: #263f5e;
&:last-of-type { margin-bottom: 0; }
}
.alert-danger {
border-bottom: 3px solid #ff3b30;
strong { color: #ff3b30; }
}
.alert-warning {
border-bottom: 3px solid #ffcc00;
strong { color: #ffcc00; }
}
.alert-info {
border-bottom: 3px solid #007aff;
strong { color: #007aff; }
}
.alert-success {
border-bottom: 3px solid #4cd964;
strong { color: #4cd964; }
}
}
// Test
#app-notification .alert-danger:not(:last-of-type) { opacity: .2; }
#app-notification .alert-success:not(:last-of-type) { opacity: .2; }
#app-notification .alert-warning(:last-of-type) { opacity: .2; }
【问题讨论】:
-
所有元素是否都属于同一类型(即它们都是
div或span)?如果是,那么last-of-type伪将不适合您,因为正如命名所暗示的那样,它仅选择父项下其类型的最后一个元素。您附加到伪的class选择器只是一个附加条件。也就是说,如果它也有给定的类,它将选择一个类型的最后一个元素,而不选择具有给定类的最后一个元素。 -
所有元素都是
div,有一个普通类alert,其他类alert-TYPE。实际上,只有last-of-type有效,而不是每种类型的last-of-type。 -
因为
type不是class。您正在寻找不存在的last-of-class选择器。使用 JS 解决这个问题。 -
我认为您误解了
last-of-type选择器。这里的类型是指元素类型,仅此而已。所以在你的alert元素中,都是div类型,所以只有一个last-of-type。
标签: css sass css-selectors