最近在项目中把整个UI框架重新做了一下,都是用Jquery实现的,没有使用EXT、EasyUI那一类的UI框架再也不用担心版权问题啦~~~~~~

接下来我会在博客中把常用的功能分享出来,先上一下动态Tab的,功能基本和EasyUI里的tab类似。

实现原理:

1、点击菜单项新增一个div然后在div里打开一个iframe。

2、有了div当容器就很好控制样式,让tab看起来很舒服。

3、tab的切换其实就是div的隐藏和显示。

4、通过把页面的名称存放到div的属性里可以防止重复打开div。

5、控制div的总个数可以防止用户打开过多的页面。

效果图如下:

Jquery代码如下:

//=================动态tab标签========================
function AddTabMenu(tabid, _url, name, img, Isclose) {
try {
var url = _url;
if (url == "" || url == "#") {
url = "/WMSErrorPage/404.aspx";
}
top.$("#Current_iframe").val("div_" + tabid);
if (Isclose != 'false') { //判断是否带关闭tab
top.$(".navigation").hide();
top.$("#side_switch").hide();
} else {
top.$(".navigation").show();
}
///如果当前tabid存在直接显示已经打开的tab
if (top.document.getElementById("div_" + tabid) == null) {
Loading(true);
//遍历并清除开始存在的tab当前效果并隐藏其显示的div
var tablist = top.document.getElementById("div_tab").getElementsByTagName('li');
var pannellist = top.document.getElementById("ContentPannel").getElementsByTagName('iframe');
if (tablist.length > 5) {
showConfirmMsg('您当前打开太多页面,如果继续打开,会造成程序运行缓慢,无法流畅操作!', function (r) {
if (r) {
//创建iframe
var box = document.createElement("iframe");
box.id = "div_" + tabid;
box.name = "div_" + tabid;
box.src = url;
box.height = "100%";
box.frameBorder = 0;
box.width = "100%";
top.document.getElementById("ContentPannel").appendChild(box);
if (tablist.length > 0) {
for (i = 0; i < tablist.length; i++) {
tablist[i].className = "";
pannellist[i].style.display = "none";
}
}
//创建li菜单
var tab = document.createElement("li");
tab.id = tabid;
var litxt = "";
if (Isclose != 'false') { //判断是否带关闭tab
litxt = "<span onclick=\"javascript:AddTabMenu('" + tabid + "','" + url + "','" + name + "','" + img + "','true')\" title=" + name + "><a href=\"javascript:;\"><img src='/Themes/Images/32/" + img + "' width='20' height='20' />" + suolve(name) + "</a></span><a onclick=\"RemoveDiv('" + tabid + "')\" class=\"win_close\" title=\"关闭当前窗口\"></a>";
} else {
tab.setAttribute("onclick", "javascript:AddTabMenu('" + tabid + "','" + url + "','" + name + "','" + img + "','false');");
litxt = "<a href=\"javascript:;\" title=" + name + "><img src='/Themes/Images/32/" + img + "' width='20' height='20' />" + suolve(name) + "</a>";
}
tab.innerHTML = litxt;
tab.className = "menuselected";
top.document.getElementById("div_tab").appendChild(tab);
}
});
} else {
//创建iframe
var box = document.createElement("iframe");
box.id = "div_" + tabid;
box.name = "div_" + tabid;
box.src = url;
box.height = "100%";
box.frameBorder = 0;
box.width = "100%";
top.document.getElementById("ContentPannel").appendChild(box);
if (tablist.length > 0) {
for (i = 0; i < tablist.length; i++) {
tablist[i].className = "";
pannellist[i].style.display = "none";
}
}
//创建li菜单
var tab = document.createElement("li");
tab.id = tabid;
var litxt = "";
if (Isclose != 'false') { //判断是否带关闭tab
litxt = "<span onclick=\"javascript:AddTabMenu('" + tabid + "','" + url + "','" + name + "','" + img + "','true')\" title=" + name + "><a href=\"javascript:;\"><img src='/Themes/Images/32/" + img + "' width='20' height='20' />" + suolve(name) + "</a></span><a onclick=\"RemoveDiv('" + tabid + "')\" class=\"win_close\" title=\"关闭当前窗口\"></a>";
} else {
tab.setAttribute("onclick", "javascript:AddTabMenu('" + tabid + "','" + url + "','" + name + "','" + img + "','false');");
litxt = "<a href=\"javascript:;\" title=" + name + "><img src='/Themes/Images/32/" + img + "' width='20' height='20' />" + suolve(name) + "</a>";
}
tab.innerHTML = litxt;
tab.className = "menuselected";
top.document.getElementById("div_tab").appendChild(tab);
}
}
else {
var tablist = top.document.getElementById("div_tab").getElementsByTagName('li');
var pannellist = top.document.getElementById("ContentPannel").getElementsByTagName('iframe');
for (i = 0; i < tablist.length; i++) {
tablist[i].className = "";
pannellist[i].style.display = "none"
}
top.document.getElementById(tabid).className = 'menuselected';
top.document.getElementById("div_" + tabid).style.display = 'block';
}
} catch (e) { }
}
//关闭事件
function RemoveDiv(obj) {
try {
var ob = top.document.getElementById(obj);
ob.parentNode.removeChild(ob);
var obdiv = top.document.getElementById("div_" + obj);
obdiv.parentNode.removeChild(obdiv);
var tablist = top.document.getElementById("div_tab").getElementsByTagName('li');
var pannellist = top.document.getElementById("ContentPannel").getElementsByTagName('iframe');
if (tablist.length > 0) {
tablist[tablist.length - 1].className = 'menuselected';
pannellist[tablist.length - 1].style.display = 'block';
top.$("#Current_iframe").val(pannellist[tablist.length - 1].id);
}
if (tablist.length == '1') {
top.$(".navigation").show();
}
} catch (e) { }
}

Css样式如下

/*动态Tab
------------------------------------------------*/
#div_tab li{float:left;text-align:center;position:relative;list-style:none;} #div_tab li{height:30px;}
#div_tab li span{height:30px;line-height:29px;} #div_tab li.crent{height:30px;}
#div_tab li.crent span{height:30px;line-height:29px;} #div_tab li,#div_tab li.crent{color:#fff;background-repeat:no-repeat;background-position:0 0;}
#div_tab li span,#div_tab li.crent span{display:inline-block;padding:0 15px 0 0px;background-repeat:no-repeat;background-position:right bottom;} #div_tab li .menua{color:#000;font-size:12px; text-decoration:none;position:relative;}
#div_tab li.crent .menua,#div_tab li .menua:hover{}
#div_tab li .win_close,#div_tab li.crent .win_close{width:13px;height:13px;position:absolute;top:8px;right:5px;cursor:pointer;display:block;overflow:hidden;background:url(../images/tab_delete_ico.png) no-repeat;}
#div_tab li .win_close{background-position:0 -10px; position: absolute;
z-index:;}
#div_tab li .win_close:hover{background-position:0 2px;}
#div_tab img
{
vertical-align: middle;
margin: 0px 5px 0px 0px;
padding-bottom:3px;
}
.menuselected
{
background:#FFF;
}
#dww-menu { width:auto;margin:auto; overflow:hidden;}
#dww-menu .mod-hd li { float:left; cursor:pointer; text-align:center; height:30px; line-height:29px; padding:0 10px; letter-spacing:1px; text-transform:uppercase; border-right:1px #dcdcdc solid }
#dww-menu .mod-hd li:hover {background:#FFF }

下面再补几张效果图:

下一篇介绍菜单导航

当然图片就先晒到这边啦!如果你觉得可以把这些图片的设计思路理解,并且觉得以后会用的话,请收藏一下,推荐一下啦!

对于一些界面看完让我内心想对他说三个字"毁三观"的界面,我只能说你的审美水平一定要提高的,IT这是一个潮流的行业,如果你不潮,那就无法与众不同,机遇往往会给你留个位置的!大家说呢?

http://www.learun.cn

http://www.learun.cn:8080

有兴趣的朋友欢迎加群讨论:312677516

jquery 做出专业的界面,SHOW 一下最近的成果~~~的更多相关文章

  1. 用swing也可以做出好看的界面

    用Swing做出的例子:JavaFX做出的界面:后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下,用户 ...

  2. cocostudio做出来的界面如何进行分辨率适配,兼论cocos2dx3的多分辨率适配机制,以及retina适配机制

    cocos有很多代码实际上都不再使用了,看代码时反而误导了程序员. 比如一个简单的分辨率适配,我查到了setContentSize,然后调用setContentSize,毫无用处啊!于是乎,我到处查资 ...

  3. jQuery做出手风琴效果

    今天学到JQuery中的遍历-siblings,便手痒做了个手风琴的动态效果,有一点收获,分享给大家.mouseout的时候一定要记得opacity必须设置,不然li的opacity会保持mousem ...

  4. 基于 jQuery 的专业 ASP.NET WebForms/MVC 控件库!

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. OpenLayers学习笔记3——使用jQuery UI美化界面设计

    PC端软件在开发是有较多的界面库能够选择,比方DevExpress.BCG.DotNetBar等,能够非常方便快捷的开发出一些炫酷的界面,近期在学习OpenLayers.涉及到web前端开发,在设计界 ...

  6. html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody

    最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...

  7. windows下VC界面 DIY系列1----写给想要写界面的C++程序猿的话

    非常早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就立即開始刷博文,不能辜负自己的一番热血,我并非写界面的高手,仅仅想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈. ...

  8. 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比

    AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...

  9. 推荐几本javascript与jquery的好书

    有人说只要了解了javascript的基本语法,就可以通过看别人的代码来学习javascript了,我不敢苟同.代码是死的,它很难让你有自己的想法,而一本好书如果结构清晰,各个章节都立意明确循序渐进( ...

随机推荐

  1. OC 冒泡排序 -- 核心代码

    //冒泡 核心代码 for (int i = 0; i < array.count - 1; i++) { int a = [array[i] intValue]; for (int j = i ...

  2. [POJ] 2239 Selecting Courses(二分图最大匹配)

    题目地址:http://poj.org/problem?id=2239 Li Ming大学选课,每天12节课,每周7天,每种同样的课可能有多节分布在不同天的不同节.问Li Ming最多可以选多少节课. ...

  3. web.xml 3.0头部模板

    <?xml version=”1.0″ encoding=”UTF-8″?><web-appversion=”3.0″xmlns=”http://java.sun.com/xml/n ...

  4. XML解析之dom4j

    一.XML解析方式有两类:        一]DOM(文档对象模型)            1)一次性将整个XML文件读到内存,形成一颗DOM树        二]SAX(XML的简单API)[sim ...

  5. SSH登陆错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    今天遇到问题,删除文件即搞定!! ~~~~~~~~~~~~~~ SSH登陆错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!   Connectio ...

  6. POJ 3525 Most Distant Point from the Sea

    http://poj.org/problem?id=3525 给出一个凸包,要求凸包内距离所有边的长度的最小值最大的是哪个 思路:二分答案,然后把凸包上的边移动这个距离,做半平面交看是否有解. #in ...

  7. 功率和dB的关系

    功率和dB的关系应该如下: 1.dB的引入是为了把乘除关系变换为加减,便于工程中的运算. 2.[dB] = 10lg(输出功率W/输入功率W).如:输入功率为1W而输出功率为1000W,则系统的增益为 ...

  8. VS环境下的makefile编译

    直接找这个了,原来VS也可以makefile,在windows上解析makefile的软件叫NMAKE.exe 打算用命令Cmake -G“NMake Makefiles” 生成VS环境下Nmake的 ...

  9. Windows下编译eXosip、osip,以及UAC和UAS的例子

    今天开始了SIP开源库的学习,我选择了osip和eXosip,但是这两个库的编译使用有些麻烦,源码下来之后编译会出现很多问题,网上也没有找到完整的编译介绍,只能一步一步的找办法解决,最后终于编译成功! ...

  10. jQuery中ajax的使用和缓存问题解决 $getjson 与$get都会被IE缓存

    原文地址:http://www.cnblogs.com/fullhouse/archive/2012/01/17/2324842.html 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL ...