【问题标题】:"svg:hover path" is only working on the last svg"svg:hover path" 仅适用于最后一个 svg
【发布时间】:2017-02-03 22:39:51
【问题描述】:

我正在尝试使用响应式徽标,悬停时颜色会发生变化。

标志的三个版本通过媒体查询弹出和弹出,都需要相同的效果,但只有最后一个 svg 有效

HTML:

<section class="welcome">

        <span id="slide">

            <svg id="RH1" data-name="RH1" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 158.3">...</svg>

            <svg id="RH2" data-name="RH2" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.2 143">...</svg>

            <svg id="RH3" data-name="RH3" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 143.9">...</svg>

        </span>

</section>

CSS:

svg {
    width:600px;
    height:115px;
    position:fixed;
    top:calc(50% - 50px);
    left:50%;
    margin-top:-56.5px;
    margin-left:-300px;
    cursor:pointer;
    fill:#3c9fd9;
}

svg:hover path {
    fill:#fff !important;
}

#RH2, #RH3 {opacity:0;}

@media only screen and (max-width:1100px) {#RH1, #RH3 {opacity:0;}#RH2 {opacity:1;}}
@media only screen and (max-width:570px) {#RH1, #RH2 {opacity:0;}#RH3 {opacity:1;}}

提前谢谢你!

【问题讨论】:

  • “但只有最后一个 svg 有效” - 这是因为您将它们全部放在同一位置上 - 所以很自然,您的鼠标光标只会“触摸”最佳。如果你想让它起作用,那么你不能只改变“其他”的不透明度,你还需要把它们放在 z 轴的下方。
  • 噢!谢谢CBroe,我知道它必须很简单。感谢您的帮助

标签: html css svg hover responsive


【解决方案1】:

在这里您可以找到working pen as well

不要使用opacity 来“隐藏”其他元素,而是在要隐藏的元素上尝试display: none,从而使您想要的徽标始终可以悬停在顶部。

【讨论】:

  • 太棒了!谢谢伊尔达普特! - 只是出于好奇,为什么有额外的媒体查询会有什么不同?会不会只是退回到默认的 css 代码?
  • 老实说,我无法告诉你发生了什么,但是我忽略了你有#RH2, #RH3 {opacity:0;},当那里也改为#RH2, #RH3 {display:none;}时,它工作了,笔更新了,谢谢你的检查!
猜你喜欢
  • 2013-03-20
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多