最近在项目中把整个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. Objective-C Http常用API 同步请求与异步请求

    开发iOS应用要调用Http接口.获取Http资源,有一套比较成熟的框架ASIHTTPRequest.而我还是比较喜欢使用原始一点的 API,而它跟其他的面向对象语言有许多共通之处.本文分同步请求和异 ...

  2. spring动画-iOS-备

    最后停止在终点: 如果给位置移动的动画添加弹簧效果,那么视图的运动轨迹应该像下图中展现的一样: 这会使你的动画看起来更逼真.更真实.更贴近现实.在某些情况下带给用户更好的用户体验.那么让我们开始学习吧 ...

  3. linux下查看和设置软件的安装路径

    1:你可以通过whereis 软件名来查找系统里的文件位置 比如你想查找eclipse文件,那么就: [root@localhost ~]# whereis eclipse 会显示: eclipse: ...

  4. Javascript 原型注意事项

    function abc() {} abc.prototype.xx = { name: "keatkeat" } var x = new abc(); x.xx.name = & ...

  5. OR扩展

    <pre name="code" class="sql">SQL> select substr(xx.acct_no,1,5) agent_o ...

  6. Linux企业级项目实践之网络爬虫(10)——处理HTTP状态码

    HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.所有状态码的第一个数字代表了响应的五种状态之一.他们分别是:消息(1字头)成功(2字头)这一类型的 ...

  7. jQuery ajax方法在Chrome浏览器下失效问题

    最近做测试时碰到一个问题,chrome下使用ajax的一些方法(如get,load等)的时候完全失效: $(function() { $("#send").click(functi ...

  8. poj:2992 因子数量

    题意: 求 组合数c(n,k)的因子数量 由算术基本定理很容易求得,不过第一次却T了,加了好多预处理,o1查询,才过 #include <iostream> #include <st ...

  9. Codeforce 217 div2

    C 假设每种颜色的个数都相同,可以用轮换的方式,让答案达到最大n,当不同的时候,可以每次从每种颜色中取出相同个数的手套来操作; 一直迭代下去直到只剩下1种颜色; 再将这一种颜色与之前交换过的交换就行了 ...

  10. hibernate分页查询的各种方法

    统计总数: public Integer countAll1() { String hql = "select count(*) from News as news"; List ...