【问题标题】:no hover action on transparent area of png images html csspng图像的透明区域没有悬停动作html css
【发布时间】:2013-01-25 15:52:39
【问题描述】:

我的网页上有一个 png 图片,它的形状是菱形,所以图片的四个角是透明的...

每当我将鼠标悬停在图像上时,我都会让它向左和向上移动 -10px

#one{
    position:relative;
    top:10px;
    left:-234px;
    float:left;
    -webkit-transition: all .2s ease-out;
}

#one:hover{
    top:0px;
    left:-244px;
    -webkit-filter:opacity(0);
}

我要做的就是不要通过将鼠标悬停在透明区域上来移动图像...

有没有可能...我想使用 css 或 javascript... 我不知道 jquery 所以如果你告诉我 jquery ans 请告诉我如何在我的 html 页面中链接它...

【问题讨论】:

    标签: javascript html css png transparent


    【解决方案1】:

    将其添加为 div 的背景并将悬停伪类应用于该 div。

    HTML:

    <div id="one"></div>
    

    CSS:

    #one {
      position:relative;
      top:10px; 
      left:-234px; 
      float:left;
      -webkit-transition: all 0.2s ease-out;
      background:url(__path_of_image__);
    }
    #one:hover {
      top:0px; 
      left:-244px; 
      -webkit-filter:opacity(0);
    }
    

    【讨论】:

      【解决方案2】:

      我建议在旋转 45 度的图像前面添加一个附加元素,然后将该元素用于悬停动作。

      这将使您仅在将鼠标悬停在菱形上时才能移动图像。

      请注意,如果没有额外的逻辑,这只适用于支持 CSS3 转换的现代浏览器(Webkit、Mozilla 和 IE10)。

      #one-wrapper{
          position: absolute;
          top: 50px;
          left: 50px;
          height: 100px;
          width: 100px;
      }
      
      #one{
          position: absolute;
          top: 0;
          left: 0;
          height: 100px;
          width: 100px;
          z-index: 1;
          -webkit-transition: all 0.2s ease-in-out;
          -moz-transition: all 0.2s ease-in-out;
          transition: all 0.2s ease-in-out;
      }
      
      #one-action{
          position: absolute;
          top: 0;
          left: 0;
          height: 70px;
          width: 70px;
          -webkit-transform: rotate(45deg);
          -moz-transform: rotate(45deg);
          transform: rotate(45deg);
          -webkit-transform-origin: 50px 50px;
          -moz-transform-origin: 50px 50px;
          transform-origin: 50px 50px;
          z-index: 2;
      }
      
      #one-action:hover,
      #one-action:hover + #one{
          top: -10px;
          left: -10px;
      }
      <div id="one-wrapper">
        <span id="one-action"></span>
        <img id="one" src="image-url.png" alt="" />
      </div>

      根据需要更新顶部/左侧位置。

      【讨论】:

      • 我喜欢你的建议,但实际上这只是一个问题.. 我还有 4 个以上的形状,它们与菱形没什么不同(想象从正方形的左上角到右下角和左下角的对角线是填充离开角落一点点......)
      • 哦,好吧 - 所以这个解决方案并没有真正的帮助!我认为没有办法使用 HTML/CSS 动态地“忽略”图像的透明部分。您可以使用自定义图像 &lt;map&gt; 元素,但这需要为每个不同的图像自定义参数......抱歉,我无法提供更多帮助。
      • sad :( 但是有没有办法使用javascript创建一个形状,它有纯色,只有4个角......我们可以使用javascript创建它并在鼠标悬停时移动10px.. ..
      • HTML 标记(由 CSS 或 Javascript 类似的形状)本质上是矩形的,因此任何具有 4 个角的形状通常都是可行的。然而,解释所有选项可能超出了这些 cmets 的范围。我建议您查看所有可用的 CSS3 变换属性 here 并查看(如上面使用的旋转属性)您是否可以使用它们将 &lt;span id="one-action"&gt;&lt;/span&gt; 元素塑造/倾斜为每个图像所需的形状。跨度>
      【解决方案3】:

      你最好的选择是HTML Image maps(它是为此目的而创建的),如果你出于某种原因真的不喜欢它,你也可以选择SVG

      【讨论】:

      • 我使用了图像映射,我猜它是用于创建链接...我想在悬停时平滑移动形状(webkit 过渡)...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      相关资源
      最近更新 更多