特定条件下的 CSS 悬停效果(即包含文本)

Posted

技术标签:

【中文标题】特定条件下的 CSS 悬停效果(即包含文本)【英文标题】:CSS hover effect on certain condition (ie contains text) 【发布时间】:2016-01-05 17:15:07 【问题描述】:

我希望我的 CSS 悬停样式仅在内部跨度(类“ag-header-group-text”)不为空(即显示文本)时发生。这只能通过css吗?

https://jsfiddle.net/N8qah/13/

<div class="ag-header-group-cell ag-header-group-cell-with-group" style="width: 80px;">
    <div class="ag-header-cell-resize"></div>
    <div class="ag-header-group-cell-label"><span class="ag-header-group-text">TEST</span><span class="ag-header-expand-icon"><svg  ><polygon points="0,0 10,5 0,10"></polygon></svg></span>
    </div>
</div>

更新:

我将我的 css 更改为这个,除非内部跨度不为空,否则它不会处于活动状态 - 唯一的问题是跨度被突出显示,而不是悬停发生在最外部的div

.ag-header-group-cell:hover  span.ag-header-group-text:not(:empty) 
    background-color: #00008A;

【问题讨论】:

【参考方案1】:

你可以定位任何子选择器,试试这个:

.ag-header-group-cell >*:hover 
     background-color: #00008A;

【讨论】:

不 - 似乎这杀死了所有悬停效果:)【参考方案2】:

是的,有可能:

a:hover div.toshow:not(:empty)  display:block; 

看看它的工作原理:

https://jsfiddle.net/N8qah/222/

查看有关:empty 和兼容性的更多详细信息:

https://developer.mozilla.org/es/docs/Web/CSS/%3Aempty

【讨论】:

谢谢 - 这更接近但不完全是我需要的。不过,我已经根据您的建议更新了问题。 如果我理解你很好,你不能做到,因为使用 CSS 你可以选择父元素。但是,:empty 仅在元素完全为空时才有效。空格、换行符等作为非空的。您需要 javascript 来查找元素,查看它是否为空访问父元素。使用 css 是不可能的。

以上是关于特定条件下的 CSS 悬停效果(即包含文本)的主要内容,如果未能解决你的问题,请参考以下文章

悬停时链接下的 CSS 三角形(没有 UL/LI/SPAN)?

CSS:如何阻止悬停效果推送我的文本?

28.CSS创意文本动画悬停效果|

28.CSS创意文本动画悬停效果|

使用 CSS3 悬停效果,如何将文本向左移动 5 个像素并向后移动?

Firefox下的高度为0悬停效果