js判断浏览器类型javascript
<script type="text/javascript" >
<!--
function getOs()
{
var OsObject = "";
if(isIE = navigator.userAgent.indexOf("MSIE")!=-1) {
return "MSIE";
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")!=-1){
return "Firefox";
}
if(isChrome=navigator.userAgent.indexOf("Chrome")!=-1){
return "Chrome";
}
if(isSafari=navigator.userAgent.indexOf("Safari")!=-1) {
return "Safari";
}
if(isOpera=navigator.userAgent.indexOf("Opera")!=-1){
return "Opera";
}
}
alert("type -> "+getOs());
-->
</script>css
网页怎样在分辨率不一样的电脑上全屏显示html
第一种方法:作一个网页解决问题(长了点)java
若是只是由于浏览者改变了浏览器的设置,或者由于浏览器不兼容,使本身精心制做的网页变得"面目全非",那多使人沮丧!下面咱们以网页爱好者的经常使用工具Dreamweaver(如下简称DW)为例,列出几个网页制做初学者较常见的网页布局问题以及解决方法,但愿对初学者们有所帮助。bootstrap
1、消除任意缩放浏览器窗口对网页的影响swift
一番辛苦作出来的网页,在全屏状态下浏览一切正常。但在改变浏览窗口大小以后,网页就变得"不堪入目"了,这是个很值得注意的问题。浏览器
问题的根源还得从网页的布局提及,在DW中,网页内容的定位通常是经过表格来实现的,解决表格的问题也就成功了大半。网络
你们应该注意到,在DW中表格属性面板的高宽设定选择上提供了两种不一样类型:百分比和像素值。百分比的使用将会产生前面说到的那个毛病。这里所说的百分比是指表格的高或宽设置为上层标记所占区域高或宽的百分比,如在一个表格单元的宽度是600,在它里面嵌入了另一个表格,表格宽度占表格单元的50%,则这个表格的宽度为300,依此类推,若是在一个表格不是嵌于另外一个表格单元中,则其百分比是相对于当时窗口的宽度的。IE浏览器中,随便改动主页窗口的大小时,表格的内容也随之错位、变形,就是由于表格的百分比也要随着窗口的大小而改变成相应的百分比宽度。闭包
天然,解决这个问题的办法就是将表格宽度设置成固定宽度(也就是像素值)。另外若是外层表格已作好固定宽度设置,内层表格也能够适当使用百分比设置。清楚这个原则之后,若是出现相似的问题你们也知道怎么解决。iphone
2、让网页居中
说到了窗口大小就会顺着路子想到分辨率的问题,在800×600分辨率下制做的网页在1024×768分辨率的机器上打开,整个网页就会跑到左边;1024×768分辨率的网页在800×600分辨率的机器上有时也会变得"不堪入目"。两种分辨率各作一个吧?作起来费时,看起来也费劲。怎么办呢?
如今大多数网民都还在用800*600的分辨率,因此咱们通常能够以此分辨率为主,要想让网页在1024*768时居中,只要在网页原代码的<body>后紧加一句<center>,</body>前加一句</center>就OK了。不过有几个问题这是要注意一下,第一个就是上面说到的百分比的问题,表格、单元格的宽度单位最好要使用像素单位,而不要用百分比。例如width=770。若是你的表格宽度设的是百分比,那么使用大于800×600的像素时,网页就会拉宽,这样网页可能会变形。在<body>中加入leftmargin=0,即<body leftmargin=0>这种状况下,800×600支持的表格宽度为780像素时不会出现滚动条。还有一点要注意的是不能用DW中的层来定位。
<html>
<head></head>
<body topmargin=0 leftmargin=0>
<center>
<table cellspacing cellpadding width=760><tr><td></td></tr></table>
</center>
</body>
</html>
3、定义固定大小的文字
你们都知道,在IE浏览器的功能设置中,有一个能够自由设置窗口内容字体大小的功能,这样因为不一样访问者的设置习惯不一样,呈如今他们面前的网页有时也会不不相同。好比你可能原本设计时用的是2号字体,结果因为用户对浏览器的额外设定,变的更大了,这时你的网页也可能变得"不堪入目"。虽然不是你的错,但客户是上帝。
若是使用了网页中的CSS样式表技术,就不会出现上述状况了。使用快捷键"Shift+F11"打开样式表"CSS style"编辑器,在窗口中单击鼠标右键执行"New CSS style..."命令新建一个样式表,而后在给出的列表中选择"类型"选项,定义文字属性参数(通常文字的大小选择12px较为适宜)。完成后选择网页编辑窗中的文本,单击新的样式表名称,能够看到选中的文本发生了变化。预览时试试定义的文本字体尺寸还会不会随浏览器的选择字体大小而改变。
4、让网页适应不一样的浏览器
浏览器的格局如今是两分天下,一分是IE,另外一分是NetScape,在国内Ie有绝对的占有率,在这种状况下咱们设计的网页只要兼容它就好了,但NetScape在国外仍是有不少人使用,毕竟它是浏览器的元老。
虽然没有办法作出让全部浏览器都兼容的网站,但只要注意如下几点,作出来的网页在各个浏览器都中能达到比较好的显示效果:
不要混合使用层和表格排版,若是是父子关系,如层中表格,不在此原则范围内。
内联式的 CSS 在 Netscape Navigator 中常常会出现问题,使用链式或内嵌式。
有时须要在空层插入表格或者透明图片,以保证在 Netscape Navigator 里的效果。
对于只有几个像素宽度或高度的层,改用图片来实现。
避免使用 W3C 组织不推荐的排版属性,用 CSS 代替。
第二种方法:作两个适合不一样分辨率的页面,一个是800×600,一个是1024×768,在800×600的页面中加入一下代码就能够实现跳转了:
解决分辨率问题在Dreamweaver中没有此项功能,咱们只能手动加入一段JavaScript代码。首先在change-ie.html或change-nc.html页面代码中的< head>和< /head>中加入如下代码:
< script language=javascript>
< !--
function redirectPage(){
var url800x600=〃index-ie.html〃; //定义两个页面,此处假设index-ex.html和1024-ie.html同change-ie.html在同一个目录下
var url1024x768=〃1024-ie.html〃;
if ((screen.width==800) && (screen.height==600)) //在此处添加screen.width、screen.height的值能够检测更多的分辨率
window.location.href= url800x600;
else if ((screen.width==1024) && (screen.height==768))
window.location.href=url1024x768;
else window.location.href=url800x600;
}
// -->
< /script>
而后再在< body…>内加入onLoad=〃redirectPage()〃
最后,一样地,在< body>和< /body>之间加入如下代码来显示网页的工做信息:
< script language=JavaScript>
< !--
var w=screen.width
var h=screen.height
document.write(〃系统已检测到您的分辨率为:〃);
document.write(〃< font size=3 color=red>〃);
document.write(w+〃×〃+h);
document.write(〃< /font>〃);
document.write(〃正在进入页面转换,请稍候…〃);
// -->
< /script>
页面在不一样屏幕分辨率下存在的问题及解决办法
(未考虑800*600或更低分辨率的状况)
一 问题
在不一样分辨率下,页面布局存在不一样程度的差别,特别是页面上的表单控件,其宽度默认是固定值“width:150px”,当分辨率较高时,表格中的空白显得过多,页面布局显得很不协调,在宽屏显示器上尤其明显。
二 解决办法
方法1. 为不一样分辨率单独作样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件。样式文件命名格式如:forms[_屏幕宽度].css,样式文件中只需从新定义文本框和下拉框的宽度便可。
在包含的头文件headr.inc中加入js代码:
if(screen.width > 1024){
document.write('<link rel="stylesheet" type="text/css" href="${path}/nrmus/etc/css/forms_'+ screen.width +'.css">');
}
forms_1280.css文件内容:
/* 分辨率宽度为1280的时候,文本框和下拉框的宽度属性(width)单独定义
* 参考计算方法为:(分辨率宽度-174)/4 * 0.7
* 左侧菜单栏宽度为174px;右侧页面表格是4列;控件宽度为单元格的70%
* (1280-174)/4*0.7 = 193
*/
input.text
{
background:#FFFFFF;
border:1px solid #B5B8C8;
padding:3px 3px;
height:22px;
line-height:18px;
vertical-align:middle;
padding-bottom:0pt;
padding-top:2px;
width: 193px;
color: #333;
}
select.select{
width: 193px;
}
优势:实现很简单,代码量少;而且可针对不一样分辨率作更细粒度的页面控制。
缺点:无明显缺点。
方法2 将整个页面的宽度设置为固定值,并使其居中显示。
优势:能够很大程度的消除不一样分辨率下的显示差别。
缺点:分辨率宽度大于这个固定值的时候,页面两边会出现空白。
方法3 用js判断分辨率,修改body的zoom属性(IE特性),便可实现对整个页面进行缩放,相似IE8或其它浏览器提供的缩放功能。
优势:实现简单,页面能进行缩放。
缺点:缩放是宽度和高度的等比缩放,高分辨率下字体、图片看起来会变小,问题解决的不完全。
三 总结
推荐方法1。页面布局的变化和分辨率的宽度有密切关系,和高度关系不大;经常使用的分辨率宽度也就几种,作几个简单的css文件便可。
一. 在HTML的头部加入meta标签
在HTML的头部,也就是head标签中增长meta标签,告诉浏览器网页宽度等于设备屏幕宽度,且不进行缩放,代码以下:
简单分析一下这一行代码的含义:width=device-width表示网页的宽度等于设备屏幕的宽度,initial-scale=1.0表示设置页面初始的缩放比例为1,user-scalable=no表示禁止用户进行缩放,maximum-scale=1.0 和 minimum-scale=1.0 表示设置最大的和最小的页面缩放比例。由于各大浏览器对meta标签的解析程度不同,因此咱们要尽量的去兼容全部浏览器。
在页面布局中,相对宽度和绝对宽度相结合来进行布局,将更有利于网页的可维护性。
下图分别是拉勾网在iPhone五、iPhone6和iPhone 6 Plus下的布局,能够看到随着设备的屏幕宽度不一样,即便是同一套网页代码显示出来的字体大小以及间隔也都不同。红线框内部分就是使用了百分比布局的作法,对于网页的可维护性将更好。
目前通常常见的实现响应式有两种方法,一种是利用媒体查询,另一种是bootstrap下的栅格布局,之后介绍bootstrap的时候来介绍栅格布局,这里主要来讲一下如何利用媒体查询实现响应式布局。
媒体查询,即 @media 查询,媒体查询能够针对不一样的屏幕尺寸设置不一样的样式,特别是若是你须要设计响应式的页面,@media 是很是有用的。当你重置浏览器大小的过程当中,页面也会根据浏览器的宽度和高度从新渲染页面。由于是设置样式,因此将媒体查询相关的代码放在css文件的最下方便可。
为了更加清晰地理解响应式的用法,我在下方列举了两个案例。第一个案例比较简单,实现了在不一样的页面宽度中改变body的背景颜色的做用。第二个案例以具体的项目来举例,更加方便用户
实例1:
若是页面宽度小于 300 像素,则修改body的背景颜色为红色:
@media screen and (max-width: 300px) { body { background-color:red; } }若是页面宽度大于 300 像素而且小于600像素,则修改body的背景颜色为绿色:
@media screen and (min-width: 300px) and (max-width:600px) { body { background-color:green; } }若是页面宽度大于 600 像素,则修改body的背景颜色为蓝色:
@media screen and (min-width: 600px) { body { background-color:blue; } }
代码解释:
screen 表示电脑屏幕,平板电脑,智能手机等,min-width和max-width 用于定义设备中页面的最小和最大宽度。
实例2:视觉中国首页(http://www.shijue.me/)的响应式实现
首先来看该页面在不一样窗口中的展现效果:
在窗口宽度大于1200px时候的页面样式以下:
在窗口宽度大于900px而且小于1200px时候页面样式以下:
当页面宽度小于900px时候页面样式以下:
接下来咱们来看具体的代码实现:
html代码以下:注意有几张图片则写几个col
<div class="group_wrap"> <div class="group"> <div class="col"> <div class="img_logo"> <img src="img/8.jpg" alt=""> </div> </div> <div class="col"> <div class="img_logo"> <img src="img/9.jpg" alt=""> </div> </div> </div> </div>
css代码以下,默认是页面宽度大于1200px时候的页面:
.group_wrap{ width: 100%; overflow: hidden; } .group{ width: 1200px; margin: 0 auto; overflow: hidden; } .col{ width: 280px; margin: 10px; float: left; } .img_logo{ padding: 10px; background: white; }
实现响应式代码以下,放在css文件的最下方便可:
/*当页面的宽度在900px ~ 1200px之间的时候*/ @media screen and (min-width: 900px) and (max-width: 1200px){ .group{ width: 900px; } } /*当页面的宽度在600px ~ 900px之间的时候*/ @media screen and (min-width:600px) and (max-width: 900px){ .group{ width: 600px; } }
总结:实际上响应式页面的实现很是简单,只要认真学,常常练,必定能够熟练掌握的!
在咱们日常的网页布局过程当中常用绝对单位像素(px)来进行布局,这样的布局不适合咱们自适应网页的实现,因此咱们如今来介绍两种常见的绝对单位em和rem。rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem你们必定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很类似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。
em的特色 : ① em的值并非固定的; ② em始终会继承父级元素的字体大小。
废话很少说,直接上代码:
html代码:
<div class="one"> <span>第一层</span> <div class="two"> <span>第二层</span> <div class="three"> <span>第三层</span> </div> </div> </div>
css代码:
body{ font-size: 20px; } .one{ font-size: 1.5em; } .two{ font-size: 0.5em; } .three{ font-size: 2em; }结果:
.one ---> 30px 1.5 * 20 = 30px
.two ---> 15px 0.5 * 30 = 15px
.three ---> 30px 2 * 15 = 30px
代码分析:
em会继承父级元素的字体大小,对于大多数浏览器而言,若是没有给body字体大小,则默认为16px,因此对于class名称为 one 的div而言,它的父亲是body,因此 1em = 16px; 本案例中规定了body的字体大小为20px,因此对于 .one 而言,1em = 20px ,那么 1.5em = 30px。因此 one 的 font-size 为30px。
对于class名称为 two 的div而言,它的父亲是 one ,由于em会继承父级的元素的字体大小,因此 1em = 30px, 那么 0.5em = 15px,因此 two的 font-size为15px。
对于class名称为 three 的div而言,它的父亲是 two ,由于em会继承父级的元素的字体大小,因此 1em = 30px, 那么 0.5em = 15px,因此 two的 font-size为15px。
rem是CSS3新增的一个相对单位(root em,根em),这个单位引发了普遍关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优势于一身,经过它既能够作到只修改根元素就成比例地调整全部字体大小,又能够避免字体大小逐层复合的连锁反应。
咱们来看下面的例子:
html代码:
<div class="one"> <span>第一层</span> <div class="two"> <span>第二层</span> <div class="three"> <span>第三层</span> </div> </div> </div>css代码:
html{ font-size: 20px; } .one{ font-size: 1.5rem; } .two{ font-size: 0.5rem; } .three{ font-size: 2rem; }结果:
.one ---> 30px 1.5 * 20 = 30px
.two ---> 10px 0.5 * 20 = 10px
.three ---> 40px 2 * 20 = 40px代码分析:
rem是CSS3中引进的新单位,rem的值始终相对于根元素html中设置的font-size大小,若是没有设置,则在大多数浏览器中默认为font-size为16px,那么1rem = 16px;
因此对于class名称为one的div而言,1.5rem = 1.5 * 20 = 30px。其余的相似,再也不一一赘述。
关于em和rem的总结:
“em”是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能须要知道他父元素的大小,在咱们屡次使用时,就会带来没法预知的错误风险。而rem则相对就好用不少了,就我所在的公司而言,在实际的项目开发中用rem的状况也是很是多的。估计在不久的未来,国内的设计师将会和国外的设计师同样,爱上rem。
实际上讲了这么多,你们可能已经了解了rem的用法,可是还不了解如何利用rem去实现移动端的自适应。说到底,rem实现移动端自适应的原来在于它自己的特性,它能够始终根据根元素的字体大小去改变本身的值。目前各类常见手机的屏幕尺寸大小以下图所示:
咱们想实现手机端自适应,就是可让页面的元素字体、间距、宽高等属性的属性值能够随着手机屏幕尺寸的变化而变化,接下来咱们看如何利用js来动态的设置rem并实现移动端的自适应,Js代码以下:
//获取html元素 var html = document.getElementsByTagName('html')[0]; //屏幕的宽度(兼容处理) var w = document.documentElement.clientWidth || document.body.clientWidth; //750这个数字是根据你的设计图的实际大小来的,因此值具体根据设计图的大小 html.style.fontSize = w / 750 + "px";
以上代码实现了利用Js获取设备屏幕的宽度,并根据屏幕的宽度动态改变根元素html的font-siz属性的做用。好比说,对于iphone6而言,屏幕尺寸为750,那么在iPhone6下html的font-size为1px,因此1rem = 1px;对于iPhone5而言,屏幕尺寸为640,那么在iPhone5下html的font-size为640/750 = 0.85333px,因此1rem = 0.85333px。这样的话即便咱们对一个元素设置一样的大小和单位,也会在不一样的设备下显示不一样的大小。好比说div{width:100rem},在iPhone6下它的宽度将等于100px,而在iPhone5下它的宽度等于100 * 0.85333 = 85.333px。这样咱们就真正实现了移动端的自适应,怎么样,是否是很简单呢!