javascript - 使用 CSS 逐渐改变图像(删除过渡)

标签 javascript html css

我有一个奇怪的问题。这很奇怪,因为我真的很难解释我的意思。我意识到,我可能会得到一些负面反馈,但没有其他地方可以问。

我正在寻找的是一种 CSS(如果不可能,也可以是 JavaScript)在悬停时逐渐改变图像的技术。我不希望它淡出或立即更改整个图像。我想要的是有一个图像,当我用鼠标悬停它时,图像的悬停部分会发生变化,我悬停我的图像越多,我就越能看到另一个图像。我希望这个描述足够了。抱歉,我不知道这个怎么称呼。

我做了一些与我在这里想的类似的东西(https://jsbin.com/xurokogicu/edit?html,css,output) 但这是滚动的,我希望当我用鼠标悬停图像时发生这种情况。

希望你明白我在这里说的一切,

提前致谢!

编辑: 这里有两张图片可以更好地理解我的想法。黑线表示该线上的某处(垂直)是鼠标光标。如果我将鼠标悬停在左侧,黑线会向左移动并显示其他图像的一部分。所以基本上首先是这张猴子图片,然后,无论我悬停在哪里,都会出现那条黑线,显示右侧的其他图片。

enter image description here

enter image description here

编辑2: 伙计们,我们找到了一个活生生的例子来说明我的意思:jpegmini.com 但是有不同的图像。 现在我要问的是我该怎么做,或者它怎么称呼,因为我的问题没有答案。 我还会为正在搜索此内容的其他人更改标题名称。

编辑3: 我们找到了答案,这正是我要找的:

JS

var ctx = c.getContext("2d"),
img = new Image();         // image to show

img.onload = start;
img.src = "link to img";

function start() {
  c.onmousemove = function(e) {
    var r = c.getBoundingClientRect(),
        x = e.clientX - r.left;
    ctx.clearRect(0, 0, c.width, c.height); 
    ctx.drawImage(img, 0, 0, x, c.height,  0, 0, x, c.height); 
    ctx.fillRect(x, 0, 5, c.height); 
  };

}

CSS

#c {
  background: url(link to other img); 
  background-size: cover;
  }

HTML

<canvas id=c width=620 height=400></canvas>

最佳答案

我会为此使用 Canvas + CSS。这是因为它可以让您完全控制鼠标移动,并提供一种简单的方法来引入条形图和不同类型的划像(对 Angular 线、自定义等)(如果您以后需要的话)。

  • 将背景图像定义为 canvas 元素的 CSS
  • 在剪裁到鼠标位置的顶部图像中绘制

例子

var ctx = c.getContext("2d"),
    img = new Image();         // image to show

img.onload = start;
img.src = "//i.imgur.com/mS4R13a.png";

function start() {
  c.onmousemove = function(e) {
    var r = this.getBoundingClientRect(),
        x = e.clientX - r.left;
    ctx.clearRect(0, 0, c.width, c.height);                     // clear canvas for new draw
    ctx.drawImage(img, 0, 0, x, c.height,  0, 0, x, c.height);  // clip and draw image to x
    ctx.fillRect(x, 0, 5, c.height);                            // draw a thin black bar
  };
}
#c {
  background: url(//i.imgur.com/GQ6xVAT.png); 
  background-size: cover;
  }
<canvas id=c width=620 height=400></canvas>

关于javascript - 使用 CSS 逐渐改变图像(删除过渡),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607995/

相关文章:

javascript - 使用outerHeight();测量相同的类名,但高度不同

html - 一般媒体查询的问题。没有结果

html - CSS 边框渲染优先级

javascript - 在 Web 应用程序 (ASP.NET 2.0) 中显示更多按钮的工具栏

javascript - 组织.openqa.selenium.JavascriptException : SyntaxError: '' string literal contains an unescaped line break while using executeScript through Selenium

javascript - HTML 对齐下拉元素

javascript - Jquery UI - 可调整网格和表格的大小

html - 拉伸(stretch) table 以垂直适合 TD

javascript - 带滚动的 Div 网格在 flexbox 中不起作用

css - 动画后 SVG 路径变化