前端的小玩意(9.1)——做一个仿360工具箱的web页面(Tab按钮切换)

需求:

①写一个web版的360工具箱,示意图如下:

 

②无左上返回按钮,右上按钮有皮肤切换,下拉框(但无点击逻辑);

 

③按钮点击有事件,但事件是console.log(按钮名);

 

④可以在全部工具和我等工具自由切换;

 

⑤可以点击左下角的编辑,然后根据实际表现设置;

 

⑥可以在全部工具里面,点击按钮,然后添加到我的工具这边来;

 

⑦效果尽量与原图相同,只使用jquery库;

 

效果网址:

http://jianwangsan.cn/toolbox

 

 

 

 

(一)tab页切换,包含内容区

①切图:

先切图,如图:(不想用他的绿色的)

 

再切按钮图(自行ps):(下图白色,所以直接是看不见的)

 

②页面制作:

html:我这里发的是jade版,如果需要看html版的话,请打开demo的网址:http://jianwangsan.cn/toolbox,然后查看源代码自行复制

[javascript] view plain copy

 

  1. link(rel='stylesheet', href='./stylesheets/toolboxes.css')  
  2. script(type="text/javascript",src='javascripts/toolboxes.js')  
  3. div.back  
  4.     div.tooltop  
  5.         div.tooltop-img  
  6.         div.toolTab  
  7.             div.tool#alltool  
  8.                 span.img.alltool.select  
  9.                 span.text    全部工具  
  10.                 div.hover  
  11.             div.tool#mytool  
  12.                 span.img.mytool  
  13.                 span.text    我的工具  
  14.     div.contentbox  
  15.         div.toolbox-all  
  16.   
  17.         div.toolbox-my.displayNONE  

CSS:

[css] view plain copy

 

  1. a[href='/toolbox'] {  
  2.     color: #555;  
  3.     text-decoration: none;  
  4.     background-color: #e5e5e5;  
  5.     -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);  
  6.     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);  
  7.     box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);  
  8. }  
  9.   
  10. .back {  
  11.     height: 600px;  
  12.     width: 100%;  
  13.     position: relative;  
  14.     -webkit-box-shadow: 0px 0px 2px #555;  
  15.     -moz-box-shadow: 0px 0px 2px #555;  
  16.     box-shadow: 0px 0px 2px #555;  
  17. }  
  18.   
  19. .back * {  
  20.     border: 0;  
  21.     padding: 0;  
  22.     margin: 0;  
  23. }  
  24.   
  25. .back .tooltop {  
  26.     height: 120px;  
  27.     width: 100%;  
  28.     background-color: white;  
  29.     position: relative;  
  30. }  
  31.   
  32. .back .tooltop-img {  
  33.     height: 100%;  
  34.     width: 100%;  
  35.     background-image: url(../img/toolboxBackground.png);  
  36.     background-size: cover;  
  37. }  
  38.   
  39. .back .toolTab {  
  40.     position: absolute;  
  41.     left: 0;  
  42.     bottom: 10px;  
  43.     height: 35px;  
  44.     width: 100%;  
  45. }  
  46.   
  47. .back .toolTab .tool {  
  48.     margin-left: 20px;  
  49.     width: 140px;  
  50.     height: 100%;  
  51.     line-height: 30px;  
  52.     color: white;  
  53.     font-size: 22px;  
  54.     font-weight: 900;  
  55.     -webkit-box-sizing: border-box;  
  56.     -moz-box-sizing: border-box;  
  57.     box-sizing: border-box;  
  58.     display: inline-block;  
  59.     cursor: default;  
  60.     position: relative;  
  61.     -webkit-user-select: none;  
  62.     -moz-user-select: none;  
  63.     -ms-user-select: none;  
  64.     user-select: none;  
  65. }  
  66.   
  67. .back .toolTab .tool .img {  
  68.     height: 27px;  
  69.     width: 27px;  
  70.     background-repeat: no-repeat;  
  71.     display: inline-block;  
  72.     vertical-align: middle;  
  73.     background-image: url(../img/toolbox.png);  
  74. }  
  75.   
  76. .back .toolTab .tool .img.alltool {  
  77.     background-position: 0 0;  
  78. }  
  79.   
  80. .back .toolTab .tool .img.alltool.select {  
  81.     background-position: 0 -50px;  
  82. }  
  83.   
  84. .back .toolTab .tool .img.mytool {  
  85.     background-position: -40px 0;  
  86. }  
  87.   
  88. .back .toolTab .tool .img.mytool.select {  
  89.     background-position: -40px -50px;  
  90. }  
  91.   
  92. .back .toolTab .tool .text {  
  93. }  
  94.   
  95. .back .toolTab .hover {  
  96.     height: 2px;  
  97.     width: 125px;  
  98.     background-color: white;  
  99.     position: absolute;  
  100.     bottom: -2px;  
  101.     left: 0;  
  102. }  
  103.   
  104. .back .contentbox {  
  105.     position: absolute;  
  106.     top: 120px;  
  107.     bottom: 0;  
  108.     left: 0;  
  109.     right: 0;  
  110.     background-color: white;  
  111. }  
  112.   
  113. .back .contentbox > div {  
  114.     width: 100%;  
  115.     height: 100%;  
  116. }  
  117.   
  118. .back .contentbox .toolbox-all {  
  119.     background: red;  
  120. }  
  121.   
  122. .back .contentbox .toolbox-my {  
  123.     background: green;  
  124. }  

JavaScript:

[javascript] view plain copy

 

  1. $(document).ready(function () {  
  2.     //这里是点击切换显示页面  
  3.   
  4.   
  5.     var toolboxTab = new Tab();  
  6.     toolboxTab.tabClick();  
  7.     toolboxTab.tabMouseEnter();  
  8.     toolboxTab.tabMouseLeave();  
  9.   
  10.   
  11. })  
  12.   
  13. var Tab = function () {  
  14.     //以下代码大量考虑到扩展性,例如,可以新增一个tab和content页面  
  15.     this.tabClick = function () {  
  16.         $(".tool").click(function () {  
  17.             //这里是上面的图标的逻辑变换  
  18.             if (!($(this.children[0]).hasClass("select"))) {  
  19.                 $(".select").removeClass("select");  
  20.                 $(this.children[0]).addClass("select");  
  21.   
  22.                 //这里是hover的横线的位置变化  
  23.                 var node = $(".tool .hover");  
  24.                 node.remove();  
  25.                 //当动画需要停止的时候,让他停止  
  26.                 if ('stop' in node) {  
  27.                     node.stop();  
  28.                 }  
  29.                 node.css("left", "0px");  
  30.                 $(this).append(node);  
  31.   
  32.                 //以下应该是切换页面的逻辑  
  33.                 //获取切换到哪一个页面,  
  34.                 var index = null;  
  35.                 for (var i = 0; i < this.parentNode.children.length; i++) {  
  36.                     if (this == this.parentNode.children[i]) {  
  37.                         index = i;  
  38.                     }  
  39.                 }  
  40.                 $(".contentbox > div").addClass("displayNONE");  
  41.                 $(".contentbox > div:nth-child(" + (index + 1) + ")").removeClass("displayNONE");  
  42.   
  43.             }  
  44.         })  
  45.     };  
  46.   
  47.     this.tabMouseEnter = function () {  
  48.         $(".tool").mouseenter(function (evt) {  
  49.             //只有当鼠标移动到非当前选中的tab上时,才会移动  
  50.             if (!($(this.children[0]).hasClass("select"))) {  
  51.   
  52.                 var self = this;  
  53.                 var node = $(".tool .hover");  
  54.                 var start = null;  
  55.                 var end = null;  
  56.   
  57.                 var tools = $(".toolTab")[0].children  
  58.                 for (var i = 0; i < tools.length; i++) {  
  59.                     if (self == tools[i]) {  
  60.                         end = i;  
  61.                     } else if ($(".select")[0].parentNode == tools[i]) {  
  62.                         start = i;  
  63.                     }  
  64.                 }  
  65.   
  66.                 //停止之前的动画  
  67.                 if ('stop' in node) {  
  68.                     node.stop();  
  69.                 }  
  70.                 //现在开始动画效果  
  71.                 node.animate({"left": (end - start) * 160 + "px"})  
  72.             }  
  73.         })  
  74.     };  
  75.     this.tabMouseLeave = function () {  
  76.         $(".tool").mouseleave(function () {  
  77.             //只有当鼠标移动到非当前选中的tab上时,才会移动  
  78.             if (!($(this.children[0]).hasClass("select"))) {  
  79.                 var node = $(".tool .hover");  
  80.                 //停止之前的动画  
  81.                 if ('stop' in node) {  
  82.                     node.stop();  
  83.                 }  
  84.                 node.animate({"left": "0px"})  
  85.             }  
  86.         })  
  87.     }  
  88. }  

 

到目前为止,tab按钮的动画和切换可以了,页面也可以正常切换了。

当然,目前页面颜色用的是纯色来站位,之后会修改

时间: 2024-12-22 16:32:30

前端的小玩意(9.1)——做一个仿360工具箱的web页面(Tab按钮切换)的相关文章

前端的小玩意(9.5)——做一个仿360工具箱的web页面(完结篇,可以跑起来的工具箱)

DEMO网址: http://jianwangsan.cn/toolbox (五)添加.点击和移动的逻辑 我反思了一下,在(四)中我写的并不好,事实上,无论是大按钮,还是被添加到我的工具,或者是添加到常用工具栏,他都是一个按钮,因此,应该共享状态,即他们属于同一个tool实例,并能互相影响.   需求分析: 在重写Tool类之前,需要明确分析按钮的逻辑. 在全部工具页面: ①当按钮未被添加时,鼠标移动上去会有添加按钮显示: ②当按钮未被添加时,鼠标无论点击按钮本身还是点击添加按钮,都执行添加逻辑

前端的小玩意(9.4)——做一个仿360工具箱的web页面(自动生成所有图标,对图标添加响应逻辑)

DEMO网址: http://jianwangsan.cn/toolbox (四)制作JSON,自动将图标填充进所有工具 首先是JSON,因为工具很多,所以JSON内容很长. 具体而言,JSON是一个数组中的对象(只有这一个对象),他有两个属性:BigImg和CommonImg. 这两个属性都是数组类型: BigImg里面,他用于存放最上面的三个大图标: CommonImg里面,存放其他工具图标. BigImg单个数组元素的结构如下: [javascript] view plain copy  

前端的小玩意(9.2)——做一个仿360工具箱的web页面(全部工具里面的模板)

DEMO: http://jianwangsan.cn/toolbox (二)全部工具里面的按钮和样式 我将他拆成五部分:   第一部分是上面的大按钮那一排: 第二部分是小按钮: 第三部分是一条颜色很淡的线,他只在app有多行的情况下,在行间有: 第四部分是标题: 第五部分是右边的滚动条:   ①为了方便模块化开发,我先制作模板,然后实际编写代码的时候,根据样式已经设置好的模板,来添加内容,这样方便调试和制作   ②大按钮: 先分为整体和具体每个按钮: 每个按钮分为背景图.遮罩层(下半部分的灰色

前端的小玩意(9.3)——做一个仿360工具箱的web页面(我的工具里的模板和样式)

(三)我的工具页面布局 如图:   首先将其分为二部分: 第一部分是上方整体红色方框区域: 包含若干个独立按钮,按钮分为图片和下方文字两部分:   第二部分是下方蓝色方框区域: 包含左方的编辑按钮和右方的四个快捷按钮区域: 左方是图标和文字,图标分为按下和非按下状态: 右方是左边的文字和右侧的按钮,按钮又分为图标和文字.按钮在无图标时有占位图标.     先上模板: [javascript] view plain copy   //我的工具,和之前的div.toolbox-all平级   div

java网络编程-打算做一个学习辅助工具箱,求大神给点设计思路,打算用JAVA做

问题描述 打算做一个学习辅助工具箱,求大神给点设计思路,打算用JAVA做 学习辅助工具箱里包括多功能计算器,还有数字逻辑实验模拟器,矩阵算法等等小工具.求大神给点设计的详细思路跟解决方案. 解决方案 你说的这些功能都可以google到. 特别地,你可以用 site:download.csdn.net + 你需要的程序 + java,限定只在csdn下载频道查找. 多学习些google的搜索技巧,你的效率会大大提高. 解决方案二: 一个功能一个功能的实现,最后拼凑起来

asp net 管理系统-求一个简单的asp的web页面管理系统,只要求实现增删改查就行

问题描述 求一个简单的asp的web页面管理系统,只要求实现增删改查就行 求大神发一个初学者的管理给我,顺带讲解讲解,实在做不出来....................qq:732796124

现在要做一个仿微信朋友圈的评论功能的需求,不知道该怎么去实现,求个大神知道一下

问题描述 现在在做一个android应用,要实现成类似于微信朋友圈的评论功能,功能需求是这样的:1:点击评论弹出输入框和软键盘,并把当前点击的item定位到输入框的上面,使输入框的顶部和当前item的底部挨着,但不能盖住这个item的内容2:点击发送之后把输入框中的信息动态的添加到当前item的最下端来个大神知道一下 解决方案

如何读取“超级终端”所能读取的数据??(即用c#做一个仿“超级终端”)

问题描述 如何用c#做一个程序,实现和"超级终端"一样的功能.我要用该程序显示接收来的ascII吗. 解决方案 解决方案二:System.IO.Ports.SerialPort解决方案三:有没有详细点的代码,小弟第一次接触这东西,拜求大虾详细的指点.解决方案四:你的数据是哪来的?串口?解决方案五:是的,通过RS232C9针串口接受的ascII吗解决方案六:up解决方案七:System.IO.Ports.SerialPortmsdn那很多的

使用jQuery和PHP构建一个受Ajax驱动的Web页面

大多数 PHP 开发人员都是以老式的方法学习技能.他们一般先学习如何定义和构建简单 的 PHP 页面,然后再了解如何将这些页面连接到简单的 MySQL 表,于是就可以由此进行自 己的开发了.随着技能水平的提高,他们还逐渐学会了如何创建更为复杂的 PHP 功能,以及 如何连接 MySQL 内的表并执行其他高级任务. 在这个过程中,他们有可能还会掌握 一些客户端技能来将 Web 应用程序投入使用.也有可能学会有关 XHTML 或 CSS 甚至一些 JavaScript 编程的知识.随着所参与项目的种