java--css+js做的树形菜单(完整版)
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<html>
<link rel="stylesheet" type="text/css" href="<%=basePath%>css/menu.css">
<head>
<title>树形菜单</title>
</head>
<body class="panel" topmargin="0" leftmargin="0">
<div id="body" style="width: 186px">
<!-- 树形结构菜单 -->
<ul id="menu">
<!-- levelOne 一 -->
<li class="L1">
<a href="javascript:c(OneLevelOne01);" id="OneLevelOne01">
<span><img src="<%=basePath%>images/jia.png" id="OneLevelOne01Image" align="absMiddle"/> 客户关系管理系统</span>
</a>
</li>
<ul id="OneLevelOne01d" style="display: none;" class="U1">
<!-- levelTwo -->
<li class="L21">
<a href="javascript:c(OneLevelTwo01);" id="OneLevelTwo01">
<span><img src="<%=basePath%>images/jia.png" align="absMiddle" id="OneLevelTwo01Image"/> 文件管理</span>
</a>
</li>
<ul id="OneLevelTwo01d" style="display: none;">
<!-- levelThree -->
<li class="L3"><a href="fileList.action" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle"/> 文件列表</span>
</a>
</li>
<!-- levelThree -->
<li class="L3"><a href="toUploadJsp.action" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 文件上传</span>
</a>
</li>
</ul>
<!-- levelTwo -->
<li class="L21">
<a href="javascript:c(OneLevelTwo02);" id="OneLevelTwo02">
<span><img src="<%=basePath%>images/jia.png" align="absMiddle" id="OneLevelTwo02Image" /> 111111</span>
</a>
</li>
<ul id="OneLevelTwo02d" style="display: none;">
<!-- levelThree -->
<li class="L3"><a href="" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 000001</span>
</a>
</li>
<!-- levelThree -->
<li class="L3"><a href="" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 000002</span>
</a>
</li>
<!-- levelThree -->
<li class="L3"><a href="" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 000003</span>
</a>
</li>
<!-- levelThree -->
<li class="L3"><a href="" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 000004</span>
</a>
</li>
<!-- levelThree -->
<li class="L3"><a href="" target="mainRight">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" /> 000005</span>
</a>
</li>
</ul>
</ul>
<!-- levelOne:账号管理 -->
<li class="L1">
<a href="javascript:c(TwoLevelOne02);" id="TwoLevelOne02">
<span><img src="<%=basePath%>images/jia.png" id="TwoLevelOne02Image" align="absMiddle"/> 账号管理</span>
</a>
</li>
<ul id="TwoLevelOne02d" style="display: none;" class="U1">
<!-- levelTwo: -->
<li class="L21">
<a href="#" target="right">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" />改动password</span>
</a>
</li>
<%if(session.getAttribute("user.type").toString().equals("1")){%>
<!-- levelTwo -->
<li class="L21">
<a href="toAdminMain" target="right">
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" />用户管理</span>
</a>
</li>
<%}%>
<!-- levelTwo -->
<li class="L21">
<a href="#" onclick=top.location.replace("Quit")>
<span><img src="<%=basePath%>images/jian.png" align="absMiddle" />退出系统</span>
</a>
</li>
</ul>
</ul>
</div>
<div id="bottom"></div>
<script type="text/javascript" src="<%=basePath%>js/menu.js"></script>
</body>
</html>
css文件:/css/menu.css
{
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
HTML {
OVERFLOW-Y: scroll
}
A:link {
COLOR: #000000; TEXT-DECORATION: none
}
A:visited {
COLOR: #000000; TEXT-DECORATION: none
}
A:active {
COLOR: #3333ff; TEXT-DECORATION: none
}
A:hover {
COLOR: #ff0000; TEXT-DECORATION: none
}
.panel {
BACKGROUND: #d6e4ef; COLOR: #000000
}
#expand_link {
FONT-SIZE: 9pt; LEFT: 140px; POSITION: absolute; TOP: 11px; TEXT-DECORATION: underline
}
UL {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; list-style-type:none; url("../images/toright.png");
}
IMG {
BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 16px; BORDER-BOTTOM: 0px; HEIGHT: 16px;
}
#body {
BORDER-RIGHT: #ffffff 0px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ffffff; PADDING-BOTTOM: 0px; BORDER-LEFT: #ffffff 0px solid; WIDTH: 100%; PADDING-TOP: 25px
}
#menu {
BORDER-RIGHT: #246191 0px solid; BORDER-TOP: #246191 0px solid; BACKGROUND: #ffffff; BORDER-LEFT: #246191 0px solid; BORDER-BOTTOM: medium none
}
.U1 {
BACKGROUND: #ffffff; BORDER-BOTTOM: #ffffff 1px solid
}
.L1 A:link {
DISPLAY: block; FONT-SIZE: 9pt; BACKGROUND: url(../images/img/menu1_bg.png); COLOR: #476074; HEIGHT: 24px; TEXT-DECORATION: none
}
.L1 A:visited {
DISPLAY: block; FONT-SIZE: 9pt; BACKGROUND: url(../images/img/menu1_bg.png); COLOR: #476074; HEIGHT: 24px; TEXT-DECORATION: none
}
.L1 A:link SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar1.png) no-repeat left 50%; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px; HEIGHT: 24px
}
.L1 A:visited SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar1.png) no-repeat left 50%; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px; HEIGHT: 24px
}
.L1 A:hover {
FONT-WEIGHT: bold; BACKGROUND: url(../images/img/menu1_bg.png) 0px -24px; COLOR: #000000
}
.L1 A.active:link {
BACKGROUND: url(../images/img/menu1_bg.png) 0px -24px
}
.L1 A.active:hover {
BACKGROUND: url(../images/img/menu1_bg.png) 0px -24px
}
.L1 A.active:active {
BACKGROUND: url(../images/img/menu1_bg.png) 0px -24px
}
.L1 A.active:visited {
BACKGROUND: url(../images/img/menu1_bg.png) 0px -24px
}
.L1 A.active:link SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad1.png) no-repeat left 50%; COLOR: #000000
}
.L1 A.active:hover SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad1.png) no-repeat left 50%; COLOR: #000000
}
.L1 A.active:active SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad1.png) no-repeat left 50%; COLOR: #000000
}
.L1 A.active:visited SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad1.png) no-repeat left 50%; COLOR: #000000
}
.L21 A:link {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L21 A:visited {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L22 A:link {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L22 A:visited {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L3 A:link {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L3 A:visited {
DISPLAY: block; PADDING-LEFT: 13px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444659; HEIGHT: 24px; TEXT-DECORATION: none
}
.L21 A:link SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L21 A:visited SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L22 A:link SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L22 A:visited SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L3 A:link SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L3 A:visited SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 16px; BACKGROUND: url(../images/ico/ar.png) no-repeat left center; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; WIDTH: 100%; CURSOR: hand; PADDING-TOP: 7px
}
.L22 A:link SPAN {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L22 A:visited SPAN {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L3 A:link SPAN {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L3 A:visited SPAN {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L21 A:hover {
FONT-WEIGHT: bold; BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat left top
}
.L22 A:hover {
FONT-WEIGHT: bold; BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat left top
}
.L3 A:hover {
FONT-WEIGHT: bold; BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat left top
}
.L3 A:link SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 25px; PADDING-BOTTOM: 3px; PADDING-TOP: 12px
}
.L3 A:visited SPAN {
PADDING-RIGHT: 0px; PADDING-LEFT: 25px; PADDING-BOTTOM: 3px; PADDING-TOP: 12px
}
.L21 A.active:link {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L21 A.active:hover {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L21 A.active:active {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L21 A.active:visited {
BACKGROUND: none transparent scroll repeat 0% 0%
}
.L21 A.active:link SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad.png) no-repeat left center; COLOR: #000000
}
.L21 A.active:hover SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad.png) no-repeat left center; COLOR: #000000
}
.L21 A.active:active SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad.png) no-repeat left center; COLOR: #000000
}
.L21 A.active:visited SPAN {
FONT-WEIGHT: bold; BACKGROUND: url(../images/ico/ad.png) no-repeat left center; COLOR: #000000
}
.L22 A.active:link {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L22 A.active:hover {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L22 A.active:active {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L22 A.active:visited {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L3 A.active:link {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L3 A.active:hover {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L3 A.active:active {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L3 A.active:visited {
BACKGROUND: url(../images/btn/menu2_bg.png) no-repeat 0px -24px
}
.L22 A.active:link SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L22 A.active:hover SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L22 A.active:active SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L22 A.active:visited SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L3 A.active:link SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L3 A.active:hover SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L3 A.active:active SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.L3 A.active:visited SPAN {
FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffffff
}
.Ls A:link {
PADDING-RIGHT: 4px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px; HEIGHT: 20px; TEXT-ALIGN: right; TEXT-DECORATION: underline
}
.Ls A:visited {
PADDING-RIGHT: 4px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px; HEIGHT: 20px; TEXT-ALIGN: right; TEXT-DECORATION: underline
}
.Ls A:hover {
PADDING-RIGHT: 4px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px; HEIGHT: 20px; TEXT-ALIGN: right; TEXT-DECORATION: underline
}
.Ls A:active {
PADDING-RIGHT: 4px; FONT-SIZE: 9pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px; HEIGHT: 20px; TEXT-ALIGN: right; TEXT-DECORATION: underline
}
#bottom {
BACKGROUND: url(../images/img/menu_bottom_bg.gif) no-repeat; HEIGHT: 80px
}
js文件:/js/menu.js
var cur_id = "";
var flag = 0, sflag = 0; //-------- 菜单点击事件 -------
function c(srcelement) {
var targetid, srcelement, targetelement;
var strbuf;
//-------- 假设点击了展开或收缩button---------
targetid = srcelement.id + "d";
targetelement = document.getElementById(targetid);
if (targetelement.style.display == "none") {
//展开
srcelement.className = "active";
targetelement.style.display = '';
menu_flag = 0; var imgElt = document.getElementById(srcelement.id+"Image");
imgElt.src = "../images/jian.png"; } else {
//收缩
srcelement.className = "";
targetelement.style.display = "none";//收缩
menu_flag = 1; var imgElt = document.getElementById(srcelement.id+"Image");
imgElt.src = "../images/jia.png"; }
} //-------- 菜单所有展开/收缩 -------
var menu_flag = 1;
function menu_expand() {
if (menu_flag == 1)
expand_text.innerHTML = "收缩";
else
expand_text.innerHTML = "展开";
menu_flag = 1 - menu_flag;
// var links = document.getElementsByTagName("A");
// for (i = 0; i < links.length; i++) {
// srcelement = links[i];
// if (srcelement.parentNode.className.toUpperCase() == "L1"
// || srcelement.parentNode.className.toUpperCase() == "L21") {
// targetelement = document.getElementById(srcelement.id + "d");
// if (menu_flag == 0) {
// targetelement.style.display = '';
// srcelement.className = "active";
// } else {
// targetelement.style.display = "none";
// srcelement.className = "";
// }
// }
// } } function set_current(id) {
cur_link = document.getElementById("f" + cur_id)
if (cur_link)
cur_link.className = "";
cur_link = document.getElementById("f" + id);
if (cur_link)
cur_link.className = "active";
cur_id = id;
} //-------- 打开网址 -------
function a(URL, id) {
set_current(id);
// if (URL.substr(0, 7) != "http://" && URL.substr(0, 6) != "ftp://")
// URL = "/general/" + URL;
parent.openURL(URL, 0);
} function b(URL, id) {
set_current(id);
// URL = "/app/" + URL;
parent.openURL(URL, 0);
} //add by YZQ 2008-03-05 begin
function bindFunc() {
var args = [];
for ( var i = 0, cnt = arguments.length; i < cnt; i++) {
args[i] = arguments[i];
}
var __method = args.shift();
var object = args.shift();
return (function() {
var argsInner = [];
for ( var i = 0, cnt = arguments.length; i < cnt; i++) {
argsInner[i] = arguments[i];
}
return __method.apply(object, args.concat(argsInner));
});
}
var timerId = null;
var firstTime = true;
//add by YZQ 2008-03-05 end function d(URL, id) {
//add by YZQ 2008-03-05 begin
var winMgr = parent.parent.table_index.main.winManager;
if (!winMgr) {
if (firstTime) {
parent.openURL("/fis/common/frame.jsp", 0);
firstTime = false;
}
timerId = setTimeout(bindFunc(d, window, URL, id), 100);
return;
}
firstTime = true;
if (timerId) {
clearTimeout(timerId);
}
if (winMgr) {
winMgr.openActionPort("/fis/" + URL,
document.getElementById("f" + id).innerText);
return;
}
//add by YZQ 2008-03-05 end
set_current(id);
URL = "/fis/" + URL;
parent.openURL(URL, 0);
} //-------- 打开windows程序 -------
function winexe(NAME, PROG) {
URL = "/general/winexe? PROG=" + PROG + "&NAME=" + NAME;
window
.open(
URL,
"winexe",
"height=100,width=350,status=0,toolbar=no,menubar=no,location=no,scrollbars=yes,top=0,left=0,resizable=no");
}
图片资源:/images/jia.png,jian.png
java--css+js做的树形菜单(完整版)的更多相关文章
- 下拉的DIV+CSS+JS二级树型菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java 传入list集合 返回树形菜单,for循环遍历
public List<SysPermissionVO> getTreeMenu(List<SysPermissionVO> list,SysPermissionVO sysP ...
- CSS+JS相应式导航菜单
响应式导航菜单 响应式导航菜单就是当网页在其他不同视口的样式,不同的设备需要不同的样式 需要掌握的知识 - 掌握媒体查询,如果你不是很懂那就看我写的CSS响应式布局 掌握CSS重的display:no ...
- 用html+css+js做打地鼠小游戏
html 代码 first.html <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- Java从数据库读取页面树形菜单
从数据库加载菜单及子菜单主要使用递归的方法,具体实现可看代码 首先封装一个菜单pojo public class Menu { // 菜单id private String id; // 菜单名称 p ...
- js后台常用树形菜单
来源:http://www.sucaihuo.com/js/1093.html demo: http://www.sucaihuo.com/jquery/10/1093/demo/
- js实现树级递归,通过js生成tree树形菜单(递归算法)
方法封装: /** * 数据转换为树形(递归),示例:toTreeByRecursion(source, 'id', 'parentId', null, 'children') * @param {A ...
- Java递归应用:输出树形菜单
转自:https://blog.csdn.net/zhangzeyuaaa/article/details/24574769
- 学习Java的知识体系路线(详细完整版,附图加目录)
将网上的Java学习路线图进行归纳囊括,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学习方向.至于第一阶段,即JavaSE的基础,这里不给出. 第二阶段 技术名称 技术内容 数据库技术 ...
随机推荐
- (错误记录)Vue: Unknown custom element
错误: vue.js:634 [Vue warn]: Unknown custom element: <ve-pie> - did you register the component c ...
- 对于学习apache软件基金会顶级项目源码的一点思路(转)
ASF的开源项目,为软件行业贡献了太多好的产品和软件思维.学习ASF的项目源码能很大的提升自身的能力.程序运行在服务器上的流程:执行启动脚本(start.sh) -> 指向程序的主方法 -> ...
- python 深浅拷贝 进阶
主要理解新与旧究竟在哪里 这样也就理解了 深浅拷贝 先说说赋值,事实上python中的赋值事实上是赋值了一个引用.比如: foo1=1.0 foo2=foo1 用操作符is推断时.你能够发现结果是tr ...
- UVA 10125 - Sumsets(POJ 2549) hash
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- Mysql从入门到精通整理
目录 mysql基础 mysql进阶 mysql高级 mysql优化 正文 数据库是信息化产业的最基础的软件之一,各种管理系统,网站,在线游戏,背后基本都会有数据库的支持. 回到顶部 mysql基础 ...
- java.util.ConcurrentModificationException(如何避免ConcurrentModificationException)
java.util.ConcurrentModificationException is a very common exception when working with java collecti ...
- C++开源码项目汇总
Google的C++开源码项目 v8 - V8 JavaScript Engine V8 是 Google 的开源 JavaScript 引擎. V8 採用 C++ 编写,可在谷歌浏览器(来自 G ...
- IOS蓝牙项目总结
常见的蓝牙标准有2.0和4.0. 特点 2.0 1.适用于数据量比较大得传输,比如音乐.语音2.IOS开发中,要求设备是经过MFI认证 4.0 1.适用于实时性比较高的数据传输,比如遥控类的鼠标. ...
- [Angular 2] Share Template Content In Another Template With Content Projection <ng-content>
Angular 1 provided a mechanism to place content from your template inside of another template called ...
- Android 底部TabActivity(0)——开篇(界面分析|系列文章文件夹)
当下主流的软件没有一个统一明白的风格,App框架什么样的都有,但个人钟情于页面底部Tab分签架构,移动设备的屏幕尽管越来越大,可是显示的内容还是有限,为了能展示很多其它的内容,方便简洁的操作习惯中Ta ...