我正在寻找一个带颜色的图标(并将成为链接),并将其设为灰度,直到用户将鼠标置于该图标上(然后该图标将对该图像进行着色)。
是否可以这样做,并且以IE和Firefox支持的方式进行?
有多种方法可以完成此操作,下面将通过一些示例详细说明。
img.grayscale {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
img.grayscale {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
/* Firefox 3.5+, IE10 */
filter: gray;
/* IE6-9 */
-webkit-filter: grayscale(100%);
/* Chrome 19+ & Safari 6+ */
-webkit-transition: all .6s ease;
/* Fade to color for Chrome and Safari */
-webkit-backface-visibility: hidden;
/* Fix for transition flickering */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
svg {
background: url(http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s400/a2cf7051-5952-4b39-aca3-4481976cb242.jpg);
}
svg image {
transition: all .6s ease;
}
svg image:hover {
opacity: 0;
}
<p>Firefox, Chrome, Safari, IE6-9</p>
<img class="grayscale" src="http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s1600/a2cf7051-5952-4b39-aca3-4481976cb242.jpg" width="400">
<p>IE10 with inline SVG</p>
<svg xmlns="http://www.w3.org/2000/svg" id="svgroot" viewBox="0 0 400 377" width="400" height="377">
<defs>
<filter id="filtersPicture">
<feComposite result="inputTo_38" in="SourceGraphic" in2="SourceGraphic" operator="arithmetic" k1="0" k2="1" k3="0" k4="0" />
<feColorMatrix id="filter_38" type="saturate" values="0" data-filterid="38" />
</filter>
</defs>
<image filter="url("#filtersPicture")" x="0" y="0" width="400" height="377" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s1600/a2cf7051-5952-4b39-aca3-4481976cb242.jpg" />
</svg>
您可以在此处找到与此技术相关的文章。
这种方法需要图像的两份副本:一份是灰度的,另一份是全彩色的。使用CSS:hover
psuedoselector,您可以更新元素的背景以在两者之间切换:
#yourimage {
background: url(../grayscale-image.png);
}
#yourImage:hover {
background: url(../color-image.png};
}
#google {
background: url('http://www.google.com/logos/keystroke10-hp.png');
height: 95px;
width: 275px;
display: block;
/* Optional for a gradual animation effect */
transition: 0.5s;
}
#google:hover {
background: url('https://graphics217b.files.wordpress.com/2011/02/logo1w.png');
}
<a id='google' href='http://www.google.com'></a>
这也可以通过以hover()
相同方式使用基于Java的悬停效果(例如jQuery的功能)来实现。
在去色库是一个公共库,可以让您轻松定元素或图像的灰度版本和全彩色版本之间切换。
问题内容: 有时,我可以选择使用CSS元素:悬停或JavaScript onmouseover来控制页面上html元素的外观。考虑以下情况,其中div包装了输入 我希望输入将鼠标光标悬停在div上时更改背景色。CSS方法是 JavaScript方法是 每种方法的优点和缺点是什么?CSS方法是否适用于大多数Web浏览器?JavaScript比CSS慢吗? 问题答案: :hover的问题是IE6仅在链
问题内容: 我试图当鼠标移到图像的左下方时出现一个小框。在该框内,将有一个指向其他页面的链接。 这有点类似于我想要的东西,但是盒子要更小并且不连接到图像的边框。 我已经尝试了一切,但找不到答案。而且我不想使用工具提示,更不用说我没有任何JavaScript知识了。我真的希望这是CSS。 问题答案: 这是在CSS3中使用伪元素。 HTML: CSS: 相反,这是使用jquery达到相同结果的一种方式
问题内容: 我的问题.. 我有许多图像(在超链接中),并且我希望每个图像在鼠标悬停时变暗(即,使用具有高不透明度或某些功能的黑色蒙版),然后在mouseout上恢复正常。但是我想不出最好的方法。 我试过了.. jQuery颜色动画和一些javascript参考。 使用javascript设置图像的不透明度。 我不要 图像从80%的不透明度开始,然后在鼠标悬停时达到100%(这很容易)。 要在2张图
问题内容: libgdx中是否有任何侦听器可以让我检测到鼠标悬停而不是鼠标悬停。在场景2D的按钮类中,您有2种方法isOver和isPressed,但是它们执行相同的操作…还有其他问题吗?还有另一种方法来检测鼠标悬停在actor上吗? 问题答案: 还有的可以连接到和它提供的事件,如下面的: 该事件从根本上来说意味着鼠标开始悬停在角色上,意味着它“离开”了角色的区域。它还有一个事件,您可以使用该事件
我有一系列使用d3创建的行。我写了一些和事件事件。 当I时,事件通过增加行的值正常工作。 但是在上,在我编写代码的地方,事件不能正常工作,将值设置为初始值。 小提琴 帮我修一下。
问题内容: 我有一张图片: 然后,我将其显示在屏幕上: 如何检测鼠标是否在触摸图像? 问题答案: 使用获得描述你的边界,然后使用来检查,如果鼠标光标这里面。 例: