10分钟使用纯css实现完整的响应式导航菜单栏的效果
在开发hexo主题pixel的时候没有选择bootstrap和jquery实现响应式菜单,而是
使用了纯css实现响应式菜单,这个想法来自于You-Dont-Need-Javascript,
这个项目分享了很多精彩的纯css效果,值得学习。
简单阅读这些css效果源码之后发现大部分css实现动态效果都是使用[type="checkbox"]也就是一个单选按钮来保存html组件的状态,更复杂的效果可能
需要单选按钮组合来实现。
checkbox有一个checked状态,可以使用css伪类选择器[type="checkbox"]:checked来实现css切换。
下面是这个博客使用的导航菜单scss格式的源码
.nav-collapse {
height: 60px;
.nav-brand {
float: left;
padding: 10px;
font-style: italic;
font-family: Georgia;
font-size: 28px;
text-decoration: none;
color: #000;
margin-right: 50px;
}
[type="checkbox"].check,
label.toggle {
display: none;
}
.nav-nav {
li {
text-align: center;
line-height: 40px;
margin-left: 40px;
float: left;
list-style: none;
}
li:hover {
cursor: pointer;
position: relative;
}
li > a {
display: block;
width: 100%;
padding: 5px 0;
font-weight: bold;
font-size: 14px;
text-transform: uppercase;
letter-spacing: .2px;
}
li:hover > a {
color: #e1eb3e;
}
}
}
@media all and (max-width: 768px) {
.nav-collapse {
.nav-brand {
padding: 20px;
}
.nav-nav {
background: #fff;
opacity: 0;
display: block;
z-index: 9999;
position: fixed;
right: 0;
left: 0;
padding: 0;
top: 60px;
li {
display: block;
width: 100%;
text-align: left;
text-indent: 20px;
margin-left: 10px;
border-bottom: 1px solid #efefef;
}
}
label.toggle {
display: block;
background: #fff;
width: 40px;
height: 40px;
cursor: pointer;
position: absolute;
right: 20px;
top: 20px;
}
label.toggle:after {
content: '';
display: block;
width: 30px;
height: 5px;
background: #777;
margin: 7px 5px;
box-shadow: 0px 10px 0px #777, 0px 20px 0px #777;
}
[type="checkbox"].check:checked + .nav-nav {
opacity: 1;
transition: all .5s linear;
}
}
}
上面这个的导航菜单是固定在顶部的,如果需要导航菜单使用流动布局,下面这个是可以放到页面任何位置的导航菜单
.nav-collapse {
background-color: #000;
.nav-brand {
float: left;
padding: 10px;
font-style: italic;
font-family: Georgia;
font-size: 28px;
text-decoration: none;
color: #000;
margin-right: 50px;
}
[type="checkbox"].check,
label.toggle {
display: none;
}
.nav-nav {
li {
text-align: center;
float: left;
list-style: none;
}
li:hover {
cursor: pointer;
position: relative;
}
li > a {
display: block;
width: 100%;
color: #fff;
padding: 10px 12px;
font-weight: bold;
font-size: 14px;
text-transform: uppercase;
letter-spacing: .2px;
font-family: 'Consolas', 微软雅黑;
}
li:hover > a {
color: #e1eb3e;
}
}
}
@media all and (max-width: 768px) {
.top {
width: 100%;
}
.nav-collapse {
.nav-brand {
padding: 20px;
}
.nav-nav {
background: #fff;
display: none;
z-index: 9999;
li {
display: block;
width: 100%;
text-align: left;
text-indent: 20px;
margin-left: 10px;
border-bottom: 1px solid #efefef;
a {
color: #000;
}
}
li:hover > a {
color: #e1eb3e;
}
}
label.toggle {
display: block;
width: 40px;
height: 40px;
cursor: pointer;
}
label.toggle:after {
content: '';
display: block;
width: 30px;
height: 5px;
background: #fff;
margin: 7px 5px;
box-shadow: 0px 10px 0px #fff, 0px 20px 0px #fff;
}
[type="checkbox"].check:checked + .nav-nav {
opacity: 1;
display: block;
transition: all .5s linear;
}
}
}
如果想要看实际效果可以访问这个网站美剧天堂,效果是一样的。
休闲时间看看美剧是很好的消遣。
10分钟使用纯css实现完整的响应式导航菜单栏的效果的更多相关文章
- CSS 媒体查询创建响应式网站
使用 CSS 媒体查询创建响应式网站 适用于所有屏幕大小的设计 固定宽度的静态网站很快被灵活的响应式设计所取代,该设计可以根据屏幕大小进行上扩和下扩.利用响应式设计,无论您采用什么设备或屏幕来访问网 ...
- css媒体查询:响应式网站
css媒体查询:响应式网站 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定的设备范围. ...
- 一款纯css3实现的响应式导航
之前为大家介绍了好几款响应式导航.今天再给大家带来一款纯css3实现的响应式导航.这款导航还有个响应式的搜索框.废话少说,直接上图: 在线预览 源码下载 实现的代码. html代码: <di ...
- 响应式导航菜单(css+js)
1.响应式导航菜单 先来看下效果图把: 当视口大于640px的时候,导航条会显示在外,当视口小于768px的时候,导航菜单需要隐藏起来!代码如下: <!doctype html> < ...
- 使用 CSS 媒体查询创建响应式网站
简介 现今每天都有更多的手机和平板电脑问市.消费者能够拥有可想象到的各种规格和形状的设备,但是网站开发人员却面临一个挑战:如何使他们的网站在传统浏览器.手机和平板电脑浏览器上有很好的效果,如何在各种大 ...
- CSS:使用CSS媒体查询创建响应式布局
现如今在Web前端领域,BootStrap是一个最流行的UI库,其12列的栅栏系统为响应式布局提供了一种对程序员来说很好操作的模式. 追究Bootstrap的内在原理,其实就是通过媒体查询来完成对不同 ...
- 前端开发工程师 - 04.页面架构 - CSS Reset & 布局解决方案 & 响应式 & 页面优化 &规范与模块化
04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 课堂交流区 水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? & ...
- 使用纯css代码实现div的“回”字型“叠放”效果
正如大家所知道的那样,div是一个块级元素,也是网页编写过程中使用频率最高的一个元素,通过不同的样式控制可以实现一些最常见的页面效果,当然也可以实现一些比较复杂的页面效果,这里就展示一个本人面试过程中 ...
- 纯css,div隐藏滚动条,保留鼠标滚动效果。
示例1: html,body { height: 100%; } body { overflow: hidden; } .full-screen { position: relative; width ...
随机推荐
- mysql访问连接过多
今天开发中启动服务器,发现不管怎么样都会报连接池已满,随后删除数据库中的连接,发现可以启动,后来关闭后重新启动又出现连接池已满的错误.后监控数据库发现,当我关闭服务的时候,数据库的连接并没有关闭,随后 ...
- Mysql Error:1205错误诊断
前两天遇到一个1205(ER_LOCK_WAIT_TIMEOUT)的错误,弄了半天终于找到原因,掌握原理+细心才能找到罪归祸首.下面我给大家分享下这个问题的分析处理过程,希望对大家有所帮助.接到sla ...
- jquery checkbox操作
一.通过选择器选取CheckBox: 1.给CheckBox设置一个id属性,通过id选择器选取: <input type="checkbox" name="myB ...
- MySQL锁问题
MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎 采用的是表级锁:BDB存储引擎采用的是页面锁,但也支持表级锁:InnoDB存储引擎 ...
- lucene分词器与搜索
一.分词器 lucene针对不同的语言和虚伪提供了许多分词器,我们可以针对应用的不同的需求使用不同的分词器进行分词.我们需要注意的是在创建索引时使用的分词器与搜索时使用的分词器要保持一致.否则搜索的结 ...
- db2存储过程
一. 使用存储过程的好处 1. 减少客户机与服务器之间的网络使用率,以及数据库锁定保持的时间 应用程序通常在执行每个SQL语句都要跨网络两次,存储过程可以将SQL语句集中在一起, 从而使得对于每一组S ...
- android中的数据存取-方式一:preference(配置)
这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...
- ES6函数默认参数(Default Parameters)
语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷. 我们经常会这么写 function calc(x, y) { x = x || 0; y = y ...
- 盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?【转载】
综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? https://github.com/syedhali/EZ ...
- plsql+绿色版oracle连接远程数据库配置及提示缺少msvcr71.dll解决方法
之前一直用的sqldeveloper连接oracle数据库,这个免费而且也是官方出品,除了体积略大启动略慢外,也没什么不好的.. 一次偶然机会决定试一下plsql,整理一下安装资料,需要本地oracl ...