通过css悬停时更改背景[重复]

Posted

技术标签:

【中文标题】通过css悬停时更改背景[重复]【英文标题】:Changing the background when hovering via css [duplicate] 【发布时间】:2015-11-24 05:24:39 【问题描述】:

我在一个圆圈中有一个复选标记,当您将鼠标悬停在它上面时,我希望更改复选标记以及背景。

这里是fiddle

但是,当我检查实际复选标记 stemkick 时,它不再改变。

我试过了

#checkmark_stem:hover~#checkmark_kick 
     background-color:white;
     -webkit-transition: color 300ms, background 500ms, border-color 700ms;
                transition: color 600ms, background 1000ms, border-color 1400ms;


#checkmark_kick:hover~#checkmark_stem 
     background-color:white;
     -webkit-transition: color 300ms, background 500ms, border-color 700ms;
                transition: color 600ms, background 1000ms, border-color 1400ms;


#checkmark_stem:hover~#checkmark_circle 
      background:#526F35;
     border-color:#526F35;
     color:transparent;
     -webkit-transition: color 300ms, background 500ms, border-color 700ms;
                transition: color 600ms, background 1000ms, border-color 1400ms;

但由于某种原因,它只改变了踢球而不改变圆圈,而且看起来有点太复杂和太多的代码行。有没有简单的方法在css中做到这一点?我知道在 JS 中它会很简单。

谢谢!

【问题讨论】:

试试这个 SO 问题:***.com/questions/18813299/… 但那是一个图像,如果我只想使用 css 怎么办? 【参考方案1】:

您想使用 .checkmark:hover 而不是 .checkmark_circle:hover

.checkmark 

    display:inline-block;
    width: 60px;
    height:60px;
    border-radius:50%;
       -ms-transform: rotate(45deg); 
    -webkit-transform: rotate(45deg); 
    transform: rotate(45deg);



.checkmark:hover * 
     -webkit-transition: color 300ms, background 500ms, border-color 700ms;
                transition: color 600ms, background 1000ms, border-color 1400ms;    



.checkmark:hover .checkmark_circle 
     background:#526F35;
     border-color:#526F35;
     color:transparent;



.checkmark:hover #checkmark_stem 
     background-color:white; 


.checkmark:hover #checkmark_kick 
     background-color:white;


.checkmark_circle 
    position: absolute;
    width:60px;
    height:60px;
    border-radius:50%;
    left:0;
    top:0;
     border:0.15em solid #939393;


#checkmark_stem 
    content:"";
    position: absolute;
    width:8.19px;
    height:24.55px;
    background-color:#939393;
    left:29.7px;
    top:16.2px;


#checkmark_kick 
    content:"";
    position: absolute;
    width:8.18px;
    height:8.18px;
    background-color:#939393;
    left:22.6px;
    top:32.4px;

这里是fiddle

【讨论】:

谢谢!悬停后的 * 是什么意思? * 是子元素的通配符。 .checkmark:hover * 会将 -webkit-transition 应用于悬停的 .checkmark 内的每个元素。这样你就只有一次转换,而不是在三个单独的行上。【参考方案2】:

您应该将悬停条件应用于 .checkmark 类而不是子元素(请参阅http://jsfiddle.net/jLa71sah)

所以不是.checkmark_circle:hover ~#checkmark_stem.checkmark:hover #checkmark_stem

【讨论】:

以上是关于通过css悬停时更改背景[重复]的主要内容,如果未能解决你的问题,请参考以下文章

鼠标悬停时更改背景图像[重复]

在 CSS 中悬停时更改 img src SVG [重复]

悬停UWP时更改按钮颜色[重复]

使用 CSS 更改 .png 颜色 [重复]

悬停时继续 CSS3 关键帧动画/悬停时停止重复

悬停时div的背景图像转换不起作用[重复]