使用 CSS - ExtJs 进行鼠标悬停时如何更改面板上的图像?

Posted

技术标签:

【中文标题】使用 CSS - ExtJs 进行鼠标悬停时如何更改面板上的图像?【英文标题】:How to change image on panel when doing mouseover using CSS - ExtJs? 【发布时间】:2018-05-28 05:45:30 【问题描述】:

我正在尝试在使用 CSS 或 SASS 执行 mouseover/mouseleave 时更改图像。但是,要实现这一点,我总是可以做到:

header = panel.getHeader().getEl(); 然后这样做:

        //mouse enter event
        header.on('mouseover', function (e) 
       .......
       .......
       , me);

        //mouseleave event
        header.on('mouseleave', function (e) 
        ........
        , me);

但是,我正在尝试使用 CSS 或 SASS 来完成相同的功能。

基本上:

a) 加载手风琴时默认显示所有图像。 (图像 1 应该显示在面板 1 中)。

b) 如果面板展开 图像 2 应该显示并且它的折叠状态应该显示图像 1(在面板 1 上 - 其他面板的功能相同)。

c) 鼠标悬停时应显示 Image 2 和 mouseleave Image 1 应该显示(在面板 1 上)。

这是我目前使用的 CSS,它在执行鼠标悬停/鼠标离开时适用于第一个面板,但我不确定如何显示图像。

// Show IMAGE 1 by default
.x-panel-header-custom1 
url('http://www.iconhot.com/icon/png/brush-intense-messenger/256/msn-web-
2.png');


// SHOW IMAGE 2 when expanded or onmouseover
.x-panel-header-custom1:hover
 background: red;
background-image: 
 url('https://image.flaticon.com/icons/png/128/12/12195.png'); 

谁能告诉我我错过了什么?

这是工作 FIDDLE

注意:我不想对图片使用 Font awesome,其他任何 图像很好,就像我正在使用的一样。提前非常感谢!

【问题讨论】:

【参考方案1】:

行 cmets 在 CSS 中无效(块 cmets 是) - 实际上,在我发现这一点之前,您一直在质疑我的理智。

去除麻烦的行cmets时,如果你查看html,你会清楚地看到

.x-accordion-item .x-accordion-hd

选择器覆盖

.x-panel-header-custom1

选择器,因此如果您希望代码正常工作,您必须在所有类上使用 !important。像这样:

.x-panel-header-custom1 
 background-image: url('http://www.iconhot.com/icon/png/brush-intense-messenger/256/msn-web-2.png') !important;


.x-panel-header-custom1:hover 
  background: red;
 background-image: url('https://image.flaticon.com/icons/png/128/12/12195.png') !important; 


.x-panel-header-custom1-collapsed 
  background-image: url('https://image.flaticon.com/icons/png/128/12/12195.png') !important;

另外,我注意到您的第三个选择器(折叠的一个)缺少 header 字符串。

Fiddle

【讨论】:

@TechAbstraCt 在鼠标悬停时会显示图像重复多次。有没有办法解决这个问题? 是的,只需将 background-repeat: no-repeat; 添加到样式中即可。 我试着做背景重复:不重复;但它不起作用 jsfiddle.net/1Lcw0vjq/9 - 对于折叠的选择器 !important 是必需的,所以我将它添加到两者中。 我明白了,完美。再次感谢!

以上是关于使用 CSS - ExtJs 进行鼠标悬停时如何更改面板上的图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在悬停时获得实际的 DOM CSS 宽度? [复制]

在页面加载按钮上触发鼠标悬停事件,extjs3

你如何使css中悬停的区域更大

css如何设置鼠标悬停时每行显示的字数?

使用css将鼠标悬停在按钮上时如何更改站点背景图像?

悬停时:如何在 Extjs 的 textarea 字段中显示带有复制选项的工具提示