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" />修改密码</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="#" οnclick=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;
 //-------- 如果点击了展开或收缩按钮---------
 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
var myTree = null; function CreateTree() { myTree = new ECOTree('myTree','myTreeContainer'); myTree.config.colorStyle = ECOTree.CS_LEVEL; myTree.config.nodeFill = ECOTree.NF_FLAT; myTree.config.selectMode = ECOTree.SL_NONE; //是否允许给节点加链接,是否允许给节点加图片 myTree.config.useTarget = false; myTree.config.useImg = true;   //设置节点的大小和间隔 myTree.config.defaultNodeWidth = 95; myTree.config.defaultNodeHeight = 140; myTree.config.iSubtreeSeparation = 50; myTree.config.iSiblingSeparation = 15; myTree.config.iLevelSeparation = 30; //此处通过从数据库或其它地方读取节点信息,生成添加节点的代码 //参数前三位是必须的; //第一位是本节点id,第二位是父节点id、根节点的父节点为-1,第三位为节点文本; //第四位为节点上显示的图片/照片、图片放到img下并在数据库中记录名称即可,未设参数则取默认图片; //第五位为超链接、最好是访问统一程序传入本节点id; //第六、七位为节点的个性化宽、高。 myTree.add('01',-1,'总裁','./img/0.jpg','http://www.jq-school.com'); myTree.add('02','01','技术副总裁','./img/1.jpg'); myTree.add('03','01','总裁助理','./img/2.jpg','http://www.jq-school.com',95,130); myTree.add('04','01','分公司','./img/3.jpg','http://www.jq-school.com',95,130); myTree.add('0201','02','技术经理','./img/4.jpg','http://www.jq-school.com',95,130); myTree.add('0202','02','技术员','./img/5.jpg','http://www.jq-school.com',95,130); myTree.add('0301','03','秘书','./img/5.jpg','http://www.jq-school.com',95,130); myTree.add('0302','03','助理','./img/6.jpg','http://www.jq-school.com',95,130); myTree.add('0401','04','总经理','./img/6.jpg','http://www.jq-school.com',95,130); myTree.add('0402','04','财务','./img/7.jpg','http://www.jq-school.com',95,130); myTree.UpdateTree(); } 包含有例子和源码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值