什么是一个优雅的解决方案,按比例缩放和居中整个网站以适应浏览器窗口(并在重新调整大小时进行更新)
假设基本布局为720x500px
内容应按比例缩放以适合,然后重新居中。
基本上,像这个Flash插件一样运行:http://site-old.greensock.com/autofitarea/(尽管基本大小已知)
网站将在720x500区域中包含几种不同类型的元素...理想的解决方案只是扩展整个事物,不需要设置每个单独元素的样式(如果它很重要 - 图像将是SVG,因此缩放应该没有对决议的负面影响)
答案 0 :(得分:4)
根据您需要支持的浏览器(IE9 +),您可以使用简单的CSS transform实现此目的。
中的示例var $win = $(window);
var $lay = $('#layout');
var baseSize = {
w: 720,
h: 500
}
function updateScale() {
var ww = $win.width();
var wh = $win.height();
var newScale = 1;
// compare ratios
if(ww/wh < baseSize.w/baseSize.h) { // tall ratio
newScale = ww / baseSize.w;
} else { // wide ratio
newScale = wh / baseSize.h;
}
$lay.css('transform', 'scale(' + newScale + ',' + newScale + ')');
console.log(newScale);
}
$(window).resize(updateScale);
如果您需要向后兼容性,则可以使用%
或em
调整网站中的所有内容,并使用类似的javascript来控制比例。我认为那会非常费力。
答案 1 :(得分:1)
我正在使用的一个解决方案是使用一个容器,我在其中放置一个iframe,该iframe正在调整大小以适应尽可能多的可用屏幕,而不会失去它的比例。它运作良好,但不是非常灵活:如果您希望它工作,您需要在内容页面中设置维度%。但是如果你能以这种方式管理你的页面,我认为它几乎可以满足你的需求。
就是这样。您创建一个容器html页面,基本上只有样式,调整大小脚本和iframe调用。您的内容会进入iframe页面。
<style>
html, body
{
border: 0px;margin: 0px;
padding:0px;
}
iframe
{
display: block;
border: 0px;
margin: 0px auto;
padding:0px;
}
</style>
<script>
$(document).ready(function(e){
onResizeFn();
});
$(window).resize(function(e){
onResizeFn();
});
// this stretches the content iframe always either to max height or max width
function onResizeFn(){
var screen_ratio = 0.70 // this is your 720x500 ratio
if((window.innerHeight/window.innerWidth) > screen_ratio){
var theWidth = window.innerWidth
var theHeight = (window.innerWidth*screen_ratio);
} else {
var theHeight = window.innerHeight;
var theWidth = (window.innerHeight/screen_ratio);
}
document.getElementById("your_iframe").width = theWidth + "px"
document.getElementById("your_iframe").height = theHeight + "px"
}
</script>
// And then you call your page here
<iframe id='your_iframe' src='your_content_page' scrolling='no' frameborder='0'"></iframe>