Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果。在这个示例中我们将会使用media queries实现一个响应式的菜单。这个菜单会根据当前浏览器屏幕的大小变化而自动的呈现出不同的样式。如果浏览器屏幕大于800px,菜单则会显示在页面左侧;如果浏览器屏幕介于401px到800px之间,菜单则会显示在页面上方,与其他内容是上下关系;如果屏幕小于400px,则菜单仍在页面上方,但是菜单会变为下拉列表形式。

预览地址: http://htmlpreview.github.io/?https://github.com/huangbowen521/ResponsiveDesignTrial/blob/master/responsiveMenu.html

要实现这样的特效,首先要创建一个下拉列表形式的菜单,如下所示。

1
2
3
4
5
6
7
8
9
<div class="small-menu">
<form>
<select name="URL">
<option value="home.html">我的博客首页</option>
<option value="blog.html">我的博客列表</option>
<option value="whoami.html">我的个人简介</option>
</select>
</form>
</div>

然后还要创建一个使用了ul和li元素的菜单,放置在上面菜单的后面。

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="large-menu">
<ul>
<li>
<a href="home.html">我的博客首页</a>
</li>
<li>
<a href="blog.html">我的博客列表</a>
</li>
<li>
<a href="whoami.html">我的个人简介</a>
</li>
</ul>
</div>

最后再加一个div元素,用来放置一些文本以填充页面其他部分。

1
2
3
4
5
6
<div class="content">
<p>
上周五的时候我对某个项目做了一个更改,将里面的构建脚本由maven换成了gradle。原因之一是因为maven的配置太繁琐,由于其引入了lifecycle的机制,
导致其不够灵活,而gradle作为用groovy写的DSL,代码清爽、简单、灵活。原因之二是我们所有的项目构建都换成了gradle,为了保持技术栈单一,此项目
做迁移也是大势所趋。</p>
</div>

接下来就要设置media queries了,指定在不同屏幕尺寸下菜单表现出不同的样式。

当屏幕宽度小于400px时,我们需要隐藏ul菜单,显现下拉框菜单。

1
2
3
4
5
6
7
8
9
10
@media screen and ( max-width: 400px ) {

        .small-menu {
display: inline;
} .large-menu {
display: none;
}
}

当屏幕介于401px和800px时,显示ul菜单,并且将其设置为水平排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@media screen and ( min-width: 401px ) and ( max-width: 800px ) {

    .small-menu {
display: none;
} .large-menu {
display: inline;
width: 100%;
} .large-menu ul {
list-style-type: none;
} .large-menu ul li {
display: inline;
} .content {
width: 100%;
}
}

当屏幕尺寸大于800px时,则将ul菜单设置为页面左边,并且菜单排列为垂直排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@media screen and ( min-width: 801px ) {

    .small-menu {
display: none;
} .large-menu {
display: inline;
float: left;
width: 20%;
} .content {
float: right;
width: 80%; }
}

这样就简单实现了一个响应式的菜单,其实主要就是根据media queries来设置screen的条件,根据不同screen宽度来给页面元素设置对应的样式。当屏幕宽度发生变化时,会自动应用相应的样式。

代码已经被放置到了github上了,地址是https://github.com/huangbowen521/ResponsiveDesignTrial

使用media Queries实现一个响应式的菜单的更多相关文章

  1. media Queries实现一个响应式的菜单

    使用media Queries实现一个响应式的菜单   Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一 ...

  2. CSS3 media queries + jQuery实现响应式导航

    目的: 实现一个响应式导航,当屏幕宽度大于700px时,效果如下: 当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来: 思路: 1.为了之后在菜单上绑定事件,并且不向DOM ...

  3. AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

    AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...

  4. 使用jQuery开发一个响应式超酷整合RSS信息阅读杂志

    在线演示1 本地下载     申请达人,去除赞助商链接 如果大家喜欢阅读博客文章的话,可能都会使用RSS阅读器,今天这里我们将使用jQuery来开发一个响应式的RSS信息阅读应用,使用它你可以将你喜欢 ...

  5. 一个响应式框架——agera

    Google在上周开源了一个响应式框架——agera,相信它会慢慢地被广大程序员所熟知.我个人对这样的技术是很感兴趣的,在这之前也研究过RxJava,所以在得知Google开源了这样的框架之后第一时间 ...

  6. 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!

    相信小伙伴们在开发中或多或少都可能遇到过这样的问题:打开一个应用后,为了快速响应,先将数据库中的数据呈现给用户,然后再去网络上请求数据,请求成功之后将数据缓存至数据库,同时更新UI,但是我们经常会这样 ...

  7. 响应式导航菜单(css+js)

    1.响应式导航菜单 先来看下效果图把: 当视口大于640px的时候,导航条会显示在外,当视口小于768px的时候,导航菜单需要隐藏起来!代码如下: <!doctype html> < ...

  8. 使用media query 来实现响应式设计

    你的网页在手机上显示效果可以在电脑上一样好看.完成这个任务的奥秘被称为响应式设计,媒体查询(media query)是实现网页响应的关键. 在电脑上一个例子: <div class=" ...

  9. 如何使用CSS绘制一个响应式的矩形

    背景: 最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案. 有如下几种方案: 使用js来设置元素的高度 使用vw单位  div {width: 50vw; height: 50 ...

随机推荐

  1. memory allocation

    1 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符. 2,malloc, 必须 包含头文件<stdlib.h> 3, nt* p_scalar = ...

  2. ABAP-SQL基础知识

    SQL语法 我们在编写ABAP4程序的时候,经常需要从TABLE中根据某些条件读取数据,读取数据最常用的方法就是通过SQL语法实现的.ABAP/4中可以利用SQL语法创建或读取TABLE,SQL语法分 ...

  3. Android菜鸟成长记5-ADB和sqllite

    Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Androi ...

  4. 64位Win7下运行ASP+Access网站的方法

    64位Win7下运行ASP+Access网站的方法 近日系统升级为WIN7 64位之后,突然发现原本运行正常的ASP+ACCESS网站无法正常连接数据库. 网上搜索多次,终于解决了问题,总结了几条经验 ...

  5. Hdu OJ 5115 Dire Wolf (2014ACM/ICPC亚洲区北京站) (动态规划-区间dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:前面有n头狼并列排成一排, 每一头狼都有两个属性--基础攻击力和buff加成, 每一头 ...

  6. ELK日志管理

    ELK一般由三部分组成:logstash(日志格式化) + elasticsearch(检索) + Kibana(前台报表展示) 官网地址:https://www.elastic.co/ 本人在这用的 ...

  7. tabbar底部标题和子控制器标题为什么会保持一致?

    原因: 1.当self.navigationItem.title,self.tabBarItem.title没有赋值情况下值和self.title一致. 2.当切换到该控制器页面的时候自己设置的sel ...

  8. 管理权限<八>

    权限:如果用户要访问其它方案的对象,则必须为其授予对象的权限.为权限  权限 权限是指执行特定类型 sql 命令或是访问其它方案对象的权利,包括系统权限和对象权限两种. 系统权限  系统权限介绍 ...

  9. C# HttpWebRequest与HttpWebResponse详解

    C# HttpWebRequest与HttpWebResponse详解  http://www.codeproject.com/Articles/6554/How-to-use-HttpWebRequ ...

  10. anelife

    无论如何要把安e生活做到最棒! 1.先用脑再用力!