html5学习之侧边栏实现
来源:互联网 发布:zip解压软件for mac 编辑:程序博客网 时间:2024/06/05 19:44
- 设置布局
- 隐藏显示侧边栏
- 添加菜单内容
- 为菜单列表添加事件
- 设置active菜单
- 设置默认选中菜单
- 设置viewport
- 使用媒体查询
打算学习一些html5的知识,暂时不使用jquery.js,计划做一个侧边栏,侧边栏可以隐藏,点击侧边栏中的菜单改变content中的内容。
--------------------------------- header---------------------------------| ||sidebar |content| || |
为适应移动设备,要进行响应式网站设计,主要两个点:
+ 在head中添加meta viewport
+ 在css中使用媒体查询,@media
1. 设置布局
<div class="top"></div><div class="sidebar"></div><div class="content"></div>
使用absolute方式进行布局
.top { position: absolute; left: 0; right: 0; height: 72px;}.sidebar { position: absolute; left: 0; top: 72px; bottom: 0; width: 178px;}.content { position: absolute; left:178px; top: 72px; right: 0; bottom: 0;}
2. 隐藏/显示侧边栏
设置display为none或block可以控制元素的隐藏或显示。不使用js控制display只使用css实现的话可以使用label+input(checkbox)。
<div class="top"> <label id="sideBarControl" for="sideToggle">显示/隐藏菜单</label></div><input type="checkbox" id="sideToggle"><div class="sidebar"> <p>菜单内容</p></div><div class="content"></div>
点击#sideBarControl相当于点击#sideToggle,可以根据#sideToggle:checked控制display。
#sideToggle { display: none;}.sidebar { display: none;}.content { position: absolute; left:0; top: 72px; right: 0; bottom: 0;}#sideToggle:checked + .sidebar{display: block}#sideToggle:checked ~ .content{left: 178px}
3. 添加菜单内容
使用ul li列表显示菜单内容。
<div class="sidebar"> <p>菜单内容</p> <ul class="nav"> <li><a id="_1" href="#">Menu1</a> </li> <li><a id="_2" href="#">Menu2</a> </li> <li><a id="_3" href="#">Menu3</a> </li> </ul></div>
取消li前的点,为li添加边框,取消标签a的下划线,防止相邻的边框重叠使用:last-child进行设置
.nav { list-style: none; position: absolute; left: 0;right: 0; padding: 0;}.nav a:link{color: #000}.nav a:visited {color: #000}.nav a:hover { color: #aaaaaa;}.nav li { border: solid 1px; padding: 5px 0 5px 0; border-bottom-width: 0px;}/*选择最后一个元素*/.nav li:last-child {border-bottom-width: 1px}.nav a { text-decoration: none;}
4. 为菜单列表添加事件
不使用jquery的话,可以使用document.querySelectorAll选择元素,使用addEventListener添加事件。
var items = document.querySelectorAll(".nav li");//可以使用[].forEach.call进行遍历[].forEach.call(items, function (item) { //添加click事件 item.addEventListener("click", function() { var content = document.querySelector(".content"); content.innerHTML = this.textContent; });});
5. 设置active菜单
为被点击的菜单的class添加active项,使用this.parentNode.children可以获得所有兄弟元素。
var items = document.querySelectorAll(".nav li");// 可以使用Array.prototype.forEach.call进行遍历[].forEach.call(items, function (item) {// 添加click事件 item.addEventListener("click", function() {// 遍历所有兄弟节点this.parentNode.children Array.prototype.forEach.call(this.parentNode.children, function (child) {// 删除元素的某个class child.classList.remove("active"); }) this.classList.add("active"); var content = document.querySelector(".content"); content.innerHTML = this.textContent; });});
修改active菜单的背景
li.active { background-color: #f8f8f8; border-right-width: 0px;}
6. 设置默认选中菜单
可以通过模拟鼠标点击设置默认的选择菜单
document.querySelector("#_1").click(); // 模拟鼠标点击
7. 设置viewport
在head中添加如下代码:
<meta name="viewport" content="width=device-width,user-scalable=no" />
8. 使用媒体查询
@media only screen and (min-width: 992px) { .top { height: 72px; } .sidebar { top: 72px; width: 178px; } .content { top: 72px; } #sideToggle:checked ~ .content { left: 178px; } }@media only screen and (max-width: 991px) { .top { height: 10%; } .sidebar { top: 10%; width: 30%; } .content { top: 10%; } #sideToggle:checked ~ .content { left: 30%; } }
0 0
- html5学习之侧边栏实现
- Android学习之基于DrawerLayout的侧边栏实现
- 索引之LinearLayout侧边栏+listview实现
- Android学习笔记(四)之碎片化Fragment实现仿人人客户端的侧边栏
- iOS侧边栏实现
- DrawerLayout 实现侧边栏
- 侧边栏的实现
- 侧边栏实现总结
- JQuery侧边栏实现
- Ionic实现侧边栏
- iOS 之 侧边栏
- android学习笔记:联系人侧边栏的实现
- Android之DrawerLayout实现ViewPager+左右侧边栏
- Android 实现侧边栏之状态栏颜色适配
- HTml5侧边栏基本格式制作
- Metro UI CSS 学习笔记之组件(侧边栏)
- html5+css3项目 (企业网站之侧边栏的编写)
- android实现侧边导航栏
- 项目35.3 Bessel函数
- 大整数乘法
- iOS 远程推送
- Mac 中使用Wireshark
- kerberos认证全程
- html5学习之侧边栏实现
- 一切交由明天分晓
- OpenCV参考手册之Mat类详解(二)
- 【2015.10.11】bat批处理空格问题
- POJ - 3414 Pots(15.10.10 搜索专题)bfs
- 第四周项目2 建立单链表算法库
- OpenCV参考手册之Mat类详解(三)
- 经典联合查询 ,以表ipdateaex为主,如果表swbase有和他相同的数据,就提取
- spring注解@service("service")括号中的service有什么用