使用CSS3的@media来实现网页自适应

http://www.zjgsq.com/1180.html


如今,电脑显示器的屏幕分辨率向越来越大发展,而手机等移动设备终端的分辨率却不可能大到哪里去。越来越多的网站,开始让自己的页面自适合各种分辨率,在小分辨率下显示基本的内容,在大分辨率下显示全部功能,甚至是分多等级的多版本。
作为web前端开发人员需要知道并且会用这种知识。

css2的@media

css2里面虽然支持@media属性,但是能实现的功能比较少,一般只用做打印的时候做特殊定义的CSS。
语法: @media sMedia { sRules }
说明:
sMedia :  指定设备名称。请参阅附录:设备类型
sRules :  样式表定义
指定样式表规则用于指定的设备类型。请参阅link对象的media属性(特性)。
示例:

1
2
3
4
5
6
7
8
9
// 设置<span id= "3_nwp" style= "width: auto; height: auto; float: none;" ><a id= "3_nwl" href= "http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ezjgsq%2Ecom%2F1180%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=74027074_cpr&k=%CF%D4%CA%BE%C6%F7&k0=%CF%D4%CA%BE%C6%F7&k1=%E4%AF%C0%C0%C6%F7&k2=%D6%D5%B6%CB&k3=%B4%F2%D3%A1%BB%FA&k4=only&k5=%D0%A7%B9%FB%CD%BC&sid=845bebaebeead273&ch=0&tu=u1829538&jk=ebc7f5206386b31d&cf=29&fv=14&stid=9&urlid=0&luki=3&seller_id=1&di=128" target= "_blank" mpid= "3" style= "text-decoration: none;" ><span style= "color:#0000ff;font-size:12px;width:auto;height:auto;float:none;" >显示器</span></a></span>用字体尺寸
@media  screen {
BODY { font-size : 12pt ; }
}
// 设置<span id= "4_nwp" style= "width: auto; height: auto; float: none;" ><a id= "4_nwl" href= "http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ezjgsq%2Ecom%2F1180%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=74027074_cpr&k=%B4%F2%D3%A1%BB%FA&k0=%B4%F2%D3%A1%BB%FA&k1=only&k2=%D0%A7%B9%FB%CD%BC&k3=html&k4=%B4%F2%D3%A1&k5=css3&sid=845bebaebeead273&ch=0&tu=u1829538&jk=ebc7f5206386b31d&cf=29&fv=14&stid=9&urlid=0&luki=6&seller_id=1&di=128" target= "_blank" mpid= "4" style= "text-decoration: none;" ><span style= "color:#0000ff;font-size:12px;width:auto;height:auto;float:none;" >打印机</span></a></span>用字体尺寸
@media  print {
@import  "print.css"
BODY { font-size : 8pt ;}
}

css3的@media

@media 属性在CSS3里面已经演变成一种 media queries(媒体查询/匹配)了,在CSS3里面,可以用查询语句来匹配各种类型的屏幕。
语法:@media : { sRules }
取值:

1
2
<sMedia>:指定设备名称。
{sRules}:样式表定义。

说明:
判断媒介(对象)类型来实现不同的展现。此特性让CSS可以更精确作用于不同的媒介类型,同一媒介的不同条件(分辨率、色数等等).

01
02
03
04
05
06
07
08
09
10
11
12
13
media_query: [only | not]?  [ and  ]*
expression: (  [: ]? )
media_type:  all aural braille handheld print projection screen tty tv embossed
media_feature: width | min-width | max-width
| height | min-height | max-height
| device-width | min-device-width | max-device-width
| device-height | min-device-height | max-device-height
| device-aspect-ratio | min-device-aspect-ratio | max-device-aspect-ratio
| color | min-color | max-color
| color-index | min-color-index | max-color-index
mono <span id= "2_nwp" style= "width: auto; height: auto; float: none;" ><a id= "2_nwl" href= "http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ezjgsq%2Ecom%2F1180%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=74027074_cpr&k=chrome&k0=chrome&k1=%CF%D4%CA%BE%C6%F7&k2=%E4%AF%C0%C0%C6%F7&k3=%D6%D5%B6%CB&k4=%B4%F2%D3%A1%BB%FA&k5=only&sid=845bebaebeead273&ch=0&tu=u1829538&jk=ebc7f5206386b31d&cf=29&fv=14&stid=9&urlid=0&luki=2&seller_id=1&di=128" target= "_blank" mpid= "2" style= "text-decoration: none;" ><span style= "color:#0000ff;font-size:12px;width:auto;height:auto;float:none;" >chrome</span></a></span> | min-monochrome | max-monochrome
| resolution | min-resolution | max-resolution
| scan | grid

解析
media_query
:媒体查询条件。包括了 only not and 这些经常在程序里面出现的逻辑判断。
expression:表达式。媒体特征的匹配与否。
media_type:媒体的种类。包括了很多。
media_feature:媒体的特征。常用的是 min-width max-width 最小最大宽度的判断。

DEMO(推荐在Chrome或者FIREFOX下打开,打开后,按快捷键“CTRL”+”+”,“CTRL”+”-”来缩放页面):
使用CSS3的@media来实现网页自适应的效果图

CSS代码

1
2
3
4
5
body{ background : blue ;} /*宽度500px-800px之间+高度100px-400px之间 蓝色*/
@media  screen and ( max-width : 500px ){body{ background : green ;}} /*宽度小于500px时 绿色*/
@media  screen and ( min-width : 800px ){body{ background : red ;}} /*宽度大于800px时 红色*/
@media  screen and ( max-height : 100px ){body{ background :yellow;}} /*高度小于100px时 黄色*/
@media  screen and ( min-height : 400px ){body{ background :pink;}} /*高度大于400px时 粉色*/

HTML代码

1
2
3
4
5
6
< p >效果演示,请缩小/扩大< span id = "0_nwp" style = "width: auto; height: auto; float: none;" >< a id = "0_nwl" href = "http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ezjgsq%2Ecom%2F1180%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=74027074_cpr&k=%E4%AF%C0%C0%C6%F7&k0=%E4%AF%C0%C0%C6%F7&k1=%D6%D5%B6%CB&k2=%B4%F2%D3%A1%BB%FA&k3=only&k4=%D0%A7%B9%FB%CD%BC&k5=html&sid=845bebaebeead273&ch=0&tu=u1829538&jk=ebc7f5206386b31d&cf=29&fv=14&stid=9&urlid=0&luki=4&seller_id=1&di=128" target = "_blank" mpid = "0" style = "text-decoration: none;" >< span style = "color:#0000ff;font-size:12px;width:auto;height:auto;float:none;" >浏览器</ span ></ a ></ span >的窗口大小注意背景色的变化。逻辑如下:</ p >
< p >/*宽度500px-800px之间+高度100px-400px之间 蓝色*/</ p >
< p >/*宽度小于500px时 绿色*/</ p >
< p >/*宽度大于800px时 红色*/</ p >
< p >/*高度小于100px时 黄色*/</ p >
< p >/*高度大于400px时 粉色*/</ p >

demo演示地址:http://www.zjgsq.com/example?pid=1180


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值