响应式布局

关于web页面布局,我们听说过的有固定布局(fixed layout),流体布局(fluid layout),其中响应式布局是应运而生。指:

一是宽屏的愈发普及;

二是CSS3 media queries属性的诞生(通过CSS代码,实现不同宽度显示器下不同的布局,可以即时响应的web页面布局。)

语法:

@media<sMedia> { sRules }

取值:

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

浏览器兼容:

类型IEInternet ExplorerFirefoxFirefoxChromeChromeOperaOperaSafariSafari
版本 (×)IE6 (×)Firefox 2.0 (√)Chrome 1.0.x (√)Opera 9.63 (√)Safari 3.1
(×)IE7 (×)Firefox 3.0 (√)Chrome 2.0.x   (√)Safari 4
(×)IE8 (√)Firefox 3.5      
         

 

.media_quires { width: 200px; padding: 40px 20px; background-color: #000; }
@media all and (min-width: 800px) {
            .media_quires {
                background-color: #ff0000;
            }
}
@media screen and (max-width: 1200px) {
            .media_quires {
                background-color: #0000ff;
            }
}
<div class="media_quires">改变浏览器窗口大小背景颜色改变</div>

当浏览器窗口大于1200px的时候 div背景显示红色; 当浏览器窗口小于等于1200px的时候,div背景显示蓝色。

max-width:1200px 可以理解为浏览器宽度在0~1200px(包括1200px)都显示为蓝色;

min-widht:800px 可以理解为800px(包括800px)即以上都显示为红色。

 

 测试:

当去掉max-width:1200的限制。当小于800px的时候为默认的黑色。

 

<link rel="stylesheet" type="text/css" href="css/normalScreen.css" media="screen and (max-width:1024px)">
<link rel="stylesheet" type="text/css" href="css/widthScreen.css" media="screen and (min-width:1024px)">
 <div class="nav">
        <h4 class="on"><a href="#">HTML代码</a> </h4>
        <h4><a href="#" >CSS代码</a></h4>
        <h4><a href="#" >JS代码</a></h4>
    </div>
    <p id="mes"></p>

normalScreen.css

.nav{ border-bottom: 1px solid #ededed; background: #f0f3f9; text-align: center;}
.nav h4{ display: inline-block; *display: inline; margin: 0 1em; padding: 5px 1em; *zoom: 1;}
.nav .on{ background-color: #34538b;}
.nav .on a{ color: #fff;}

widthScreen.css

.nav { width: 20%; border-right: 1px solid #ededed; background-color: #F0F3F9; text-align: center; float: left; }

适用于IE6,7,8使用js实现

if (!window.screenX) {
            //IE6~8
            var oStyle = document.createElement("link");
            oStyle.rel = "stylesheet";
            oStyle.type = "text/css";
//            if (document.body.clientWidth > 1024) {
            if (screen.width > 1024) {
                oStyle.href = "css/widthScreen.css";
            } else {
                oStyle.href = "css/normalScreen.css";
            }
            document.getElementsByTagName("head")[0].appendChild(oStyle);
        }

注意:1、在浏览器上没效果是因为使用screen.width显示屏幕的宽度,跟电脑设置的分辨率有关。

2、当使用document.body.clientWidth只在浏览器初始化加载的时候响应。而不是浏览器改变窗口大小响应。可以加在$(window).resize里面响应

3、此外应还注意加默认的css。防止页面在加载是出现延迟

<link rel="stylesheet" type="text/css" href="common.css" media="all" />
posted @ 2015-03-05 11:17  psycho_z  阅读(213)  评论(0编辑  收藏  举报