
一般来说在移动浏览器上是拿不到屏幕真实分辨率的,因为页面渲染是在一个叫viewport的页面绘制区域内(说的通俗点就是手机浏览器是用一个虚拟的屏幕来显示网页的)。viewport和屏幕的真实尺寸并不是对应的,如在Safari Mobile中viewport默认宽度(320px)是屏幕真实尺寸(640px)的一半,这里不管是用windowinnerHeight还是windowscreenwidth拿到的都是320px。当然我们可以通过meta设置改变viewport的比例,如initial-scale=5就可以让viewport和屏幕一致的尺寸,但这个比例在不同的手机上并不一定是2倍关系,特别是Android手机,在大屏手机(5寸以上)上这个值是3倍甚至4倍。而且改变viewport比例后可能会导致后续制作中出现一系列问题。所以我认为不要纠结一定要拿到屏幕真实尺寸,就把viewport的尺寸当成屏幕的尺寸进行页面设计和制作肯定是没有问题的。
有一个非常曲线的解决办法,就是:css的媒体查询(@media)是能够检测屏幕尺寸(其实是浏览器窗体的真实尺寸,并不是屏幕的真实物理尺寸,介意的朋友就不要看了)的,通过它来给网页内的某个元素设置一个特殊的属性,然后再用JavaScript来获取这个属性值。当然这样只能获得一个阶梯值(比如480px到540px之间、540px到600px之间等等),不是精确值,所以可能得不偿失,因此我是不推荐的。
width_screen=screenwidth; // 获取宽度
height_screen=screenheight; 高度
availWidth_screen=screenavailWidth;
availHeight_screen=screenavailHeight;
colorDepth_screen=screencolorDepth;
如果是动态获取的话,就自己写一个方法什么的给封装一下,然后加载。
Visual C++中获取屏幕宽和高的函数为GetSystemMetrics(int nIndex),其结果为像素值。其中索引值nIndex在获取屏幕宽时为SM—CXSCREEN,在获取屏幕高时为SM—CYSCREEN。举例如下:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{ // 设置窗口风格
//
// 设置窗口位置
csx=GetSystemMetrics(SM—CXSCREEN) /2;
csy=GetSystemMetrics(SM—CYSCREEN) /2;
//设置窗口的宽和高(屏幕宽和高的一半)
cscx=GetSystemMetrics(SM—CXSCREEN)/2;
cscy=GetSystemMetrics(SM—CYSCREEN)/2;
return CFrameWnd::PreCreateWindow(cs);}
在第一次运行出来的位置在自己想要的位置
用MoveWindow 和SetWindowPos
SetWindowPos可以完成MoveWindow的功能,也能完成MoveWindow不能完成的功能
MoveWindow只是移动窗口的位置和大小
SetWindowPos还可以设置窗口的Z-ORDER、显示隐藏窗口等等
屏幕的长宽就是屏幕的分辨率,用下面的代码实现,每句后面已添加注释
Dim x As Integer, y As Integer '定义2个整数型变量
x = ScreenWidth / ScreenTwipsPerPixelX '获取屏幕宽度
y = ScreenHeight / ScreenTwipsPerPixelY '获取屏幕高度
上面是vb的语法
下面是VbNet的语法:
Dim x, y As Long '定义2个整数型变量
x = ScreenPrimaryScreenBoundsWidthToString '获取屏幕宽度
y = ScreenPrimaryScreenBoundsHeightToString '获取屏幕高度
以上就是关于用javascript 怎样才能很好的获取手机的屏幕宽度和高度全部的内容,包括:用javascript 怎样才能很好的获取手机的屏幕宽度和高度、html中 如何获取屏幕宽度、vc中怎样得到电脑屏幕的宽和高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)