Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 鼠标悬停时更改img_Javascript_Html_Css_Image_Hover - Fatal编程技术网

Javascript 鼠标悬停时更改img

Javascript 鼠标悬停时更改img,javascript,html,css,image,hover,Javascript,Html,Css,Image,Hover,使用CSS,您可以使用:hover更改背景。 你能用JavaScript做同样的事情吗 比方说,你用JavaScript附加了一个img,你想在用户每次悬停在它上面时都改变这个图像,你能只用CSS吗?我已经尝试了这两种方法(onmouseover和JS:hover),但每次“新图像”都会被JavaScript创建的img卡住 有没有办法在旧img的基础上替换“新img”? 这是密码 //get api fetch(api) .then(function (res) { return

使用CSS,您可以使用:hover更改背景。 你能用JavaScript做同样的事情吗

比方说,你用JavaScript附加了一个img,你想在用户每次悬停在它上面时都改变这个图像,你能只用CSS吗?我已经尝试了这两种方法(onmouseover和JS:hover),但每次“新图像”都会被JavaScript创建的img卡住

有没有办法在旧img的基础上替换“新img”? 这是密码

//get api
fetch(api)
  .then(function (res) {
    return res.json();
  })
  .then(function (json) {
    dataFunction(json); 
  });

dataFunction(data){
poster.innerHTML = data.poster
}

每次我将鼠标悬停在想要用CSS更改背景的图像上时,新的背景都会设置在API海报的背面,尽管您可以使用两个图像标签
onhover
您可以更改图像的可见性

.container:hover .second-img {
  visibility: visible;  /*showing second image on hover */
  opacity: 1;
}
*{
保证金:0;
填充:0;
边界:0;
}
.集装箱{
位置:相对位置;
高度:300px;
宽度:257px;
}
.第二次img{
位置:绝对位置;
排名:0;
底部:0;
左:0;
右:0;
背景:rgba(291061540.72);
颜色:#fff;
可见性:隐藏;
不透明度:0;
转换:不透明度.3s,可见性.3s;
}
.容器:悬停。第二个img{
能见度:可见;
不透明度:1;
}

例如,如果它是背景图像,您可以使用css更改它,如

.myImageClass:hover {
   background-image: new_image.jpg;
}
或者您可以添加一个伪元素,如:

.myClass::after {
   background-image: old_image.jpg;
}
.myClass:hover::after {
   background-image: new_image.jpg;
}
这取决于你的结构,我说不准

至于Javascript,我不能理解你的代码。。。您得到一个JSON对象作为服务器响应,因此data.poster值可能不是正确的html代码。或者,对我来说,最好只获取带有图像源地址的平面文本,然后将其插入到img.src属性中:

poster.src = data.imageSrc;

此外,还要验证和/或更改z索引,这可能是在上一张图像的背面显示新图像的原因。

至少有两种方法可以解决此问题。第一个是纯
css
,第二个是纯
javascript
。 让我们看一看第一个,您有从
api
获取的
data.poster
,然后将其作为命名为poster的对象的
innerHtml
属性插入。我不知道什么是你的
api
,但是你可以将图像直接插入到你的html中,你可以知道如何将它插入
style
标记中。让我解释一下!我想你的
数据.海报可能是

data.poster = '<img src="image_url"/>'
那么你的代码必须是这样的

//get api
fetch(api)
  .then(function (res) {
    return res.json();
  })
  .then(function (json) {
    dataFunction(json); 
  });

dataFunction(data){
poster.classNames.add('image_on_hover')
poster.innerHTML += 'data.poster = '<div class="image_on_hover">...</div><style> .image_on_hover{background-image: url("first_url");} .image_on_hover:hover{background-image: url("second_url");} </style>'
}

data.poster = {image1: url_of_image_one, image2: url_of_image_two}
//get api
fetch(api)
  .then(function (res) {
    return res.json();
  })
  .then(function (json) {
    dataFunction(json); 
  });

dataFunction(data){
poster.classNames.add('image_on_hover')
poster.innerHTML += 'data.poster = '<div class="image_on_hover">...</div><style> .image_on_hover{background-image: url("first_url");} .image_on_hover:hover{background-image: url("second_url");} </style>'
}