javascript - 按住单击时更改图像

标签 javascript button onclick onmousedown onmouseup

我希望更改按住单击时按钮的图像,然后在单击释放时更改回来。我目前有一个平面图像,我希望将其更改为带有内阴影的图像,使其看起来像按下按钮,但在释放鼠标单击时变回原始平面图像。我尝试了 onmouseup 但我认为我使用它不正确。我希望 "item""item2" 在单击时保持其图像,并且可以正常工作。不过,我希望 "item3" 在鼠标释放时变回原样,或者在单击后立即变回原样。

(编辑:我是 JavaScript 新手,它不一定是 onmouseup 解决方案。如果有人可以解释如何创建一个执行此操作的函数,那就太好了。)

JS:

var onImgStp= "images/stop.png";
var onImgPnk= "images/pink.png";
var onImgMut= "images/mute.png";
var offImg= "images/green.png";
var offImgStp= "images/stop2.png";

HTML:

<img class="item" src="images/pink.png" onclick="manage(1); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(2); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(3); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(4); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(5); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(6); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(7); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item" src="images/pink.png" onclick="manage(8); this.src = (this.src.endsWith(offImg)? onImgPnk : offImg);"/>
<img class="item2" src="images/mute.png" onclick="this.src = (this.src.endsWith(offImg)? onImgMut : offImg);"/>
<img class="item3" src="images/stop.png" onmouseup="this.src = (this.src.endsWith(offImgStp)? onImgStp : offImgStp);"/>

最佳答案

简单的解决方案

.image-swap {
  cursor: pointer;
}

.image-swap>img, .image-swap:active>img:first-child {
  display: none;
}

.image-swap>img:first-child, .image-swap:active>img:last-child {
  display: block;
}
<div class="image-swap">
  <img src="http://blog.hvidtfeldts.net/media/city7.png" />
  <img src="http://blog.hvidtfeldts.net/media/city2.png" />
</div>

删除选择和拖动效果

.image-swap {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
  cursor: pointer;
}

.image-swap>img {
  pointer-events: none;
  display: none;
}

.image-swap>img:first-child {
  display: block;
}

.image-swap:active>img:first-child {
  display: none;
}

.image-swap:active>img:last-child {
  display: block;
}
<div class="image-swap">
  <img src="http://blog.hvidtfeldts.net/media/city7.png" />
  <img src="http://blog.hvidtfeldts.net/media/city2.png" />
</div>

平滑过渡

.image-swap {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
  cursor: pointer;
  position: relative;
}

.image-swap>img {
  pointer-events: none;
  transition: all 0.6s;
  position: absolute;
  opacity: 0;
  left: 0;
}

.image-swap>img:first-child {
  position: static;
  opacity: 1;
}

.image-swap:active>img:first-child {
  opacity: 0;
}

.image-swap:active>img:last-child {
  opacity: 1;
}
<div class="image-swap">
  <img src="http://blog.hvidtfeldts.net/media/city7.png" />
  <img src="http://blog.hvidtfeldts.net/media/city2.png" />
</div>

如果您愿意,可以为图像提供类,例如 base-imgactive-img

因此,您可以将 :first-child 替换为 .base-img,将 :last-child 替换为 .active-图片

关于javascript - 按住单击时更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414279/

相关文章:

android - 新手 - 按钮的Android编码问题

javascript - jQuery - 无法将类添加到具有 onClick 事件的按钮

Javascript 函数不随 html onclick 触发

javascript - 如何将 JSON 数据加载到 Bootstrap 表中?

javascript - 我需要包装数组的每个元素,甚至是子元素,我正在使用 JavaScript

reactjs - react native 视频 : how to load next video on clicking a button?

SwiftUI:如何让按钮在 safari 中打开 URL?

javascript - 在 ChartJS 中获取 X、Y onClick 图表坐标

javascript - 同一测试运行两次时 Jasmine 失败

javascript - 在 Tab 键上自动滚动以输入使其部分隐藏