1

I am looking for a jquery script to implement the ease in and out effect with hide/show div that is implemented on this site.

Here is my script on mouseover():

$("#box0").mouseover(function () {
    $("#lSection2").fadeIn(100);    
    $("#boxContent0").fadeIn(100);
});   
$('#boxContent0').mouseout(function() {
    $("#boxContent0").fadeOut(100);     
    $("#lSection2").fadeOut(100);
});

CSS:

.AdBox {
    width: 300px;
    height: 180px;
    border: 6px solid #fff;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -o-border-radius: 5px;
    border-radius: 5px;
    float: left;
    margin-right: 10px;
    margin-left: 10px;
}

.AdBoxl {
    width: 300px;
    height: 180px;
    border: 6px solid #666;
    float: right;
}

.boxContent div {
    width: 180px;
    padding: 10px;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 16px;
    height: 120px;
    border: 4px solid #fff;
    float: left;
    margin-right: 10px;
    margin-left: 20px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    -o-border-radius: 3px;
    border-radius: 3px;
    background-color: #80634A;
}

#lSection2 {
    height: 120px;
    width: 100%;
    position: relative;
    top: 10px;
    padding-left: auto;
    padding-right: auto;
}

.boxContent {
    width: 970px;
    background-image: url(../images/gridtile.png);
    height: 150px;
    padding-top: 15px;
}

HTML:

mouse over or click to view details

Win Big
- Ipad
- Holiday
- 1 Year Spa Treatments

doesn't seem to work please help.

Milad Rashidi
  • 1,296
  • 4
  • 22
  • 40
Eno Bassey
  • 57
  • 1
  • 3
  • 11

1 Answers1

1

You do not need a special plugin to do jQuery easing. You would simple include your chosen easing function into your jQuery like this. (I picked 'easeOutCubic' just as an example applied to all animations but each animation could also have its own.)

$.easing.easeOutCubic = function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t + 1) + b;
}

$("#box0").mouseover(function () {
    $("#lSection2").fadeIn(100, 'easeOutCubic');    
    $("#boxContent0").fadeIn(100, 'easeOutCubic');
});   
$('#boxContent0').mouseout(function() {
    $("#boxContent0").fadeOut(100, 'easeOutCubic');     
    $("#lSection2").fadeOut(100, 'easeOutCubic');
});

See this answer for more details...

jQuery.easing - easeOutCubic - emphasizing on the ease

You can visually review some easing functions here...

http://jqueryui.com/demos/effect/easing.html

These are the corresponding functions. Just select and use the functions relevant to your project...

swing: function (x, t, b, c, d) {
    return $.easing[$.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
    return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
    return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t + b;
    return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
    return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t + b;
    return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
    return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
    return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
    return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
    return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
    return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
    return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
    return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
    return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
    return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
    return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
    if (t==0) return b;
    if (t==d) return b+c;
    if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
    return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
    return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
    return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
    return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
    if (a < Math.abs(c)) { a=c; var s=p/4; }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
    if (a < Math.abs(c)) { a=c; var s=p/4; }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
    if (a < Math.abs(c)) { a=c; var s=p/4; }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
    return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
    return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
    if ((t/=d) < (1/2.75)) {
        return c*(7.5625*t*t) + b;
    } else if (t < (2/2.75)) {
        return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
    } else if (t < (2.5/2.75)) {
        return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
    } else {
        return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
    }
},
easeInOutBounce: function (x, t, b, c, d) {
    if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
    return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}

Sidenotes:

Your code is using mouseover and mouseout which could lead to erratic behavior due to how these events are fired. mouseover will fire multiple times while your mouse is over the item. mouseenter and mouseleave are much more stable. You could even use .hover() which automatically combines .mouseenter() and .mouseleave() into one method.

And your animation duration of 100 is only one-tenth of one second. This is far too quick to be able to see any easing effect.

Community
  • 1
  • 1
Sparky
  • 98,165
  • 25
  • 199
  • 285
  • maybe its my code cos the easing doesnt seems to work and same for the hide/show div its kind of erractic...please find html and css above – Eno Bassey Nov 14 '11 at 18:19
  • @EnoBassey, In general, `mouseover` and `mouseout` are erratic because of how the mouse triggers them. Your original question did not mention this, or I would have suggested using `mouseenter` and `mouseleave` instead. (`.hover()` works even better.) Can you post a single example in jsFiddle so we can work on it concisely? – Sparky Nov 14 '11 at 18:23
  • @EnoBassey, Plus your duration is only one tenth of a second, you could never perceive any easing with animation that quick. – Sparky Nov 14 '11 at 18:25
  • i have increased the timing to 1000 please look at the above code how can it be converted to slide out side ways on hover or onclick preferably onclick. maybe i asked the wrong question. but i intend for the div to show sliding sideways into view.... – Eno Bassey Nov 14 '11 at 18:39
  • @EnoBassey, You posted a straightforward question about Easing functions which I answered for you in great detail. Your current issue has nothing to do with Easing. I cannot easily convert your `mouseover/mouseout` code into a `hover()` since you're triggering each one with two totally different selectors. Typically, you trigger upon entering/leaving the same element. You could replace `mouseover` with `mouseenter` and replace `mouseout` with `mouseleave` and see if that helps. – Sparky Nov 14 '11 at 18:46