在页面上完全绘制后,猫头鹰轮播上的回调
Callback on owl carousel AFTER fully drawn on page
>想象一下,您有一个位于页面绝对顶部的单个项目轮播。在此之下,您拥有其余内容。由于轮播在页面中任意嵌套,因此您已将其设置为绝对定位。但是现在您需要知道轮播的高度,以便您可以在其余内容上放置上边距,以免重叠。这就是我正在做的。
$('#carousel').owlCarousel({
items: 1,
onInitialized: adjustStretchHeader,
onResized: adjustStretchHeader
});
function adjustStretchHeader () {
setTimeout(function () {
return $('.page > .container')
.css('margin-top', $('.page > .stretch-header')
.height() + 15);
}, 250);
}
在轮播的初始化和调整大小事件中,我让它获取轮播的高度并更新上边距。问题是,在没有延迟的情况下,initialized
事件是在轮播完全绘制到页面上之前触发的,因此高度不可靠。
通过延迟,我能够正确获得它。但这显然是一个黑客,我不能保证在较慢的设备上,轮播会及时被绘制。
我在文档中看不到任何其他有用的事件。
示范小提琴
你可以使用 jQuery 的 get()
方法来抓取图像的高度(即使它们是隐藏的)。这与猫头鹰轮播无关,因此不必等待它完成加载!
var images = $('#carousel img');
var firstImgHeight = images.get(0).height;
$('.page > .container').css('margin-top', firstImgHeight + 15);
浏览文档和演示,我发现了这个页面:http://www.owlcarousel.owlgraphic.com/demos/events.html
它显示onRefreshed
事件是在onInitialized
和加载图像之后调用的。你可以使用它。
$('#carousel').owlCarousel({
items: 1,
onRefreshed: adjustStretchHeader
});
function adjustStretchHeader () {
return $('.page > .container')
.css('margin-top', $('.page > .stretch-header')
.height() + 15);
}
小提琴
虽然,我同意文档在解释事件流程方面并不擅长。这对我来说仍然像是一个黑客。
初始化轮播后,图像的 DOM 具有宽度,但在实际加载图像之前它们没有高度。尝试使用(宽度)*(纵横比)而不是高度。
function adjustStretchHeader() {
return $('.page > .container')
.css('margin-top', $('.page > .stretch-header')
.width() * aspectratio + 15);
}
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 在页面上完全绘制后,猫头鹰轮播上的回调
- 回调事件不起作用-使用猫头鹰旋转木马
- 同步2个猫头鹰旋转木马或添加回调,如“onchangeprev”,“onchangenext”