关键词:
【中文标题】是否可以通过 CSS 将鼠标悬停在另一个元素上来更改 img src【英文标题】:Is it possible to change img src by hover on another element by CSS 【发布时间】:2018-08-08 20:36:35 【问题描述】:当div元素悬停时,CSS中是否可以更改img src?
<a class="template-image" href="/template-1978944/editor">
<div class="green"></div>
<div class="red"></div>
<div class="orange"></div>
<img src="/1978944/cover_small.jpg">
</a>
我试过了
a.template-image[href^="/template-1978944"] div.green:hover ~ img
content: url(/1978943/cover_small.jpg);"
a.template-image[href^="/template-1978944"] div.red:hover ~ img
content: url(/1978942/cover_small.jpg);"
【问题讨论】:
将“内容”更改为“背景”,并为图像本身使用透明图像 Changing image on hover with CSS/HTML的可能重复 【参考方案1】:您可以使用url
of background-image
尝试一些解决方法:
.orange
height:50px;
background:orange;
.img
width:400px;
height:200px;
.orange:hover + .img
background-image:url(https://lorempixel.com/400/300/)!important;
<div class="orange">Hover me!</div>
<div class="img" style="background-image:url(https://lorempixel.com/400/200/)"></div>
您还可以通过使用伪元素而不需要更改标记来创建更改src
的错觉(您只需根据您的代码调整用于正确定位新图像的CSS)
.container > div
display: inline-block;
height: 50px;
width: 50px;
.container
position: relative;
.orange
background: orange;
.red
background: red;
.green
background: green;
.orange:hover~img,
.red:hover~img,
.green:hover~img
visibility: hidden;
.orange:hover::after
content: url(https://lorempixel.com/400/200/);
position: absolute;
top: 50px;
left: 0;
.red:hover::after
content: url(https://lorempixel.com/400/220/);
position: absolute;
top: 50px;
left: 0;
.green:hover::after
content: url(https://lorempixel.com/400/300/);
position: absolute;
top: 50px;
left: 0;
<div class="container">
<div class="green"></div>
<div class="red"></div>
<div class="orange"></div>
<br>
<img src="https://lorempixel.com/400/200/">
</div>
【讨论】:
很遗憾我无法更改 html 代码 :( 这是 SaaS 的一部分,我只能更改 css。 这里应该是 3 个不同的 div,每个应该将 img src 更改为不同的。 @PavelBorodaIgnatenko 确定再次更新 :) @PavelBorodaIgnatenko 再次检查 ;) 结果应该和@Obsidian Age 建议的完全一样。【参考方案2】:你几乎拥有它。将'content'改为'background',并为图片src
使用透明图片
a.template-image[href^="/template-1978944"] div.green:hover ~ img
content: url(http://lorempixel.com/100/100/sports/);"
a.template-image[href^="/template-1978944"] div.orange:hover ~ img
content: url(http://lorempixel.com/100/100/cats/);"
a.template-image[href^="/template-1978944"] div.red:hover ~ img
content: url(http://lorempixel.com/100/100/nature/);"
<a class="template-image" href="/template-1978944/editor">
<div class="green">GREEN</div>
<div class="red">RED</div>
<div class="orange">ORANGE</div>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=">
</a>
更新:如果您需要原始图像,请将其图像用作默认背景。
【讨论】:
@PavelBorodaIgnatenko 但在这种情况下,您正在修改初始 src ...我认为您无法更改它?你需要依赖 CSS 吗? ...因为如果您能够更改 src,那么为什么不简单地使用 div 而不是 img 呢? @Temani Afif,也非常感谢你。我将结合这两个代码。你和这个。 @PavelBorodaIgnatenko 没有问题 :) 这也是一个很好的解决方案.. 但我认为您无法触摸 HTML 并更改图像 src ;) 因为如果可以的话,您可以拥有更简单的解决方案【参考方案3】:仅使用 CSS 无法在悬停元素时更改图像 src
属性。
但是,可以在 CSS 中悬停另一个元素时更改元素的 background-image
属性。如果您愿意使用带有背景的<div>
元素而不是<img>
元素,这将给您同样的效果。
这可以通过 general sibling combinator (~
) 来完成,如下所示:
.image
height: 100px;
width: 100px;
background-image: url('http://via.placeholder.com/100');
.green:hover ~ .image
background-image: url('http://via.placeholder.com/100/00ff00');
.red:hover ~ .image
background-image: url('http://via.placeholder.com/100/ff0000');
.orange:hover ~ .image
background-image: url('http://via.placeholder.com/100/ffa500');
<a class="template-image" href="/template-1978944/editor">
<div class="green">Green</div>
<div class="red">Red</div>
<div class="orange">Orange</div>
<div class="image"></div>
</a>
如果您无法更新 HTML,您将不得不依赖 JavaScript 解决方案。这可以通过首先选择带有 getElementsByTagName()
的图像,然后添加一个函数,在另一个 .onmouseover
期间更新图像的 .src
元素。
这可以在下面看到:
let image = document.getElementsByTagName('img')[0];
document.getElementsByClassName('green')[0].onmouseover = function()
image.src = 'http://via.placeholder.com/100/00ff00';
;
document.getElementsByClassName('red')[0].onmouseover = function()
image.src = 'http://via.placeholder.com/100/ff0000';
;
document.getElementsByClassName('orange')[0].onmouseover = function()
image.src = 'http://via.placeholder.com/100/ffa500';
;
<a class="template-image" href="/template-1978944/editor">
<div class="green">Green</div>
<div class="red">Red</div>
<div class="orange">Orange</div>
<img src="http://via.placeholder.com/100">
</a>
【讨论】:
很遗憾我无法更改 html 代码 :( 这是 SaaS 的一部分,我只能更改 css。 在这种情况下,不幸的是,您将不得不依赖 JavaScript 来更改悬停时的属性。我也会更新我的答案以将其悬停。 我添加了一个 JavaScript 解决方案 :)如何通过将鼠标悬停在同一页面上的图像上来触发 CSS 动画按钮
】如何通过将鼠标悬停在同一页面上的图像上来触发CSS动画按钮【英文标题】:Howtotriggeracssanimatedbuttonbyhoveringoveranimageonthesamepage【发布时间】:2013-08-2501:17:58【问题描述】:我的网站出现问题。在主页上,我有一张图片。图片... 查看详情
jQuery将div悬停在另一层下方
...athanotherlayer【发布时间】:2011-07-0922:45:19【问题描述】:是否可以忽略所有“高于”元素的div,这些div已通过jQuery绑定到它们?例如,我有一个绑定了悬停事件的元素A,但还有其他元素B、C、D位于元素A上方“绝对定位”。因此... 查看详情
通过 CSS 将鼠标悬停在父元素上时显示 :after
...:57:06【问题描述】:当我将鼠标悬停在父元素本身上时,是否可以display:block;:after伪元素?#myDivposition:relative;width:50px;height:50px;border-style:soli 查看详情
悬停时停止 CSS 动画
...菜单(#drop)时,会等待几秒钟,然后再向上移出视图。您可以通过将鼠标悬停在页面顶部的不同元素(#hover)上来返回菜单。它非常适合我,但有一个问题。当您加载页面时,您仍将鼠标悬停在#hover上,#drop在等待完成后会向上移动... 查看详情
如何将鼠标悬停在子元素上而不悬停在 CSS 中的父元素上?
...theparentinCSS?【发布时间】:2017-04-1909:59:51【问题描述】:是否可以将鼠标悬停在嵌套的子元素上而不触发父元素上的悬停?在下面的示例中,您会看到当您将鼠标悬停在子对象上时,父悬停效果仍然处于活动状态。我想对此进行... 查看详情
悬停和鼠标悬停的不同 CSS 过渡延迟?
...verandmouseout?【发布时间】:2011-08-2017:38:00【问题描述】:是否可以在“状态”之间使用具有不同延迟切换的CSS3转换?例如,我试图让一个元素在悬停时立即更高,然后在“mouseout”上等待一秒钟,然后再滑回元素的初始高度。演... 查看详情
当我将鼠标悬停在另一个 div 上时,如何使文本出现在一个 div 中?
】当我将鼠标悬停在另一个div上时,如何使文本出现在一个div中?【英文标题】:HowdoImaketextappearinadivwhenIhoveroveranother?【发布时间】:2021-02-0313:38:15【问题描述】:我已经为我的网站创建了一个主页,其中包含所有方面的概述。... 查看详情
悬停在鼠标离开后仍然存在的 CSS 样式
...移开或悬停在另一个主条目上,悬停就会丢失。我想知道是否有某种方法可以在鼠标离开后轻松保持这种悬停状态。这不是我可以扔掉的东西,所以我非常有兴趣扩展它以支持即使在鼠标离 查看详情
jQuery - 具有悬停效果的多个项目
...】:在CSS中,我有几个带有悬停效果的DIV项目。如果我将鼠标悬停在一个元素上,则该元素具有另一种背景颜色。如果我将鼠标悬停在另一个项目上,则之前选择的项目具有默认背景颜色,而不悬停。如何使用jQuery做到这一点?... 查看详情
您可以将 CSS 悬停效果应用于不是悬停元素的子元素的元素吗?
...【发布时间】:2011-06-0108:16:56【问题描述】:我不确定这是否可能。我现在正在使用CSS3动画,我需要将鼠标悬停在会影响页面上其他div元素(非子元素)的链接上。我不确定是否有解决方法。<stylet 查看详情
是否可以将 $(this) 与非子元素结合使用?
】是否可以将$(this)与非子元素结合使用?【英文标题】:Isitpossibletocombine$(this)withanonchildelement?【发布时间】:2012-09-2716:43:46【问题描述】:我有一个<divs>的列表与同一类。每个<li>中有两个<divs>。... 查看详情
:悬停在一个元素上来改变另一个?
】:悬停在一个元素上来改变另一个?【英文标题】::hoveronanelementtochangeanother?【发布时间】:2014-02-0216:29:38【问题描述】:我有这个条形图,当我悬停在特定条形图上时,我想将“测试div”更改为不同的背景颜色和内容本身。... 查看详情
使(图像)向右移动并旋转 45 度,同时将鼠标悬停在另一个(图像)上
】使(图像)向右移动并旋转45度,同时将鼠标悬停在另一个(图像)上【英文标题】:makea(image)movetotherightandrotate45degreeswhilehoveringoveranother(image)【发布时间】:2017-04-2316:55:51【问题描述】:我想将鼠标悬停在图像(音乐专辑)... 查看详情
将鼠标悬停在一个上但影响另一个 CSS
...做(转换:比例(1.2);过渡:所有0.9秒缓进出;))。是否可以使用css或也需要javascript?我的代码:<!DOCTYPEht 查看详情
使用 css 将鼠标悬停在第一个子元素上时更改其他子元素
】使用css将鼠标悬停在第一个子元素上时更改其他子元素【英文标题】:Changingotherchildelementswhenhoveringoverfirstchildusingcss【发布时间】:2013-02-0502:18:06【问题描述】:我试图在div的第一个孩子上使用悬停来影响第三个孩子。有谁知... 查看详情
在悬停时显示一个 DIV,但在另一个悬停的 DIV 内。使用 CSS
...2-2804:24:27【问题描述】:我正在尝试获取它,因此当我将鼠标悬停在一个DIV上时,另一个DIV将显示在该DIV内但显示在当前内容上。因此,如果我有一个500x500像素的DIV并显示书籍封面, 查看详情
将 jqueryui 手风琴事件处理程序从“单击”动态更改为“鼠标悬停”
】将jqueryui手风琴事件处理程序从“单击”动态更改为“鼠标悬停”【英文标题】:Dynamicallychangingjqueryuiaccordioneventhandlerfrom"click"to"mouseover"【发布时间】:2011-05-2120:10:45【问题描述】:我有一种情况,我希望能够... 查看详情
悬停保持活动状态,直到鼠标悬停在另一个可悬停对象上
】悬停保持活动状态,直到鼠标悬停在另一个可悬停对象上【英文标题】:Hoverstaysactive,untilmouseoveranotherhoverableobject【发布时间】:2013-05-1909:19:51【问题描述】:假设我有三个盒子。每个都可以悬停,当悬停时,它们的背景颜色... 查看详情