【问题标题】:fade in image javascript淡入图像 javascript
【发布时间】:2016-02-03 22:54:31
【问题描述】:

我是 JavaScript 的新手,我正在尝试编写一个代码,在我熟悉的命令中淡入图片。我在这里看到了几个例子,但它们没有用。这是我试图做的:

 function myFunction() {
   for (i = 1; i < 20; i++) {
     setTimeout(function() {
       o = 1 - 1 / i
     }, 200); //this should increase the opacity
     document.getElementById("dog").style.opacity = o
   }
 }
img {
  opacity: 0;
  filter: alpha(opacity=40);
}
<center>
  <img id="dog" src="dog.jpg" draggable="true" ondragstart="drag(event)" width="500" height="500">
</center>

<button onclick="myFunction()">Lets Rock</button>

当我运行它时,它不会淡入。它以空白屏幕开始(应该如此),但不是在我单击按钮后淡入,而是在一个之后弹出(不淡入)点击几下。

非常感谢您提供的帮助
爱丽儿

【问题讨论】:

  • 这个例子有多久了?你不应该使用&lt;center&gt; 标签,它已被弃用
  • 这可能会有所帮助:jsfiddle.net/mejyj2w9/1
  • 所有超时都会同时触发,也就是100 毫秒声明它们之后。试试:setTimeout(function(){o=1-1/i}, 100 * i); 并且在超时的函数中dd不透明的东西。
  • 非常感谢您的帮助

标签: javascript html opacity


【解决方案1】:

试试这个:http://jsfiddle.net/kishoresahas/4wg8zcsg/

function fadeIn(el) {
    el.style.opacity = 0;
    var tick = function () {
        el.style.opacity = +el.style.opacity + 0.01;
        if (+el.style.opacity < 1) {
            (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16)
        }
    };
    tick();
}

function myFunction() {
    var el = document.getElementById("dog");
  console.log(el);
    fadeIn(el);
}
img {
    opacity: 0;
    filter: alpha(opacity=40);
}
<button onclick="myFunction()">Lets Rock</button>

<center>
    <img id="dog" src="https://i.stack.imgur.com/NHlV8.jpg" draggable="true" ondragstart="drag(event)" width="500" height="500">
</center>

【讨论】:

  • 从头开始,您的 SO sn-p 只需要向下滚动即可。也许用图像位置切换按钮?只是为了清楚。否则 +1
  • @somethinghere button 点击未在 sn-p 中触发,但在 jsfiddle 中完美运行。有什么想法吗?
【解决方案2】:

您可能会发现使用 CSS 控制不透明度更容易。它对浏览器的工作量较少,只需要最少的 javascript 即可切换类。

var img = document.getElementById("dog"),
    btn = document.getElementById("button");

btn.addEventListener("click", function( event ) {
    img.className = (img.className==="in")?"out":"in";
}, false);
#dog {
  opacity: 0;
  -webkit-transition: opacity 2s ease;
  -moz-transition: opacity 2s ease;
  -ms-transition: opacity 2s ease;
  -o-transition: opacity 2s ease;
  transition: opacity 2s ease;
}
#dog.in {
    opacity: 1;
}
<button id="button">Lets Rock</button><br />
<img id="dog" src="http://lorempixel.com/500/500/cats/" class="off" draggable="true" ondragstart="drag(event)" width="500" height="500">

【讨论】:

  • @cale_b 虽然我同意我仍然赞成,因为这是人们应该瞄准的那种正确解决方案。我同意 OP 要求 JS。
  • @cale_b 注意,虽然学习 javascript 的一部分是知道什么时候不使用它;)
  • @somethinghere - 虽然你们都说得对,而且我承认这是一个更简单/更优越的解决方案,但这个逻辑也意味着这个问题对于 jQuery 或其他框架解决方案来说是公平的游戏,是吗?我想我的意思是——让我们以他们提出的方式回答问题,否则(在 cmets 中)告诉他们有更好的方法。 OP 可以简单地提出问题以尝试学习如何做事,而不是只是达到结果。 (如果没有其他理由认识到使用 jQuery 或 CSS3 的价值,在 vanilla javascript 中编写自己的“淡入”是有价值的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2012-04-15
  • 2013-12-19
相关资源
最近更新 更多