html - 将组件样式应用于页面中的最后一次出现
问题描述
我有一个自定义组件,它使用随附的样式文件自行格式化。在包含组件中,我生成了一系列自定义组件。我希望最后一个元素具有稍微不同的样式,但我更愿意从组件本身内部控制它。有可能吗?
我之前问过这个问题,但是当我正在寻找一个封装样式的 Angular 组件时,我得到了基于直接应用 CSS 的答案。
我得到的最接近的是申请:host(:last-child)
,但并没有真正让它发挥作用。
div.lower{ border-top: 1px solid gold; ... }
div.lower:host(:last-child){ border-top: 1px solid olive; ... }
我准备了一个Blitzy来进行实验。目的是使最后一个元素中间没有金色分隔线。
解决方案
由于div
是组件宿主元素的后代,您可以使用以下选择器:
:host(:last-child) div.lower // Applies the style on the last component instance
:host:not(:last-child) div.lower // Applies the style except on the last component instance
为了避免在最后一个组件实例上出现金色分隔符,请尝试以下样式:
div.lower {
display: flex;
justify-content: center;
min-width: 300px;
}
:host:not(:last-child) div.lower {
border-top: 1px solid gold;
}
请参阅此 stackblitz以获取演示。
推荐阅读
- java - 如何解决片段中的 Viewpager 问题?
- c# - 从外部程序集加载时,IServiceCollection 无法解析类型
- mysql - MySQL 授予本地 db 用户权限以允许远程主机使用 ansible
- php - 逻辑和代码codeigniter如何将页面查看注册过程的会话数据作为临时会话使用
- python - 在将日期从 obj 转换为 datetime 数据类型时在 python 中使用 Pandas,我没有正确转换日期。为什么?
- c# - C# Thread.Sleep() _PC 之间执行的其他时间
- java - HTTPS 证书(几乎)每周都会失效
- ios - 如何在 GoogleMobileAds 8.0 (Admob iOS sdk) 中使用 GADInterstitialAd?
- google-bigquery - BigQuery MERGE 查询不适用于空的 REPEATED 字段
- c - 在 C 中实现基本的 vtable