diff --git a/jquery.smartbanner.css b/jquery.smartbanner.css index 4bb9407..e963acc 100644 --- a/jquery.smartbanner.css +++ b/jquery.smartbanner.css @@ -1,6 +1,8 @@ -#smartbanner { display: block; position: absolute; left: 0; right: 0; top:-82px; border-bottom: 1px solid #000; width: 100%; height: 78px; font-family: 'Helvetica Neue',sans-serif; z-index: 9998; -webkit-font-smoothing: antialiased; overflow: hidden; -webkit-text-size-adjust: none; } -#smartbanner, html.sb-animation { -webkit-transition: all 0.3s ease; transition: all 0.3s ease; } -#smartbanner .sb-container { margin: 0 auto; } +#smartbanner { display: block; border-bottom: 1px solid #000; width: 100%; height: 0; font-family: 'Helvetica Neue',sans-serif; z-index: 9998; -webkit-font-smoothing: antialiased; overflow: hidden; -webkit-text-size-adjust: none; } +#smartbanner { -webkit-transition: height 0.3s ease; transition: height 0.3s ease; } +#smartbanner.showing { overflow: hidden; height: 78px;} +#smartbanner.shown { height: 78px; } +#smartbanner .sb-container { margin: 0 auto; height: 100%; position: relative; overflow: hidden;} #smartbanner .sb-close { position: absolute; left: 5px; top: 5px; display: block; width: 17px; height: 17px; font-family: 'ArialRoundedMTBold', Arial; font-size: 17px; line-height: 17px; text-align: center; color: #fff; background: #000; text-decoration: none; text-shadow: none; border-radius: 17px; -webkit-font-smoothing: subpixel-antialiased; } #smartbanner .sb-icon { position: absolute; left: 30px; top: 10px; display: block; width: 57px; height: 57px; background: rgba(0,0,0,0.6); background-size: cover; border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.3); } #smartbanner.no-icon .sb-icon { display: none; } diff --git a/jquery.smartbanner.js b/jquery.smartbanner.js index d32fed9..aead5d3 100644 --- a/jquery.smartbanner.js +++ b/jquery.smartbanner.js @@ -6,7 +6,6 @@ */ !function ($) { var SmartBanner = function (options) { - this.origHtmlMargin = parseFloat($('html').css('margin-top')); // Get the original margin-top of the HTML element so we can take that into account var options = $.extend({}, $.smartbanner.defaults, options); this.os = options.force || this.detectOS(); @@ -159,8 +158,8 @@ .append('×') .append($('')) .append($('
') - .append($('').text(this.title)) - .append($('').text(this.author)) + .append($('').text(this.options.title)) + .append($('').text(this.options.author)) .append($('').text(inStore)) ) .append($('').attr('href', url) @@ -176,12 +175,11 @@ } else{ $('#smartbanner').addClass('no-icon'); } - + this.bannerHeight = $('#smartbanner').outerHeight() + 2; if (this.scale > 1) { $('#smartbanner') - .css('top', parseFloat($('#smartbanner').css('top')) * this.scale) .css('height', parseFloat($('#smartbanner').css('height')) * this.scale) .hide(); $('#smartbanner .sb-container') @@ -190,7 +188,6 @@ .css('-moz-transform', 'scale('+this.scale+')') .css('width', $(window).width() / this.scale); } - $('#smartbanner').css('position', (this.options.layer) ? 'absolute' : 'static'); } // Listen for click events @@ -202,7 +199,6 @@ // Show smartbanner SmartBanner.prototype.show = function() { var banner = $('#smartbanner'); - var top = this.origHtmlMargin + (this.bannerHeight * this.scale); var speed = parseFloat(banner.css('transition-duration')) * 1000; banner.stop(); @@ -210,28 +206,18 @@ if ($.support.transition) { banner .one($.support.transition.end, function() { - banner.addClass('shown'); - }) - .emulateTransitionEnd(speed) - .css('top', 0); - - $('html') - .addClass('sb-animation') - .one($.support.transition.end, function() { - $('html').removeClass('sb-animation'); + banner.addClass('shown').removeClass('showing'); }) .emulateTransitionEnd(speed) - .css('margin-top', top); + .addClass('showing'); } else { - banner.animate({top: 0}, { duration: speed, easing: 'swing' }).addClass('shown'); - $('html').animate({marginTop: top}, { duration: speed, easing: 'swing' }); + banner.animate({height: '78' * this.scale}, { duration: speed, easing: 'swing' }).addClass('shown'); } } // Hide smartbanner SmartBanner.prototype.hide = function() { var banner = $('#smartbanner'); - var top = -1 * this.bannerHeight * this.scale; var speed = parseFloat(banner.css('transition-duration')) * 1000; banner.stop(); @@ -242,19 +228,9 @@ $('#smartbanner').remove(); }) .emulateTransitionEnd(speed) - .removeClass('shown') - .css('top', top); - - $('html') - .addClass('sb-animation') - .one($.support.transition.end, function() { - $('html').css('margin-top', "").removeClass('sb-animation'); - }) - .emulateTransitionEnd(speed) - .css('margin-top', this.origHtmlMargin); + .removeClass('shown'); } else { - banner.animate({top: top}, { duration: speed, easing: 'swing' }).addClass('shown'); - $('html').animate({marginTop: this.origHtmlMargin}, { duration: speed, easing: 'swing' }); + banner.animate({height: 0}, { duration: speed, easing: 'swing' }).removeClass('shown'); } } @@ -369,7 +345,7 @@ !function ($) { function transitionEnd() { var el = document.createElement('smartbanner'); - + var transEndEventNames = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend',