我有一个<ul>
,其中包含data-role =“listview”属性。对于<li>
元素,我希望<div>
中的<li>
覆盖<li>
中的主要内容,以及当某人向右滑动时,<div>
动画向右滑动,显示div下面的内容。
我的问题是,当我将div添加到<li>
元素时,我无法让<div>
覆盖<li>
元素。即使我设置了style: height=100%
的样式,div似乎也占据了<li>
元素空间的大约2/3。
答案 0 :(得分:3)
您可以将DIV元素添加到列表项中,如下所示:
HTML -
<ul data-role="listview">
<li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
<li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
<li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
<li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
<li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
</ul>
在jQuery Mobile初始化列表视图后,这将创建以下输出:
<li data-icon="grid" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-iconpos="right" data-theme="c" class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-c">
<div class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#" class="ui-link-inherit">This is normal content.</a>
<div class="cover-div">Swipe to Uncover</div>
</div>
<span class="ui-icon ui-icon-grid ui-icon-shadow"> </span>
</div>
</li>
然后,您可以为元素添加定位和背景样式:
CSS -
.cover-div {
position : absolute;
top : 0;
left : 0;
width : 100%;
height : 100%;
z-index : 2;
background : #000;
background : rgba(0, 0, 0, 0.7);
color : #fff;
}
最后,您可以检测“封面”DIV上的滑动事件,并在屏幕外设置动画元素:
JS -
//when a page is initialized by jQuery Mobile, we'll do our own initialization
$(document).delegate('[data-role="page"]', 'pageinit', function () {
//find all the `.cover-div` elements on this page and bind to swipe left/right events for the elements
$(this).find('.cover-div').bind('swipeleft swiperight', function (event) {
//if the user swiped to the left then animate the DIV to the left
if (event.type == 'swipeleft') {
$(this).stop().animate({ left : '-100%' }, 250);
//otherwise animate the DIV to the right
} else {
$(this).stop().animate({ left : '100%' }, 250);
}
});
});