鼠标悬停时Javascript淡入文本

鼠标悬停时Javascript淡入文本,javascript,html,css,Javascript,Html,Css,已经有人发布了我的问题的解决方案,如下所示。我想要相同的效果,但只对页面的某些部分,而不是所有的内容。我基本上只希望当鼠标移动时页面的某些部分淡入 // attach event handler document.body.onmousemove = function(){ fadeIn( this, 1000 ); // 1000ms -> 1s this.onmousemove = null; // remove to only fade in once! }; /

已经有人发布了我的问题的解决方案,如下所示。我想要相同的效果,但只对页面的某些部分,而不是所有的内容。我基本上只希望当鼠标移动时页面的某些部分淡入

// attach event handler
document.body.onmousemove = function(){
  fadeIn( this, 1000 );      // 1000ms -> 1s
  this.onmousemove = null; // remove to only fade in once!
};

// sets the opacity of an element (x-browser)
function setOpacity( obj, value ) {
  if ( obj ) {
    obj.style.opacity = value / 100;
    obj.style.filter  = 'alpha(opacity=' + value + ')';
    obj.style.zoom    = 1;
  }
}

// makes an element to fade in
function fadeIn( dom, interval, delay ) {

      interval  = interval || 1000;
      delay     = delay    || 10;

  var opacity   = 0,
      start     = Number(new Date()),
      op_per_ms =  100 / interval;

  if ( typeof dom === "string" ) {
    dom = document.getElementById( dom );
  }

  function step() {

    var now     = Number(new Date()),
        elapsed = now - start;
        opacity = elapsed * op_per_ms;

    setOpacity( dom, opacity );

    if ( elapsed < interval )
      setTimeout( step, delay );
    else
      setOpacity( dom, 100 );
  }

  setTimeout( step, delay );
};
//附加事件处理程序
document.body.onmousemove=函数(){
fadeIn(这个,1000);//1000ms->1s
this.onmousemove=null;//删除以仅淡入一次!
};
//设置元素的不透明度(x浏览器)
函数setOpacity(对象,值){
如果(obj){
obj.style.opacity=值/100;
obj.style.filter='alpha(不透明度='+值+')';
obj.style.zoom=1;
}
}
//使元素淡入
函数fadeIn(dom、间隔、延迟){
间隔=间隔| | 1000;
延迟=延迟| | 10;
var不透明度=0,
开始=编号(新日期()),
op_per_ms=100/间隔;
如果(dom的类型==“字符串”){
dom=document.getElementById(dom);
}
函数步骤(){
var now=编号(新日期()),
已用=现在-开始;
不透明度=经过时间*每毫秒运算次数;
setOpacity(dom,opacity);
如果(经过<间隔)
设置超时(步进,延迟);
其他的
setOpacity(dom,100);
}
设置超时(步进,延迟);
};

使用您已有的注释良好的代码并不十分困难。您只需将
fadeIn()
调用替换为更合适的调用。将要淡入的元素的ID或元素本身传入第一个参数。只需多次调用
fadeIn()
就可以对许多元素执行此操作。动画应该同时发生

更新:在OP的情况下,他或她需要删除body标签上的0不透明样式,以使这些更改生效。

而不是
fadeIn(这是1000)

  • 为要淡入淡出的元素指定一个类
    fade

  • 将样式属性
    style=“opacity:0;”“
    添加到这些元素中,而不是添加到
    body
    元素中

  • 获取想要淡出的元素

    var elements = document.getElementsByClassName('fade');
    
  • 遍历每个元素

    for (var i = 0; i < elements.length(); i++) {
        fadeIn(elements[i], 1000);
    }
    
    for(var i=0;i

这是一个经过修改的问题。

这很像是一个“给codez plz”的问题。至少,请使用格式化功能使代码可读。我不是在寻找代码。。。代码已经存在。如果至少我可以对我从中得到的问题发表评论,我就不需要发布一个全新的问题。我确实使用了格式化功能,但不管出于什么原因,它们都不起作用。所以,如果你有代码,问题是什么?我将代码嵌入了我的一个页面中,但它会在所有div和文本中消失。我只希望页面的某些部分褪色。下面是正在运行的代码:。只要把我放在正确的道路上就会有很大的帮助。“有人已经发布了解决方案。”。。是我的孩子……:)它应该是
document.getElementsByClassName()
,但是我会犹豫使用它,因为只有最新的浏览器支持它。我也不确定OP是否会将所有这些元素的onmousemove设置为空。这个方法有很多跨浏览器的实现,一个是。@melhosseiny:完全正确。我应该把我的评论说得更清楚。这是为了提醒OP,如果他或她使用这种方法,就要使用这些跨浏览器实现。谢谢TNi和melhosseiny@Mellowwellow使用此功能跨浏览器工作:基本上就是这样。但是,它在jsbin上不起作用=/OP还需要删除主体上的0不透明度样式。更新的答案反映了这一点。编辑:另外,最初淡出的元素应该添加了不透明度0。我应该已经注意到了/总台