Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86046
  • 博文数量: 25
  • 博客积分: 465
  • 博客等级: 下士
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-03 13:28
文章分类
文章存档

2012年(25)

我的朋友

分类: 系统运维

2012-08-31 16:45:11

如何让网页自动适应显示器不同的“分辨率”?

解决思路:

在不同分辨率下看到的网页版面格式有很大差别,甚至有可能错位。导致这种差别的原因,主要是因为网页中用了绝对定位的层,并且页面内容设置为居中,这样在分辨率改变时就会导致错位。因此我们可以通过判断用户的分辨率,然后让页面或排版做出相应变化。

方法一:做为不同的分辨率做不同的页,然后做个引导页,获取到客户端屏幕的分辨率后转向到相应页

具体步骤:

1. 先捕获用户的分辨率。

水平分辨率:screen.width

垂直分辨率:screen.height

2.再用页面跳转的方法转到相应页。

location.replace(screen.width+".htm")

或者:

location.replace(screen.height+".htm")

3.完整代码。

技巧:screen.width 也可以改成 screen.availWidth。

提示:

l language="JavaScript" 指定脚本所用语言为 JavaScript,大部分浏览器的默认客户端脚本语言就是 JavaScript,所以也可以省略不写。

l 两个标识的作用是通知不支持 JavaScript 浏览器忽略两标识间的所有 JavaScript 代码,一般情况下可以省略不写。

l JavaScript 语句与 C 语言一样用分号”;”结束,但也可以省略不写,每一新行表示开始一条新语句。

l screen.width+".htm" 在进行字符串连接后得到诸如 800.htm,1024.htm 之类的文件名。

l 可以在把完整代码存成单独一页作为引导页。

试一试:读者可以试着用assign方法实现页面跳转。

方法二:根据文档显示区域宽度重新调整层的定位。

具体步骤:

1. 获取文档显示区域的宽度。

document.body.offsetWidth

2.判断对象是否为层。

function isLayer(obj){

with(obj.currentStyle)

return (position=="absolute"&&left!="")

}

3.完整代码。

Layer1

Layer2

注意:

l 必须确保所有层的标签为 DIV。

l 程序中的 demo 和 demo1 两个层只是测试用的,在实际就用时可以删掉。

技巧:如果所有层都是直接在标签内的定义的,可以把 currentStyle 和runtimeStyle 改成 style。

提示:

l JavaScript 的单行注释是以一对正斜杠”//”开始,多行注释以一个正斜杠加一个星号的组合(/*)开始,并以其逆向顺序 (*/)结束。

l window.onload 表示在页面加载完成后触发。

l onresize="init()" 表示在窗口大小改变时触发名为 init 的函数。

分析:屏幕分辨率先是影响到文档显示区域宽度(document.body.offsetWIdth)大小,然后文档显示区域宽度大小进一步影响到层的X轴定位和页面内容居中部分的相对位置,所以只要根据文档显示区域宽度大小来重新调整层的X轴坐标就行了。

特别提示

Javascript脚本的代码原则上是要求放在代码的 与 间,但放到其它标签窗口内也可以正常运行,方法二中代码运行后效果如图 3.1 和 3.2 所示:

图 3.1 窗口最大化时层的

图 3.2 窗口缩小后的层的位置

特别说明

方法一中用到了 location 对象的 replace 和 assign 方法来加载目标文档。

1. location对象的replace方法是将指定的文档替换当前文档。

2. location对象的assign方法是装入新的HTML文档。

方法二中用了 currentStyle、runtimeStyle 和 style 三个对象来捕获目标对象的样式设置。

1. currentStyle对象代表在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式。

2. runtimeStyle对象代表居于全局样式表、内嵌样式和 HTML 标签属性指定的格式和样式之上的对象的格式和样式。

3. style对象代表给定元素所有可能的内嵌样式的当前设置

阅读(326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~