现今每天都有更多的手机和平板电脑问市。消费者能够拥有可想象到的各种规格和形状的设备,但是网站开发人员却面临一个挑战:如何使他们的网站在传统浏览器、手机和平板电脑浏览器上有很好的效果,如何在各种大小的屏幕上提供一流的用户体验,答案是:采用响应式设计。响应式设计可以随所显示的屏幕大小而改变。实现响应式设计的主要方法是使用 CSS 媒体查询。--摘自IBMdeveloperworks

相信大家很多人都了解Bootsrap这个响应式框架,简单来说,该框架根据不同的分辨率提供非常友好的浏览体验,里面的核心就是媒体查询@media。

 

如何使用?

@media (min-width:800px) { ... }

这是一条基本的媒体查询语句,@media可以看成 if

如果@media后面的条件满足,则执行后面的花括号的语句。

简单尝试



<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    .header{
        background-color: red;
        width: 100%;
        height: 40px;
    }
    @media ( min-width: 500px) {
        .header{
            background-color: blue;
        }
    }
</style>
<body>

<div class="header"></div>

</body>
</html>



@media ( min-width: 500px) 这里开始判断当前的分辨率,如果最小分辨率为500px(分辨率在500px以上)则
.header 的背景色变为蓝色,相当于重写了background-color属性。
请多尝试其他属性如width,block等等。

制作响应式导航



<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>媒体查询</title>
    <script rel="script" src="jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            $("a").click(function(){
                $("li").toggle();
            })
        })
    </script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #header{
            width: 100%;
            background-color: #4db14d;
            height: 40px;
        }
        ul{
        }
        li{
            float: left;
            list-style: none;
            width: 80px;
            display: block;
            padding-top: 10px;
            color: #fff;
            background-color: #4db14d;
            text-align: center;
        }
        a{
            padding-top: 10px;
            padding-bottom: 10px;
            color: #fff;
            display: none;
            width: 100%;
            text-align: center;
        }
        @media ( max-width: 520px ) {
            li{
                width: 100%;
                border-top: 1px solid #1b961b;
                padding-bottom: 10px;
                display: none;
            }
            a{
                display: block;
            }
        }
    </style>
</head>
<body>

<div id="header">
    <a>Fuck</a>
    <ul>
        <li>测试1</li>
        <li>测试2</li>
        <li>测试3</li>
        <li>测试4</li>
        <li>测试5</li>
        <li>测试6</li>
    </ul>
</div>
</body>
</html>



在导航中,除了菜单以外肯定还有展开菜单的图标(低分辨率下),所以我们制作的时候可以先写上,并将它隐藏。

我们做的仅是判断分辨率,如果分辨率小余某个值,则隐藏菜单,使用菜单突变将它显示。

注意的是我这里将小分辨率下,菜单的宽度设置到了100%,方便使用体验。可以尝试更好地方法。

然后使用jQuery显示/隐藏菜单or菜单图标

 

 

除此之外,还可以有更多的判断,如:分辨率在800-1200之间(min-width:800px)and (max-width:1200px)

@media (min-width:800px) and (max-width:1200px) { ... }