博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自适应全屏与居中算法
阅读量:4982 次
发布时间:2019-06-12

本文共 2562 字,大约阅读时间需要 8 分钟。

补充方法:

除了全屏缩放用的算法,如果想要页面各种元素跟窗口等比同步缩放,可以使用这样一个方法:

1 function Simpzoom(srcWidth,srcHeight,maxWidth,nowWidth){2     var num=maxWidth*srcWidth / nowWidth;3     var _width=srcWidth*srcWidth / num;4     var _height=(srcHeight*_width) / srcWidth;5     //console.log(_width,_height);6     return [_width,_height];7 }

有了这个方法,就可以为所欲为了* w *

smallArr=Simpzoom(438,152,2500,newArr[0]);

2500是参照的宽度,不一定是浏览器窗口的宽,可以手动调节这个宽度以达到正确的比例,数字越大,得到的smallArr[0]越小。

newArr[]是下文中newArr=getHtmlSize();   该方法返回的浏览器窗口宽高。

///

自适应浏览器窗口的页面是很流行的,其实要做这个效果也只需要几个步骤。

首先,用于计算图片尺寸的通用类:

function imgzoom(srcWidth,srcHeight,maxWidth,maxHeight){     this.srcWidth=srcWidth;//获得原始宽度     this.srcHeight=srcHeight;//获得原始高度     this.maxWidth=maxWidth;//获得限定宽度     this.maxHeight=maxHeight;//获得限定高度     this.newWidth;     this.newHeight;}imgzoom.prototype.getSize=function (){        this.newWidth=this.maxWidth;    this.newHeight=(this.srcHeight*this.maxWidth)/this.srcWidth;        if(this.newHeight

这个imgzoom类返回获取到的浏览器宽this.newWidth和高this.newHeight。

然后写一个执行js,其中包括初始尺寸,以及获取浏览器尺寸:

var newArr=[];var sizeArr=[]; //startWindowSize();function startWindowSize(){    windowSize();    window.onresize=windowSize;}//检测到浏览器发生变化function windowSize(){    newArr=getHtmlSize();        sizeArr=(new imgzoom(1000,625,newArr[0],newArr[1]).getSize());  //初始尺寸,新尺寸,执行的函数        document.getElementById("img").style.width=sizeArr[0]+"px";    document.getElementById("img").style.height=sizeArr[1]+"px";    /*这个是居中算法:document.getElementById("imgdiv").style.left=(newArr[0]-sizeArr[0])/2+"px";     document.getElementById("imgdiv").style.top=(newArr[1]-sizeArr[1])/2+"px"; 不过都全屏了还要居中干嘛*/}//获取浏览器大小function getHtmlSize(){    var winWidth,winHeight;    var arr=[];    if (window.innerWidth){        winWidth = window.innerWidth;    }else{        if((document.body) && (document.body.clientWidth)){            winWidth = document.body.clientWidth;        }    }            if (window.innerHeight){        winHeight = window.innerHeight;    }else{        if((document.body) && (document.body.clientHeight)){            winHeight = document.body.clientHeight;        }        }        if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth){        winHeight = document.documentElement.clientHeight;        winWidth = document.documentElement.clientWidth;    }        arr.push(winWidth,winHeight);    return arr;}

这样HTML中id名为img的IMG图片就自适应了,如果需要什么元素居中,

横向位置 left:newArr[0]-sizeArr[0])/2
竖向居中  top: newArr[1]-sizeArr[1])/2

就搞定了。

转载于:https://www.cnblogs.com/haimingpro/p/3343242.html

你可能感兴趣的文章
(十)、iptables进行转发使内网能上网
查看>>
python之路《八》装饰器
查看>>
maven 打包前 Junit 测试
查看>>
spring boot 添加druid
查看>>
SQL联合查询
查看>>
dev 控件之 gridcontrid 应用
查看>>
什么是同一网段
查看>>
温故而知新
查看>>
c# 菱形,三角形
查看>>
java之MD5加密
查看>>
Codeforces Round #432 (Div. 2) ABC
查看>>
常见积性函数(转自百科)
查看>>
luogu_1010 幂次方
查看>>
codevs1231 最优布线问题
查看>>
python连接数据库(2)——mongodb
查看>>
为什么黑客都不用鼠标?你听说过Linux吗?
查看>>
eclipse安装CheckStyle,SpotBugs,findSecuritybugs插件
查看>>
ZBrush通过绘制层得到子物体
查看>>
算法学习之剑指offer(八)
查看>>
Genymotion虚拟机的全面了解
查看>>