我有三个图像(透明PNG)
这是堆叠使用以下html/css
<div style="position: relative; left: 0; top: 0;">
<img src="img/main.png" style="position: absolute; top: 0; left: 0;" />
<img src="img/middle.png" style="position: absolute; top: 0; left: 0;"/>
<img src="img/center.png" style="position: absolute; top: 0; left: 0;"/>
</div>
得到这个:
我想添加这些图像(放大,边框,不透明度等)的每一个悬停效果。
一个正常的CSS放大悬停将是:
img {
-webkit-transition: all 1s ease; /* Safari and Chrome */
-moz-transition: all 1s ease; /* Firefox */
-ms-transition: all 1s ease; /* IE 9 */
-o-transition: all 1s ease; /* Opera */
transition: all 1s ease;
}
img:hover {
-webkit-transform:scale(1.25); /* Safari and Chrome */
-moz-transform:scale(1.25); /* Firefox */
-ms-transform:scale(1.25); /* IE 9 */
-o-transform:scale(1.25); /* Opera */
transform:scale(1.25);
}
这在这种情况下不起作用,因为悬停效果应用于整个图像,而不仅仅是图像部分(图像具有透明背景)。
我的问题是,有没有可能用CSS来设计不规则形状的透明图像?
jsfiddle:http://jsfiddle.net/h4mxysw5/
编辑:
好像有点混乱。我不想一次缩放所有三个图像。
例如-当悬停在中心图像,我想只是中心图像缩放(而不是所有)。
更新jsfiddle with border:http://jsfiddle.net/h4mxysw5/4/
9条答案
按热度按时间n53p2ov01#
我想你需要=> JSFiddle demo:)
r6vfmomb2#
一种可能的解决办法是:
(使用The HTML map element)
你可以用这种方式在任何类型的形式,矩形,三角形,多边形.
最困难的是划定Map,但有各种软件可以帮助您(GIMP)。
3j86kqsm3#
正如评论中所说,只有一个图像和其他2只与html/css。这里的小提琴,希望你需要的效果是这样的:)
https://jsfiddle.net/keypaul/8dr25184/
HTML
CSS
你只需要从大png中删除内部的小圆圈,改变内部甜甜圈的颜色,并在css中添加供应商前缀。
hsvhsicv4#
你必须做两件事。
div
中删除:hover
,并使用img
选择器为每个图像添加:hover
行为。更新
看看你可以用SVG做什么:
0aydgbwb5#
这里的主要问题是,你使用的所有图像都是相同的大小-所以,因为它们是坐在对方的顶部,你将永远只会徘徊在顶部的一个。仅仅因为图像是透明的,当你悬停在图像的任何部分时,它仍然会触发:hover。为了演示如何使用你自己的CSS,这是你如何在没有图像的情况下做到这一点:
在这里,你可以使用相同的CSS,但也可以使用图像作为“背景图像”来给予你想要达到的效果。
am46iovg6#
出于纯粹的好奇心,如果可以做到这一点,我只需要创建一个CSS只版本。虽然它没有使用OP所需的图像,但我仍然认为,作为
img
和/或JS
的替代方案,结果值得发布。在代码片段中,您将看到未着色和着色的版本。请做给给予您的意见.
(btw:在W7上的FF DE 44+、Chrome 46+和IE 11+中测试)
e7arh2l67#
使用JavaScript,您可以硬编码悬停区域,如下所示:
JavaScript
在这里,您可以使用变量
centerR
和middleR
指定悬停“正方形”的大小(应该发生悬停的图像的中心)。请注意,您还可以改进此代码,以便在图像增长时扩大悬停区域,这样,当您将鼠标悬停在放大的图像之外时,图像才会缩小。请注意,我故意对图像的所有宽度和高度进行了软编码:这允许更大的灵活性,如果你决定改变图片。使用以下HTML:
CSS:
这将产生以下结果(忽略屏幕捕获的像素化伪影):
> DEMO
6qfn3psc8#
尝试Pixel Selection:一个可以处理悬停时透明度的JQuery库。
(This不会工作创建与缩放图像,因为悬停区域将改变,也需要在同一域的图像)
np8igboo9#
Demo
我已经为三个div使用了z-index,每个div都有background-image
/*Largest Circle*/
Div 1 = z索引:1/*second Circle*/
Div 1 = z索引:2/*Middle Small Circle*/
Div 1 = z索引:3z-index
基本上是用来堆叠它,所以中间的圆在顶部,第二个圆在最大的圆和中间的小圆之间,最大的圆是最后这不会影响鼠标悬停在其他圆上,因为所有的圆都比它上面的圆大(在z-index
中),所以它们是可见和可悬停的。Div idallImg
用于设置align,size,因为allImg的所有子div都有宽度,高度百分比,它们将自动调整大小还请注意,您需要将图像裁剪为实际大小,如@Dave Gomez所说