javascript - css "onmouseover"事件如何工作?

标签 javascript css hover onmouseover onmouseout

更新- 抱歉,我应该提供我看到效果的网站的链接。给你 - http://www.w3schools.com/Css/css_image_transparency.asp

我在那里看到的代码(以及这个问题的基础)如下 -

    <img src="klematis.jpg" style="opacity:0.4;filter:alpha(opacity=40)"
onmouseover="this.style.opacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.opacity=0.4;this.filters.alpha.opacity=40" />

原题如下-

我一直在寻找无需使用 JS 即可完成的翻转效果,我偶然发现了教授图像不透明度设置的 w3schools 网站。在代码中,没有涉及js,它只是纯css。

我什至尝试在我的网页中使用相同的代码(目前还没有任何 js),我注意到该代码恰好在 chrome 和 IE 7.0 中都能完美运行。该代码有一个“onmouseover”事件和另一个“onmouseout”事件,以根据不透明度设置提供悬停效果。

想知道这些效果(onmouseover 和 onmouseout)是否 - 1.纯CSS 2. 符合标准(xhtml 1+ 和 css2) 3.是否有黑客攻击

我仍然不敢相信这些东西可以在 ie7 上运行,并且想知道为什么没有关于这些事件的文档。

最佳答案

CSS 中没有这样的“onmouseover”事件或属性,那是 JavaScript。 CSS 使用“:hover”伪类来处理鼠标悬停事件。一个简单的例子,

HTML:

<div id="someid">I'm a random div.</div>

CSS:

#someid {
    background: #fff;
}

#someid:hover {
    background: #000;
}

在此示例中,当您将鼠标悬停在 #someid 元素上时,它的背景将从白色变为黑色。

这是在 CSS 中处理鼠标悬停事件的正确方法。是standards compliant并且适用于所有现代浏览器(以及一些旧版浏览器)。

旁注:它在 IE6 中并不总是有效,IE6 仅在应用于 anchor 标记(“a:hover”等)时识别“:hover”伪类。

根据对您问题的更新:

<img src="klematis.jpg" style="opacity:0.4;filter:alpha(opacity=40)"
onmouseover="this.style.opacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.opacity=0.4;this.filters.alpha.opacity=40" />

那就是用JavaScript来改变样式。唯一的 CSS 部分是 style='...' 部分。 onmouseoveronmouseout 中的文本是 JavaScript。

要用纯CSS做你想做的事,应该是这样的,

<html>
<head>
    <style>
    img.opacity-image {
        opacity: 0.4;
        filter:alpha(opacity=40); /* This is IE specific and NOT standards complaint */
    }

    img.opacity-image:hover {
        opacity: 1;
        filter:alpha(opacity=100); /* Again, 'filter:' is IE specific. */
    }
    </style>
</head>
<body>
    ...
    <img src="klematis.jpg" class="opacity-image" />
    ....
</body>
</html>

opacity 是 CSS3,仅 modern browsers 支持(IE6、7、8不支持)。您可以使用 filter:... 让不透明度在 IE 中工作(虽然它不能正确处理 PNG,但是因为您使用的是 JPG,所以这不是问题),但是您的代码是不符合技术标准,因为“filter”不在 CSS 标准中。不过这通常无关紧要,因为它仍然可以在任何现代浏览器中正确呈现。

关于javascript - css "onmouseover"事件如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952890/

相关文章:

css - 如何在没有很多类的情况下让页脚停留在每页的底部?

css - 如何在父元素和子元素上设置 CSS 悬停效果

javascript - Google Sheet 函数计算余额

javascript - 编写适用于客户端 javascript 和服务器端 NodeJs 模块的 javascript 代码

javascript - 使应用程序中加载的 iframe 显示移动网站?

css - 如何将线性渐变背景应用于 IE9 中的表格行?

ios - CSS :hover iOS - on/off

html - div高度的过渡效果

javascript - 单击输入框显示打开文件对话框但不单击选择文件按钮

javascript - Angular 6/Javascript - 在 (nglick) 中调用两种方法。组件和Js