我正在开发一个jQuery移动项目,我想使用全屏标题data-position="fixed" data-fullscreen="true"
。我遇到的问题是标题正在切入内容。
我试图想出一种方法来使内容随着标题移动而移动。因此,当标题可见时,内容会被推下,因此不会被切断,当标题不可见时,内容会被推高以最小化空白区域。
据我所知,唯一的方法是使用数据角色margin-top
动态更改div的content
css规则。我认为这很容易,但事实并非如此。
这是我的HTML:
<div data-role="page" id="index">
<div data-role="header" data-position="fixed" data-fullscreen="true" id='header'>Some Header Stuff</div>
<div data-role="content" id="content">Some Content Stuff</div>
<div data-role="footer" data-position="fixed" data-fullscreen="true">Some Footer Stuff</div>
</div>
到目前为止,我尝试了以下jQuery解决方案,但没有运气:
jQuery(document).on('pagecreate', function () {
$("#content").css('margin-top', $('#header').height());
});
和
$(document).on('pageshow', '#index',function(e,data){
$('#content').height(getRealContentHeight());
});
function getRealContentHeight() {
var header = $.mobile.activePage.find("div[data-role='header']:visible");
var footer = $.mobile.activePage.find("div[data-role='footer']:visible");
var content = $.mobile.activePage.find("div[data-role='content']:visible:visible");
var viewport_height = $(window).height();
var content_height = viewport_height - header.outerHeight() - footer.outerHeight();
if((content.outerHeight() - header.outerHeight() - footer.outerHeight()) <= viewport_height) {
content_height -= (content.outerHeight() - content.height());
}
return content_height;
}
这两个解决方案都尝试捕获标题的高度属性,并且我可以通过data-position="fixed" data-fullscreen="true"
的设置告诉标题始终显示高度为0.
我见过其他解决方案,比如添加一堆<br/>
标签或添加空div。当标题不可见时,这些解决方案都保留空白空间。有没有人知道如何实际使标题根据标题是否可见来上下切换内容?
答案 0 :(得分:0)
想出一个很好的解决方案
$(document).on('pageshow', function () {
$("#content").css('margin-top', $('#header').height());
});
$(document).on('vmouseup', '#index',function () {
setTimeout(function() {
$("#content").css('margin-top', $('#header').height());
}, 300);
});
上面的代码在pagecreate上设置内容的边距,并在用户点击通常折叠标题的任何地方时重新设置边距。