在android中我们有layout_weight和layout_height来设置图像/布局的宽度和高度。所以当我们有不同的屏幕尺寸时,它会自动调整到我们指定的屏幕宽度和屏幕高度。
他们在phonegap / jquery手机中有什么相似之处吗?
我想要一个页眉和页脚以及两者之间的图像。我尝试在CSS中添加标头。但图像在标题中重复,整个屏幕也可以滚动,但我想在屏幕上找到一个固定的图像,我想让图像自动调整到设备的屏幕尺寸。我是phonegap和jquery mobile的新手。
如何在页眉和页脚之间固定图像并自动调整到不同的屏幕尺寸?
这是html页面
<div data-role="page" id="timer">
<div data-role="header" data-position="fixed" data-tap-toggle="false" class="timerheader">
<h1></h1>
</div>
<div data-role="content">
<p><centre><img src="Image/timer.png" alt="" /></centre></p>
</div>
<div data-role="footer" data-position="fixed" data-tap-toggle="false" >
<h3><a href="#" data-role="button" data-inline="true" ><img src="Image/Next.png"/></a></h3>
</div>
</div>
感谢:)
答案 0 :(得分:5)
这在jQuery Mobile中有点棘手,而页面宽度总是相同的页面高度会因页面事件而异。我不知道你对jQuery Mobile页面事件了解多少,为了简化故事,这些事件将在页面加载期间和页面转换期间发生(如果你想了解更多,请看看我的另一篇文章:<强> jQuery Mobile: document ready vs page events 强>)。
现在让我们回到你的问题。 jQM页面内容永远不会占用整页内容,除非已经有足够的内容填充它,我们不能采用100%宽度和100%高度的纯css方法。
要解决此问题,我们需要强制内容div获取完整的可用页面内容高度,并且可以使用此功能完成:
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;
}
我们将使用此功能在pageshow页面事件期间设置内容高度。图像的宽度为100%,高度为100%。
现在我们还需要修复图像css,以便它适合完整的内容高度:
html,body{height:100%;}
img {
padding: 0 !important;
margin: 0 !important;
border: 0 !important;
overflow-y: hidden !important;
}
.ui-content {
padding: 0 !important;
}
.ui-content img {
max-height: 100%;/* Part 1: Set a maxium relative to the parent */
width: auto\9;
/* IE7-8 need help adjusting responsive images */
max-width: auto;
/* Part 2: Scale the height according to the width, otherwise you get stretching */
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
}
最后这是一个有效的例子:http://jsfiddle.net/Gajotres/yndsW/
编辑:
看看我的另一种方法。我没有使用img标签,而是决定使用背景图像并让css来处理居中。 Javascript只需动态更改图像。
我们仍需要javascript来修复页面高度。
HTML:
<div data-role="page" id="Windage">
<div data-theme="a" data-role="header" data-position="fixed">
<h3>Header</h3>
</div>
<div data-role="content">
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
<h3>
<a href="#" data-role="button" data-inline="true" data-transition="slide">NEXT</a>
</h3>
</div>
</div>
CSS:
html,body{
height:100%;
}
.ui-content {
background-repeat:no-repeat;
background-size:contain;
background-position: center center;
}
Javascript:
$(document).on('pageshow', '#Windage', function(){
$('[data-role="content"]').height(getRealContentHeight());
$('.ui-content').css('background-image','url(Image/timer.png)');
});
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;
}
答案 1 :(得分:0)
我知道其中一个解决方案。它并不完美,但效果非常好。您可以为每个分辨率指定不同的css文件并使用mediaqueries。 Mediaqueries将根据您可以指定的某些规则替换您的css代码,例如取决于屏幕分辨率。它适用于PhoneGap和jQM。检查here并阅读official w3 documentation.
我希望它有所帮助。