我有一个<ul>
with data-role="listview" 属性。对于<li>
元素,我希望在 中包含一个<div>
,<li>
覆盖 中的主要内容<li>
,当一个人向右滑动时,<div>
动画向右滑动,显示 div 下方的内容。
我的问题是,当我将 div 添加到<li>
元素时,我无法<div>
覆盖<li>
元素。即使我设置了样式style: height=100%
,div 似乎也只占用了大约 2/3 的<li>
元素空间。
我有一个<ul>
with data-role="listview" 属性。对于<li>
元素,我希望在 中包含一个<div>
,<li>
覆盖 中的主要内容<li>
,当一个人向右滑动时,<div>
动画向右滑动,显示 div 下方的内容。
我的问题是,当我将 div 添加到<li>
元素时,我无法<div>
覆盖<li>
元素。即使我设置了样式style: height=100%
,div 似乎也只占用了大约 2/3 的<li>
元素空间。
您可以将 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);
}
});
});
这是一个演示:http: //jsfiddle.net/pmqDf/1/