Javascript幻灯片效果onclick

时间:2012-10-19 19:15:30

标签: javascript onclick mootools slide effect

我想添加一张幻灯片&使用“onclick”将纯粹的Javascript淡化为DIV效果。

代码在这里:http://jsfiddle.net/TCUd5/

必须滑动的DIV有id =“pulldown_contents_wrapper”。 此DIV包含在SPAN中,也会触发它:

<span onclick="toggleUpdatesPulldown(event, this, '4');" style="display: inline-block;" class="updates_pulldown" >
    <div class="pulldown_contents_wrapper" id="pulldown_contents_wrapper">

我认为控制SPAN onclick的JS代码是:

var toggleUpdatesPulldown = function(event, element, user_id) {
  if( element.className=='updates_pulldown' ) {
    element.className= 'updates_pulldown_active';
    showNotifications();
  } else {
    element.className='updates_pulldown';
  }  
}

如果无法用纯JS制作它,你知道我怎么能用Mootools做到这一点? (*我只想使用纯JS或Mootols框架。)

我尝试过实施以下代码:why javascript onclick div slide not working?但没有结果。

非常感谢。

我已经设法用Mootools制作它,但我无法弄清楚如何添加幻灯片和放大器。淡入淡出效果,延迟鼠标移除

    window.addEvent('domready', function() {
        $('updates_pulldown').addEvents({
          mouseenter: function(){
            $('updates_pulldown').removeClass('updates_pulldown').addClass('updates_pulldown_active')
            $('pulldown_contents_wrapper').set('tween', {
              duration: 1000,
              physics: 'pow:in:out',
              transition: Fx.Transitions.Bounce.easeOut // This could have been also 'bounce:out'
            }).show();
          },
          mouseleave: function(){
            $('pulldown_contents_wrapper').set('tween', {
                duration: 1000,
                delay: 1000,
                }).hide();
            $('updates_pulldown').removeClass('updates_pulldown_active').addClass('updates_pulldown')
          },
        });
    });

  var toggleUpdatesPulldown = function(event, element, user_id) {
      showNotifications();
  }

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

jQuery要容易得多,但使用纯JavaScript可以做到这一点。

在CSS中你需要使用过渡

#thing { position:relative;
  top: 0px;
  opacity: 0.8;
  -moz-transition: top 1s linear, opacity 1s linear;
  -webkit-transition: top 1s linear, opacity 1s linear;
 }

然后在javascript中更改元素的位置时,它应该通过css过渡进行更改。

var toggleUpdatesPulldown = function(event, element, user_id) {
  if( element.className=='updates_pulldown' ) {
     element.style.top = someValue; //something like '100px' will slide it down 100px
     element.style.opacity = '1.0'; //will fade the content in from 0.8 opacity to 1.0
     element.className= 'updates_pulldown_active';
    showNotifications();



编辑 - 提供了jQuery代码

调用jQuery库,最容易从谷歌主机上完成

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

制作悬停功能

$(document).ready(function() {
        $('.updates_pulldown').hover( //first function is mouseon, second is mouseout
            function() {
                $(this).animate({top: '50px'}).animate({opacity: '1.0'});
            },
            function() { //delay 1000 milliseconds, animate both position and opacity
                $(this).delay(1000).animate({top: '0px'}).animate({opacity: '0.5'});
            }
        )
    })

函数时序将与使用transition标记在css中设置的函数时序相同。再次使用'this'而不是类名确保效果仅发生在悬停的类的特定实例上。我不确定这个动画是否正是你所要求的,但如果我正确理解了这个问题,那么主要功能将对你有用。只需更改数字等,以满足您的需求。