此时明白人生 此时明白人生
需要更大的努力,完成想做的事情!
关注数: 12 粉丝数: 83 发帖数: 1,007 关注贴吧数: 58
Web前端开发有哪些必知知识点 虽然Web前端开发出现时间并不长,但是其知识点是非常多的,极其复杂,想要学习好,就要对Web前端的重点知识进行学习,Web前端就是Web给用户展示的东西,这里面可能包含了设计,特效,用户交互等等。通常需要掌握语言开发、建站、UI设计等技能。下面源码时代小编跟大家一起了解一下Web前端开发有哪些必知知识点。 Web是最近五年来特别火的一个词儿,web前端开发工程师也可以说是一个全新的职业,在IT行业中受重视不超过5年,但是这个岗位也是目前互联网时代越来越不可缺少的一部分了,目前各个企业对于这块的人才稀缺量比较大,根据 Web前端开发有哪些必知知识点? 中国人力资源部网上统计数据,Web前端开发工程师平均每月收入为1.5万元,可以说无论是就业还是薪资,Web前端技术相较于其他行业都是佼佼者。 学习Wed前端都能掌握什么技能?Web前端开发有哪些必知知识点? 1、语言开发技能 Web前端必须掌握的基础语言是xHTML+CSS+JavaScript, 2、移动站建站技能 适配于IOS/Android移动端整站开发、(HTML5/CSS全进阶+JS中级)、app设计、手机端口建站。 3、设计相关技能 熟悉Ps、AI等工具 4、seo、cms网站优化 服务器搭建成cms织梦、dede后台等操作设计方式 掌握以上这些才能算是web初级阶段入门,剩下的就是实战演练,起码要有2年以上的网站设计和运营经验才能算是进的了中级的门! Web容易学吗?Web前端开发有哪些必知知识点? 其实web前端开发的门槛并不高,与后端软件开发相比,web的学习是比较简单的,对于想从事it工作的人,web是一个不错的切入点,但是想自学成“才”还是比较费劲的。所以建议想进入it行业的朋友要选择一家专业的web前端的培训机构,跟着老师一步一步的学习,让老师带着积累实战经验,这个突进是最快能达到中级web前端开发工程师的途径。得到诱人的待遇。
自学Web前端零基础到精通需要多久 现在很多人转行想学Web前端开发,这样就需要先确定目标和期限。但是很多人都不好掌握这个时间,害怕时间成本过大,最后还没学好,这个时间的把我就不好说,影响因素很多,学习效率,吸收程度,融会贯通,学习程度都会影响,下面源码时代小编跟大家讲解一下自学Web前端零基础到精通需要多久这个问题。 自学在学习时间的自由度和压缩上面,有着培训不可比拟的优势,这一点是报培训班坐火箭也赶不上自学的。对于培训而言,短则四月,多则六月的时间,并不是所有人都能耽搁得起,而自学在某种程度上是能够达到速成的效果的。 自学Web前端零基础到精通需要多久?自学能够达到课程内容个性化的极致。不论是看书,还是看视频教程。自学都能够很轻易地掌控自己的学习进度,对于掌握不好的知识点加强练习,而对于那些比较熟练的知识点,完全可以以点带面。 自学Web前端零基础到精通需要多久?如果没有强大自控力,保证你在自由度极高的学习时间分配中拒绝掉种种诱惑,那么想要通过自学拿下web前端,比万年*丝追国民女神的难度还要多上几个S,而且,不是加上,是乘以。 参加web前端培训是最快最有效的学习捷径,这也是很多零基础应届生和转行人士的主要学习方式。参加源码时代web前端培训,有专业的技术老师带领教学,也有最新的案例资源,还有就业保障。所以选择源码时代web前端培训就是选择“一条龙”服务,省事省心。
一篇文章了解Web前端知识点 虽然Web前端发展时间不长,但是其知识点很多,同时非常的咋,但是学HTML、CSS、JS这些基本的知识,是每个了解Web前端的都知道,只有掌握了这些知识才能够更好的学习其他的知识,融会贯通,要如何高效学习HTML5前端开发呢,一起来看下,源码时代web前端培训小编对学习web前端开发,有哪些独特的方法及建议,通过一篇文章了解Web前端知识点。 我们生活在一个充满规则的宇宙里面。社会秩序按照规则运行,计算机语言几乎全部是规则的集合。计算机前辈们定义规则,规则约束我们,我们用规则控制数据。大部分时候,高效合理的,来自于你对规则的掌握。学习也是一样,掌握了学习规则,学习起来就能事半功倍,同样的学习H5前端开发也是有一定的规则可寻的。 1如何高效学习HTML5前端开发? 首先要学的是HTML、CSS,这两个东西是一套的,非常容易理解,随着web移动端开发的大趋势,HTML5和CSS3的出现,对前端工程师来说面临着新的挑战。所以建议想系统学习的同学,最好是到专业的前端培训机构去学习,比如达内web前端培训开设的H5前端开发培训课程,聘请一线级讲师亲自授课,手把手带你做前端,这样收获的效果会更好,但如果选择自学,应该先跟着书仔细、扎实的学一遍。然后就需要做大量的练习,做各种常规的、新颖的布局练习来捆固、理解自己的知识。css要熟练掌握float、 position、width、height,以及对于的最大最小、会使用百分百、overflow、margin、padding等等,这些都是跟布局 有关系的样式,是必须要掌握的。一篇文章了解Web前端知识点。 2JavaScript技术学习 再次就是 Javascript,很多同学谈到JS就很困惑,当然不是所有的网页都必须有js,但是要想实现一些超酷的功能和界面的时候,就需要涉及到js。如果没有其他编程语言的基础的话,学起来可能要费些力。 在学习js的时候, 会接触一些后端的东西,没错,就是ajax。这个是需要后端返回数据的, 这个时候你要开始学习php了, 入门php相比于js会更麻烦一些,因为运行php需要有很多细节要处理。一篇文章了解Web前端知识点。 再次就是学习jquery。jquery是相当于把js封装了一套的一个js插件。目的就是操作起来更方便,代码写的更少,jquery入门比较简单,那些是入门需要学的和js一样,只是换成了jq的代码。 3其他方面技术学习 谈到如何高效学习H5前端开发的问题,也要了解学习前端开发使用的工具,目前最常用的是Dreamweaver, 其曾经风靡一时,到现在也没有退出历史舞台,证明DW还是有很大优势的,尤其是针对初学者,其强大的提示功能可以帮助我们很快的熟悉并掌握网页布局。
这里有免费的UI课程学习,要不要??? 现在有很多对UI感兴趣的小伙伴,苦于没有学习的资源,在这里我提供一个非常不错的UI课程课程是由小码哥名师团队在线授课,大家应该知道小码哥吧~~~ 课程主要针对UI设计从前期网页设计及交互到前端代码以及微信小程序实现的全方位知识讲解,课程内容覆盖游戏网页设计、Axure-rp从基础到实战、全能设计师修炼成长建议、前端开发之jQuery入门+网页特效制作、微信小程序制作等,欢迎大家报名听课。 第一阶段:游戏网页设计 课程简介:通过本次直播课课程,带大家运用所掌握的PS技能,走近游戏网页设计领域,开阔视野的同时,更让你在设计行业中多一份选择。 第二阶段:Axure-rp从基础到实战 课程简介:目前Axure已成为UI设计师、产品经理、产品设计师以及交互设计师的必备工具,优势非常明显,能够快捷而简便的制作产品原型,快速绘制线框图、流程图、网站架构图、示意图、HTML模版以及交互设计,并可自动生成用于演示的网页文件和规格文件,以提供演示与开发。本课程主要讲axure来实现低保真原型和高保真原型的实现方式。 第三阶段:锤炼全能设计师 课程简介:主要针对一些学习设计人员对学习代码的认知观念剖析; 从事代码方向的人员对设计的看法; 全能设计师成长建议等。 第四阶段:前端开发之jQuery入门+网页特效制作 课程简介:jQuery是前端技术中非常流行的框架,在前端开发中可以提高开发效率,因此jQuery技术也是前端中需要掌握的技术。本公开课旨在带领大家快速掌握jQuery的基础用法,了解jQuery的特点,并能开发常见的网页特效。 第五阶段:微信小程序 课程简介: 本课程主要分享的是微信小程序的零基础入门知识。目前市场对微信小程序开发的需求日益增大,因此针对有一定html、css和javascript基础的学员,我们推出了这么一套快速上手的课程。本课程从基础知识铺垫,到综合案例制作,知识丰富,易学易懂,非常适合前端开发人员及UI从业者学习。 感兴趣的想要报名的小伙伴可以咨询我哦~~~~绝对免费
【技术分享】浅谈 MVVM 设计模式优缺点 首先说一说MVVM的由来,相信大家对MVC都不陌生,MVC 是开发客户端最经典的设计模式,但是 MVC 有让人无法忽视的严重问题。在通常的开发中,除了简单的 Model、View 以外的所有部分都被放在了 Controller 里面。Controller 负责显示界面、响应用户的操作、网络请求以及与 Model 交互。随着业务逻辑的增加,controller的处理逻辑会变得越来越复杂,controller也就慢慢的变得越来越胖,这就造成了Controller逻辑复杂,难以维护。为了更好地管理代码,更方便地扩展业务,为必要为controller瘦身,于是MVVM便呼之欲出. MVVM:是 Model-View-ViewModel简写M:对应于MVC的M V:对应于MVC的V VM:viewModel,是把MVC里的controller的数据的加载、加工功能分离出来 MVVM 是 Web 前端一种非常流行的开发模式,利用 MVVM 可以使我们的代码更专注于处理业务逻辑而不是去关心 DOM 操作。目前著名的 MVVM 框架有 vue, avalon, angular 等,这些框架各有千秋,但是实现的思想大致上是相同的:数据绑定 和 视图刷新。跟MVC一样,主要目的是分离视图(View)和模型(Model)。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 在MVVM中,数据是核心,由于VIewModel与View之间的双向绑定,操作了ViewModel中的数据,就会同步到DOM,我们透过DOM事件监控用户对DOM的改动,也会同步到ViewModel。 MVVM设计模式的优点 1.双向绑定技术,当Model变化时,View-Model会自动更新,View也会自动变化。很好做到数据的一致性,不用担心,在模块的这一块数据是这个值,在另一块就是另一个值了。所以 MVVM模式有些时候又被称作:model-view-binder模式。 2.View的功能进一步的强化,具有控制的部分功能,若想无限增强它的功能,甚至控制器的全部功几乎都可以迁移到各个View上(不过这样不可取,那样View干了不属于它职责范围的事情)。View可以像控制器一样具有自己的View-Model. 3.由于控制器的功能大都移动到View上处理,大大的对控制器进行了瘦身。不用再为看到庞大的控制器逻辑而发愁了。 4.可以对View或ViewController的数据处理部分抽象出来一个函数处理model。这样它们专职页面布局和页面跳转,它们必然更一步的简化。 MVVM设计模式的缺点 1.数据绑定使得 Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。 2.一个大的模块中model也会很大,虽然使用方便了也很容易保证了数据的一致性,当时长期持有,不释放内存就造成了花费更多的内存。 3.数据双向绑定不利于代码重用。客户端开发最常用的重用是View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同。那就不能简单重用View了。 本文章由源码时代H5前端学科讲师原创!
Web前端技术值不值得学 现在有出现了很多培训机构,无论是现在中小学培训,还是说新兴的iT教育培训,由于出现了很多的教育机构就不知道怎么选择,现在Web前端培训机构很多,但是由于价格很高,很多人就会担心没有回报。那么,Web前端技术值不值得学?下面源码时代小编给大家讲一下。 首先,我们来讲讲,自学这方面。自学真的需要自控特别强的人,那样可以学的进去,不过,有难点不理解的话,依旧容易学不懂,导致练习很多都不会,错了也不知道错在哪里。一个人自学最难的是没有切入点、孤独感和学习感,很容易受一些因素影响而半途而废。Web前端技术值不值得学? 自学难坚持,一点小小的设置问题就能把人烦死。当然,自学的优点也是有的,那就是能够自由支配时间。可是想过没有,早些学成,就能早些就业吗,创造经济价值。 Web前端技术值不值得学?目前培训机构这么多,负责任的培训机构也还是有的,不过你需要对个培训机构熟悉了解,毕竟这对你个人的工作很重要,所以要好好选择的。 web前端培训机构是一个快速带你入门的渠道,参加培训机构的同学,在找到一位专业的导师,当你遇到专业技能方面的问题时,他能给予你建议,并引导能让你快速成长,少走弯路,这将对你受益匪浅。而我们的源码时代web前端培训老师,都是认真负责的,在严厉教学的同时也是学员的良师益友。 如何学员在源码时代web培训班把老师教的东西吸收了,是不愁找不到工作的。对于Web前端技术值不值得学,值得去吗?这个问题,我想说的是良心教学的web前端培训机构当然是值得去的,就比如源码时代web前端培训机构,源码时代教育成立8年以来,已经累计培训两万学子,如果教学质量不过关,学员不认可是不可能屹立这么久的。
【技术分享】white-space、word-wrap和word-break区别 今天我们来系统的学习一下CSS中文本换行属性的用法,主要是针对前期学习属性时,同学们对相关属性理解不透,所以今天源码时代H5前端培训讲师这次把相关属性抽出来,给大家科普一下!系统的总结一下相关属性之间的区别。 首先,我们在CSS中最常见的文本换行相关属性有以下三个: white-space,word-wrap,word-break 那么我们先来看一下这几个属性分别表达的意思吧: 1. white-space 作用: 作用于空格和回车,用于控制空格是否进行合并,回车是否进行换行,如果句子过长是否在空格处换行 常用参数说明: 1. normal:多个连续的空格会被合并为一个,回车会被忽略,同时句子如果太长,会在空白处折行 2. Nowrap:强制在同一行显示文本,合并多余的空白,除非遇到br才换行 运用场景: 主要用于固定宽度的标题,水平方向的文本过长加省略号的操作注意: 如用使用了white-space为nowrap,设置其它强行折行的word-break将不生效,需要修改white-space为normal. 2. word-space 作用: 主要用于单词上,控制水平方向上的超长单词是否折行 常用参数说明: Normal:单词超长也不可折行,会产生溢出 Break-word:单词超长会折行 3. word-break 作用: 防止页面中出现连续无意义的长字符打破布局 常用参数说明: normal:如果是中文则到边界处的汉字换行,如果是英文整个词换行 注意: 如果出现英文字符长度超过边界,则后面的部分将撑开边框,如果边框为固定属性,则后面部分将无法显示 break-all:强行换行,将截断英文单词 keep-all:不允许字断开 以上内容做为使用时的理论前提,后期在使用中希望小伙伴们多加注意些! 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
AngularJS前端路由 Hello大家好,继前两篇文章中我们了解了什么是AngularJS以及AngularJS的表单验证,今天源码时代H5学科讲师跟大家再来谈谈AngularJS的单页面前端路由及其用法。 现在越来越多的网站都用到了前端路由,那它和多页面跳转及传统开发有什么区别呢,我们为什么要用单页面路由呢? 在传统开发中,我们点击一个链接跳转到一个新的页面,这个跳转地址相当于一个二级地址。而路由的跳转并不是跳转到一个新的页面,而是在当前的页面进行跳转,相当于是在一个页面内跳转,使得前端页面体验更流畅。所有的交互和展现在一个页面运行以达到减少服务器请求,提高客户体验的目的。 接下来我们从一个简单的单页面跳转来看看单页面应用倒地怎么用。 首先我们得加载angular的主文件: < src="http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fcdn.bootcss.com%2Fangular.js%2F1.3.19%2Fangular.min.js&urlrefer=07063a155d69d295116c7925a9220d0a"></> 其次我们要加载angular的对应版本的路由插件: < src="http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fcdn.bootcss.com%2Fangular.js%2F1.3.19%2Fangular-route.js&urlrefer=a18939cac5e74b4b6d6af46dc31cbed5"></> 注意:对应版本(!) 申明根元素: <html ng-app="myApp"> 接下来在项目中引入路由这个插件: <!-- 插件引入 --> < type="text/java"> var route = angular.module('myApp',['ngRoute']); route.controller('mytest',['$scope',function($scope){ }]); </> 另外确定路由区域:其中'ng-view'这个指令是和'ngRoute'相互呼应的,只有引入了路由这个插件,'ng-view'这个指令才会生效。他实际的功效相当于圈(div)了一块儿地出来,作为路由结果的展示。即路由只控制这块地上倒地展示哪一个文件(div)中的内容。 接下来就来完成类似于这样的功能 在body中准备路由导航项这里我们简单列出了三个导航项,跳转地址分别是’#1’,’#2’,’#3’,对应首页、商城和列表。当然你还可以列出更多。此处需要注意的是前面的‘#’不能忽略。 对应路由设置为: var route = angular.module('myApp',['ngRoute']); route.config(['$routeProvider',function($routeProvider){ $routeProvider .when('/1',{ template:'我的首页' }) .when('/2',{ template:'我的商城' }) .when('/3',{ template:'商城列表' }) // 初始化默认路径 .otherwise({ redirectTo:'/1' }); }]); 其中的‘template’可由‘templateUrl’替代,条件是当我们跳转的内容不是本文中所用的一个简单的h1标签,而是一个复杂的页面或区块。 看看效果图: 你们可能发现,当用户进入网页时,显示区域并没有内容呈现,故我们下面给网页一个默认路由的操作。 // 初始化默认路径 .otherwise({ redirectTo:'/1' }); 这样用户进入页面时,即默认页面即我们的路径为‘1’的首页。界面如下:至此,一个基本的路由就已经搭建好了。 附源码如下:本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
【技术分享】Vue.js 2.x父子组件通信 一、基本用法(父子组件向子组件通信) Vue里面组件不仅是需要把模板的内容复用,更重要的是组件之间是需要通信的,我们先来说一种比较简单的情况,通常父组件包含子组件的时候,父组件要正向的向子组件传递数据和参数,子组件接收到后,可以根据参数的不同来渲染不同的内容或执行操作,这里是怎么来实现呢? 现在我们先来看看用props来传递数据的情况,在组件中,需要用选项props来声明需要从父级组件接收的数据,prop的值通常有两种,分别是字符串数组和对象,现在我们以数组为例子:我们构造一个数组,接收来自父级组件的message,并把它在组件模板中渲染。如下为示范代码:渲染后的结果为:需要注意的是,props中声明的数据与组件data函数return的数据时有区别的,props的数据来自父级,而data中的是组件自己的数据,作用域是组件本身,这两种数据都可以在模板template、计算属性computed和方法mothods中使用。示例中的数据message就是通过props从父级传递过来的,在该组件的自定义标签上直接写props的名称,如果需要传递多个数据,在props数组中直接添加即可。 注意:由于HTML特性不区分大小写,当使用DOM模板时,驼峰命名的props名称要转为短横线分隔命名 很多时候,传递的数据不是死的,而是来自父级的动态数据,这个时候,需要使用指令v-bind来动态绑定props的值,当父组件的数据发生变化,也会传递给子组件,示例代码如下:渲染结果如下:二、自定义事件(子组件向父组件通信) 当子组件需要向父组件传递数据时,就要用到自定义事件,v-on除了监听DOM事件外,还可以用于组件之间的自定义事件。在js的设计观察者模式里面有dispathEvent和addEventListener两个方法,Vue也要类似的一套模式,子组件用$emit()来触发事件,父组件用$on()来监听子组件的事件。当然,父组件可以直接在子组件的自定义标签上用v-on来监听子组件触发的自定义事件,示例代码如下:程序执行结果如下:示例中子组件有两个按钮,分别绑定了加1和减1的事件,并且在methods中实现了绑定了两个事件,在methods的事件实现中,通过$emit()方法,把它传递给父组件,父组件用@increase 和 @reduce接收,$emit()方法的第一个参数是自定义事件的名称,后面的参数是要传递的数据,父组件即可接收子组件传递的数据渲染页面,显示出加1过后的值。 二、任何组件之间自由通信(父子、兄弟、跨级) 在vue.js 2.x中,推荐使用一个空的Vue实例作为中央总线(bus),也就是中介,他可以实现任何组件之间的通信。就像一个中介,通信的任何组件之间,只需要通过这个中介(bus),实现通信,示例代码如下:执行结果如下: 点击之前:点击之后:示例中首先创建了一个Vue实例bus(中介),里面没有任何的内容,然后全局定义了一个组件component-a,最后,创建了Vue实例app,在app初始化的时候,在生命周期mounted的钩子函数里监听了来自bus的事件on-message,而在组件component-a中,点击按钮会通过bus把事件on-message发出去,而app就会接收来自bus的事件,进而在回调里完成自己的业务逻辑即可。 这种方法非常巧妙的实现任何组件之间的通信。包括父子、兄弟、跨级等,如果深入使用,我们甚至还能扩展bus实例,给他添加data、methods、computed等等选项。 掌握以上的知识点,即可在使用vue开发项目的过程中,实现任何组件之间的通 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
Web前端工程师现在好就业吗 现在是一个互联网的时代,互联网技术在飞速发展的同时,人们对互联网的要求也越来越高,需要高质量的体验感,这个时候就对APP和网站要有好的吸引度,不仅仅是功能全面,还需要能够有好的用户体验感,从而吸引更多的客户。而这些都是需要我们Web前端工程师来完成,下面源码时代小编就跟大家探讨一下Web前端工程师现在好就业吗这个问题。 今年web前端工程师培训机构相比去年来说可能会有所增加,有些想学习的人员可能会在心中有疑问:“web前端工程师培训机构增加,那么冥冥之中又增加了我们的选择难度,我们该如何选择呢呢?Web前端工程师现在好就业吗?”关于选择web前端工程师培训这一问题,小编一直在和大家反复的强调,总结起来就是一句话:“在实地考察的过程中试听相关的课程对师资情况、学习氛围、就业等相关情况进行明确的了解。” Web前端工程师现在好就业吗?我们言归正传,2017年web前端工程师培训的情况以源码时代为例:今年源码时代的web前端培训课程再次进行全面革新,更加的符合企业的需求,而且目前源码时代有基础班和就业班,此外源码时代web前端工程师培训的实训项目也会随着互联网以及企业的发展需要在不断的增加调整。 2017年web前端工程师就业容易吗?Web前端工程师的专业性要求没那么高,不管你是专业的还是非专业的,或者是转行而来的,都可以从事Web前端开发方面的工作。去年,有大批量看好Web前端发展的行业新人,选择从事该行业。而从企业端来看,从大批量的初级Web前端工程师中找到自己的想要的人才也成为一种考验。因此,很多行业应聘者觉得web前端已经“饱和”了 但是,根据智联招聘的数据统计,每个月企业在智联上公布的Web前端的岗位量在2.4万个左右,由此可以看出当前企业对于Web前端工程师的需求仍然是十分旺盛的,根据智联招聘数据Web前端高级软件工程师,年薪可达到15万以上,Web前端技术主管或经理,年薪在15-50万之间。 想要成为Web前端工程师的你不需要迷茫,当下应当做的是选一家适合自己的web前端工程师培训机构,提升自身的能力,为了在求职者中脱颖而出做好准备。
【技术分享】一行JS代码实现翻翻卡效果 本文章是由源码时代H5前端讲师分享:一行JS代码实现翻翻卡效果,希望对大家有一定帮助。 实现步骤 1.准备2张图片,一个在上一个在下 2.上方的图片不动,下方的图片先翻转180°,并隐藏 3.记录上方与下方图片的起始角度,上方起始角度为0,下方起始角度为180° 4.使用定时器累加角度,两张图片同时翻转 5.当上方的图片翻转到90度时,隐藏该图片,显示下方图片 6.当上方图片翻转到180度时,停止定时器,并还原记录的起始角度 7.第二次翻转,正反面角色互转即可 使用说明 <!--引入js文件--> < src="turn-card.js"></> <> // ...获取两张图片后调用该方法 turnCardAnimate(up,down); </> 核心代码 /** * 翻翻卡动画 * @param up 在上的图片 * @param down 在下的图片 */ function turnCardAnimate(up,down) { if (turnCardAnimate.isTurned){ // 已经旋转过,将两个对象互转 // 取反 var temp = up; up = down; down = temp; } var upDeg = 0; // 上面图片起始角度 var downDeg = 180; // 下面图片起始角度 down.style.display = 'none'; // 隐藏下面的图片 down.style.transform = 'perspective(1000px) rotateY('+downDeg+'deg)'; // 将下面的图片翻转180° main.timer = setInterval(function () { // 翻转每次加1度 upDeg += 1; downDeg += 1; // 同时翻转2张图片 up.style.transform = 'perspective(1000px) rotateY('+upDeg+'deg)'; down.style.transform = 'perspective(1000px) rotateY('+downDeg+'deg)'; // 当上面的图片翻转到90度,隐藏上面,显示下面的图片 if(upDeg >= 90){ up.style.display = 'none'; down.style.display = 'block'; } // 当上面的图片翻转到180度,初始化设置,清除定时器,并记录是否旋转 if (upDeg >= 180){ clearInterval(main.timer); downDeg = 180; upDeg = 0; animateOver = false; turnCardAnimate.isTurned = !turnCardAnimate.isTurned; },2); } 示例效果本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
用JS 封装类似于JQ中animate的动画效果 前言:现在网上对这种类似的代码繁多,但是都是各家所长,希望源码时代H5前端讲师写的代码能够帮助到需要这样效果的朋友。 首先说一下,这篇文章对初学者有很大的帮助,特别是在学习原生JS的初学者,能够帮助你们能够更好的建立好良好的思路和对原生JS的更深一步的了解。废话我们就不多说了。 首先看一下我们要实现什么功能吧。 一个是:运动到固定的距离; 一个是:宽度变为一定宽度; 因为代码里面注释更能帮助到更多的朋友,所以这里就不单独做参数解释了。 废话那么多我们直接上代码; HTML <button>运动到400</button> <button>宽度变为400</button> <div></div> Css div { position: absolute; width: 100px; height: 100px; background-color: pink; } 核心js: var btnArr = document.getElementsByTagName("button"); var div = document.getElementsByTagName("div")[0]; btnArr[0].onclick = function () { animate(div, "left", 400); } btnArr[1].onclick = function () { animate(div, "width", 400); } //参数变为3个 function animate(ele, attr, target) { //先清定时器 clearInterval(ele.timer); ele.timer = setInterval(function () { //四部 var leader = parseInt(getStyle(ele, attr)) || 0;//获取值可能含有px,我们只取数字部分parseInt() //1.获取步长 var step = (target - leader) / 10; //2.二次加工步长 step = step > 0 ? Math.ceil(step) : Math.floor(step); leader = leader + step; //3.赋值 ele.style[attr] = leader + "px"; //4.清除定时器 if (Math.abs(target - leader) <= Math.abs(step)) { ele.style[attr] = target + "px"; clearInterval(ele.timer); } }, 25); } //兼容方法获取元素样式 function getStyle(ele, attr) { if (window.getComputedStyle) { return window.getComputedStyle(ele, null)[attr]; } return ele.currentStyle[attr]; } 以上就是我们实现小动画效果的代码,针对参数这块呢相对而言比较单一,这段代码呢一般是针对入门级的朋友,希望能够给您带来帮助,后续我还会更新参数稍微复杂一点的效果,希望您的持续关注。 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
Web前端工程师应该是怎么样的 现在Web前端工程师在互联网行业中是非常吃香的,很多大型企业都在高薪聘请Web前端高级工程师,吸引了很大一批人关注Web前端开发,那么,Web前端工程师应该是怎么样的?源码时代小编跟大家聊一聊。 Web前端工程师应该是怎么样的?Web前端开发工程师是当下的一个新兴职业,在国内甚至国际上真正开始受到重视的时间不超过7年。Web前端开发是由网页制作演变而来的,在互联网持续发展的过程中,网页制作其实是Web1.0时代的产物,那时网站的主要内容均是静态的,用户使用网站也以浏览为主。 Web前端开发技术包括三要素:HTML、CSS、Java,但随着RIA的流行与普及,Flash/Flex、Silverlight、XML和服务器端语言也是前端开发工程师应该掌握的。随着时代的发展,前端开发技术的三要素也逐渐演变成为现今的:html5,css3,JQuery。Web前端开发工程师要与上游的交互设计师、视觉设计师以及产品经理沟通,同时要与下游的服务器端工程师沟通,总之需要掌握的技能非常多。Web前端工程师应该是怎么样的?Web前端开发的入门门槛其实很低,和服务器端语言先慢后快的学习曲线相比,Web前端开发的学习曲线是先快后慢。所以,对于想从事IT工作的人来说,Web前端开发是个不错的切入点。 所以,一位好的Web前端开发工程师在知识体系上不仅要有广度,又要有深度,所以很多公司即使出高薪,也很难招聘到理想的Web前端开发工程师。 想要入门Web前端开发系统学习,可以考虑到源码时代了解一下,源码时代是一家专业从事IT教育的机构,学习到真正的技术是每一个老师的愿望。
jQuery事件中on实现绑定多个事件 相信大家都知道在jQuery1.9版本中,已经去掉了live和delegate方法,从而将on方法的地位进一步提升。 jQuery如此推崇on方法,必有其独到的地方。所以我们就有必要了解这个on,并在代码中利用它,从而优化代码和提高性能。那么接下来我们就来看看on的使用方法 一、使用on进行普通事件绑定 1.1使用on绑定一个事件 语法结构: jq对象.on(“事件类型”,”事件处理函数”)1.2 使用on绑定多个事件对应同一个事件处理 函数语法结构:jq对象.on(“事件类型1 事件类型2”,”事件处理函数”)1.3 使用on绑定多个事件对应不同的事件处理函数 语法结构: jq对象.on({ 事件类型1 : 事件处理函数1, 事件类型2 : 事件处理函数2, 事件类型3 : 事件处理函数3 });注意: 使用jQuery中on进行普通绑定事件的时候,会出现一些小小问题,就是不能给动态添加的元素绑定事件,这时候就要用到on的事件委派(事件委托),接下来我们继续看看on对于事件委托的处理 二、 使用on进行事件委派 2.1标准浏览器中都有事件冒泡(bubble)或捕获(propagate)机制 如图:当目标元素被触发时,先从它祖先元素一层一层将事件传达给目标函数,如上图中P的父元素 div依次传递给target,此为事件捕获; --当目标函数被触发后,又将事件一层一层传递到根节点,即老祖宗,此为事件冒泡。所有浏览器都有事件冒泡机制。所以,我们可以利用这一特性,优化代码,减少事件绑定。 on方法也利用了这一特性。当‘selector’被提供时,就是事件委托,事件触发时,直接绑定在on方法上的元素是不会触发该事件,而它指定的后代元素‘selector’就会利用冒泡机制,到直接绑定在on方法上的元素,给予处理。 2.2语法结构:jq对象.on("事件类型","指定的后代元素",事件处理函数);总结: 如果是普通绑定事件你就可以使用on的普通事件绑定,如果是对于动态添加的元素的事件绑定就使用on的事件委派。 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
大学生学习Web前端开发怎么样 现在大学生就业难是一个社会现状,现在很多正处于大学的学生就很担心自己出来找不到工作,就会在大学期间想要多学点知识,目前互联网行业发展是非常好的,尤其是近几年Web前端发展非常迅速,很多大学生也很看好,那么,大学生学习Web前端开发怎么样?下面源码时代就跟大家一起探讨这个问题。 1:大学生学习Web前端开发怎么样? 由于互联网行业的极速扩张,各大公司对前端工程师的需求非常旺盛,自然钱景旺旺。加上HTML5规范的最终定稿,必定引起web的热潮。NodeJS在服务器端的延伸也使JS大放光彩。刚出道的WEB前端工程师钱景和前景,都远好于其他大众行业。 在就业高压下,大学生学WEB前端,是很不错的选择。 2:大学生学WEB前端有前途吗?大学生学习Web前端开发怎么样? 对于想短期内进入互联网行业,想有个不错的钱景和前景,WEB前端开发是个不错的切入点。前端开发入门门槛低,但需求旺盛,特别是有经验的前端开发人员,前端开发技术发展越来越成熟,且适用范围更广。 一线城市,高级WEB前端工程师的平均月薪,早就突破10000元,随着工作年限的增加,薪资待遇也是跟着一路叠加的,大学生学WEB前端有前途吗,毫无疑问,是很有前途的。 3:大学生学习Web前端开发怎么样,有前途吗?这个问题无需太操心,学好这门技术,才是王道。 以上就是对大学生学习Web前端开发怎么样的解答,如果想要系统学习Web前端相关知识,可以考虑到源码时代学习。
【技术分享】使用NoSQL数据库必须知道的知识 经过前一阵子的学习,有同学在问,传统的RDBMS程序员或架构师需要知道如何在NoSQL(非关系型的数据库)和DCP(数据缓存平台)方面具有技术主导力,通过这个问题。其它的就不多说了。我们先来做一个初步的了解吧!什么是NoSQL? NoSQL是“Not Only SQL”的缩写,即指的是非关系型数据库。也就是告诉我们,适合用关系型数据库的时候使用关系数据库,不适合使用关系型数据库的时候没有必要使用关系型数据库,可以选用更适合的数据库。这时候,为了弥补关系型数据库的不足,各种各样的NoSQL数据库就应运而生了。 开发遇到的问题: 1.高并发读写 Web2.0网站,数据库并发负载非常高,往往达到每秒上万次的读写请求,对于传统的mysql 和oracle来讲每秒上万次的查询还是可以勉强应对,但是对于读写量来讲恐怕还是凶多吉少哦。 2.高容量存储和高效存储 Web2.0网站通常需要在后台数据库中存储海量数据,如何存储海量数据并进行高效的查询往往是一个挑战 3.高扩展性和高可用性 随着系统的用户量和访问量与日俱增,需要数据库能够很方便的进行扩展、维护 综合上述常遇到的问题,我们再来看一下NoSQL数据库的优点,通过NoSQL自身的特点,你再来看一下到底能否给自己的网站也配上一款高性能的数据库呢? NoSQL数据库的优点: 1.海量数据下,读写性能优异 2.数据模型灵活 3.数据间无关系,易于扩展 然后,通过多年的技术经验,和我团队里小伙伴的帮助!我们具体总结为以下几点内容: 1.了解ACID与BASE的比较(基本可用,软状态,最终一致) 2.了解持久性与非持久性,即一些NoSQL技术完全是内存数据存储 3.认识到 传统的标准化表格格式完全不同的数据模型:Columnar(Cassandra)与key / value(Memcached)vs面向文档(CouchDB)vs面向图形(Neo4j) 4.准备好处理像JDBC / ODBC这样的标准接口或像SQL这样的标准查询语言; 每个NoSQL工具都有不同的界面 5.架构师:重新思考网络规模/大规模NoSQL系统分布在几十到几百个服务器和网络中的事实,而不是共享数据库系统 6.习惯于可能不舒服的认识,你不知道数据的生命(大部分时间) 7.习惯数据可能不总是一致的事实; “最终一致”是BASE模型的关键元素之一 8.习惯数据可能不总是可用的事实 9.了解一些解决方案是分区容错的,有些则不是 这些属性因系统而异。了解NoSQL技术之间的差异同样重要。本文主要针对NoSQL学习者来讲,我们需要分析一下NoSQL的优缺点,然后提供一些解问题的思路。若有对本文持有不同观点的朋友,可以下后面的评论区说说您的观点。谢谢大家的阅读! 本文章由源码时代H5前端学科讲师原创 转载须注明出处!感谢大家的配合!
Web前端培训对初学者有什么用处?这是很多初学者或者是想学人群常常问的问题,现在有很多信息说培训学习到的技能并不是企业需要的,经验不足等等,但是自身又不能好好学习,还是想要通过培训来尽快学习,但是想了解Web前端培训对初学者有什么用处?下面源码时代小编跟大家分析分析。 首先说结论,帮助肯定是有的。但具体有多大,要看你本身的情况。 简短说,如果你一点点的程序基础都没有,那培训班也就是能让你写明白几个例子,而这几个例子的学习量,是无法让你拿十几K的薪水的。 如果你是大学毕业,有计算机的基础,那么前端培训确实能够在短时间内帮你提升一大节水平。不要被到处都是的培训班学员吓到,搞得好像很多培训班学生啊,搞的我也不好找工作了。这没有必然的关系,你是你,他是他。 Web前端培训对初学者有什么用处?网上好多吐槽Hr对应聘者不礼貌啊,什么的贴子,都忽略了一个事实,就是那些应聘者的水平啊,确实不到位。 而那些Hr呢,每天要看上千封简历,打几十上面个电话,来那么十几个人,而这些人里面90%以上都不靠谱。 Web前端培训对初学者有什么用处?在这种情况下,相信如果你是Hr,你的态度也不会好到哪里。所以啊,打铁还需自身硬。如果对方没给你好脸色,没尊重你,说明你确实还差点意思。 话说回来,这么年来,对我不礼貌的Hr,我真心的是一个也没遇到。 通过上面的介绍,希望大家对于学习Web前端开发有一定的信心,如果想要了解更多信息,可以咨询源码时代的老师们。
浅谈 Mui 上拉加载下拉刷新 Mui被前端开发者誉为最接近原生app体验的高性能前端框架,事实是他确实不负众望,为前端开发工程师开发移动端页面及app时提供了十分的便捷与完美的方案。今天源码时代的H5老师就来给大家带来一个关于mui框架的福利:有关移动端时常会用到的加载利器“下拉刷新与上拉加载”。通过本文,你将知道如何将mui的这个功能轻松地运用到你的项目中。是不是很期待,废话不多说,直接上干货。 首先打开mui的官网,在这里你可以事先体验一下mui的各种功能,比如一些简单的弹框,按钮之类的。 不过对于笔者这样,不愿看说明书的人来说,还是撸起袖子,直接拷代码来得更实际一点。 mui.init({ pullRefresh: { container: '#pullrefresh', down: { callback: pulldownRefresh }, up: { contentrefresh: '正在加载...', callback: pullupRefresh } } }); function pulldownRefresh() { setTimeout(function() { var table = document.body.querySelector('.mui-table-view'); var cells = document.body.querySelectorAll('.mui-table-view-cell'); for (var i = cells.length, len = i + 3; i < len; i++) { var li = document.createElement_x('li'); li.className = 'mui-table-view-cell'; li.innerHTML = 'Item ' + (i + 1) + ''; //下拉刷新,新纪录插到最前面; table.insertBefore(li, table.firstChild); } mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //refresh completed }, 1500); } var count = 0; function pullupRefresh() { setTimeout(function() { mui('#pullrefresh').pullRefresh().endPullupToRefresh((++count > 2)); //参数为true代表没有更多数据了。 var table = document.body.querySelector('.mui-table-view'); var cells = document.body.querySelectorAll('.mui-table-view-cell'); for (var i = cells.length, len = i + 20; i < len; i++) { var li = document.createElement_x('li'); li.className = 'mui-table-view-cell'; li.innerHTML = 'Item ' + (i + 1) + ''; table.appendChild(li); } }, 1500); } if (mui.os.plus) { mui.plusReady(function() { setTimeout(function() { mui('#pullrefresh').pullRefresh().pullupLoading(); }, 1000); }); } else { mui.ready(function() { mui('#pullrefresh').pullRefresh().pullupLoading(); }); } 注意,一定不要忘记引入mui的样式库和js文件哦,如果你懒得找,不妨就在我GitHub上去拿吧,暖心地附上地址: http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgithub.com%2Ftangyingg%2Ftangying&urlrefer=0b9a70a4602f803caa2328e3fc26fec1 拿走时不要忘了star一下哈。 Demo效果图:调试图 微信界面效果图 下拉加载效果图: 下拉正在加载 加载成功效果图 上拉刷新效果图:上拉正在刷新刷新成功效果图 现在我们就可以举一反三地将这个例子用到自己的项目中了,此时各位是不是已经迫不及待地想挽起袖子撸一个实例出来啊。加油吧,少年! 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
【技术分享】Nodejs使用Socket.IO类库WebSocket通信 Socket.io是一个简单的小类库,类库中实现了类似Node.js中的net模块所实现的功能,这些功能包括WebSocket通信,XHR轮询,JSONP轮询等,源码时代H5前端学科老师来聊一聊怎么使用这个类库,实现通信功能。 Socket.io类库可以接收所有与服务器端相连的客户端发送的消息,也可以相客户端发送消息,实现客户端和服务器端的即时通信。这个类库在服务器端和客户端之间提供了一个共享的接口,在客户端和服务器端连接建立以后,在处理通信消息时,我们开发者可以在客户端使用服务器端JS代码。 那么,我们怎么使用Socket.IO呢? 1.下载Socket.IO类库 npm install socket 2.在我们需要使用的模块中,引入 var socket = require( ‘ socket.io ’ ) 3. 创建一个Socket.IO服务器,它依赖于一个已经创建好的HTTP服务器,在HTTP 服务器运行之后,使用listen方法为该服务器附加一个Socket.IO服务器 var socketserver = socket.listen( httpserver ); // httpserver代表一个已运行的服务器 4. 在Socket.IO服务器创建好以后,当客户端和服务器端建立连接时,触发Socket.IO 服务器端的connnection事件,可以通过监听该事件并指定事件回调函数的方法指定当 客户端与服务器端建立连接时候所需执行的处理,该回调函数的指定方法如下 所示: socketserver.on(‘connection’, function() { //回调函数 } ) 5. 在该函数中使用一个参数,参数值为服务器端用于与客户端建立连接的socket 端口对象 6.在客户端和服务器端建立连接之后,当接收到客户端发送消息时,触发socket端口对象的message事件,可以通过监听该事件并指定事件回调函数的方法指定当接收到客户端发送消息时所需执行的处理,该回调函数的指定方法如下所示 socketserver.on( ‘message’, function ( msg ) { //回调函数 } ) 7. 在该回调函数中使用一个参数,参数值为客户端发送消息,代码如下 socket.send( msg ); 在客户端与服务器端建立连接之后,当客户端断开连接时,触发socket端口对象的 disconnect事件,可以通过监听该事件并指定事件回调函数的方法指定当前客户端 断开连接时所需执行的处理,该回调函数中不适用任何参数。 如下代码,展示如何为一个HTTP服务器附加一个Socket.IO服务器,当HTTP服务器接收到客户端请求时,读取应用程序根目录下的index.html文件中的内容,并且将其返回给客户端。当一个客户端与Socket.IO服务端建立连接后,向客户端发送“你好”,消息字符串。当接收到客户端发送消息时,将该消息输出控制台中。当客户端断开连接时,在控制台中输出“客户端断开连接”字符串。 var httpserver = require(‘http’); var socket = require(‘socket.io’); var fs= require(‘fs’); var server =http.createserver(function(req, res){ res.writehead(200,{ ‘content-type’: ‘text/html ‘}); res.end(fs.readfileSyc( ‘./index.html’ ); }) server.listen(3000); var socketserver = socket.listen(server); socketserver.on(‘connection’, function (socketserver) { console.log(‘客户端建立连接 ’ ) socketserver.send( ‘你好’ ) socketserver.on( ‘message’, function ( msg ) { console.log( ‘接收到一个消息:’, msg ) } ) socketserver.on( ‘disconnect’, function() { console.log(‘ 客户端连接已经建立’ ) } ) }) 本文章由源码时代H5前端学科讲师原创! 转载须注明出处!感谢大家的配合!
Vue 递归组件构建一个树形菜单 Vue.js 中的递归组件是一个可以调用自己的组件例如: Vue.component('recursive-component', { template: `<recursive-component></recursive-component>` }); 递归组件一般用于博客上显示评论,树形菜单或者嵌套菜单。一、初始化 我们直接使用 vue 提供的脚手架 vue-cli 来初始化我们的工程: # 搭建项目 vue init webpack-simple tree-menu # 进入项目 cd tree-menu # 依赖安装 npm install # 运行项目 npm run dev 现在我们的环境已经准备好了,在初始化的项目中,有一些不需要的代码我们可以自己动手删除。 二、数据结构 在本教程中,我们将使用一个树结构的数据来作为我们的每个菜单项,其中每个节点都是一个对象: label 属性,作为菜单的列表,如果该菜单下还有子菜单,就需要一个 nodes 属性,这是一个或多个节点的数组。 这里需要注意的是像所有的树结构一样,必须有一个根节点,然后从这个根节点进行无限嵌套。 let tree = { label: 'root', nodes: [ { label: 'item1', nodes: [ { label: 'item1.1' }, { label: 'item1.2', nodes: [ { label: 'item1.2.1' } ] } ] }, { label: 'item2' } ] } 三、递归组件 将 src 下的 app.vue 修改为 TreeMenu.vue ,该组件将作为我们的树形的递归组件,用来显示当前节点和自己的子节点。 <!-- ./src/TreeMenu.vue --> <template> <div> <div>{{ label }}</div> <tree-menu v-for="node in nodes" :nodes="node.nodes" :label="node.label" > </tree-menu> </div> </template> <script> export default { props: [ 'label', 'nodes' ], name: 'tree-menu' } </script> 如果您正在使用递归组件,则必须使用全局注册 Vue.component,或者给它一个 name 属性。否则,组件的任何子节点将无法解析进一步的调用,并且会得到未定义的组件错误。 和任何递归函数一样,我们需要一个条件来结束递归,否则渲染将无限期地继续下去,最终会导致堆栈溢出。 在我们的树形菜单中,当我们到达一个没有子节点的节点时,我们想要停止递归。你可以用 v-for ,如果 nodes 数组未定义,tree-menu 则不会继续调用组件。 <!-- ./src/TreeMenu.vue --> <template> <div> ... <!--如果 `nodes` 数组未定义则不会继续调用--> <tree-menu v-for="node in nodes"></tree-menu> </template> 四、主模块 在主模块 main.js 中声明一个树形结构的数据,并将该数据作为 data 属性的值,并引入 TreeMenu 组件 。 /* ./src/main.js */ import TreeMenu from './TreeMenu.vue' let tree = { ... } new Vue({ el: '#app', data: { tree }, components: { TreeMenu } }) 由于我们的数据结构只有一个单一的根节点。为了开始递归,我们将 TreeMenu 组件作为根节点的子节点,修改根目录下的 index.html 文件: <!-- ./index.html --> <div id="app"> <tree-menu :label="tree.label" :nodes="tree.nodes"></tree-menu> </div> 五、缩进 为了让用户可以直观地识别子组件,就有必要对每一层的子节点进行缩进。为了实现该效果,我们通过添加一个 depth 来实现。使用这个值来动态设置 css 中的 transform 属性,从而实现缩进效果。 <!-- ./src/TreeMenu.vue --> <template> <div> <div :style="indent">{{ label }}</div> <tree-menu v-for="node in nodes" :nodes="node.nodes" :label="node.label" :depth="depth + 1" > </tree-menu> </div> </template> <script> export default { props: [ 'label', 'nodes', 'depth' ], name: 'tree-menu', computed: { indent() { return { transform: `translate(${this.depth * 50}px)` } } } } </script> 同时在 index.html 上将 depth 设置为从零,也就是初始的时候是没有缩进的。这样每次将该值传递给任何子节点时,该值都会增加。 <!-- ./index.html --> <div id="app"> <tree-menu :label="tree.label" :nodes="tree.nodes" :depth="0" ></tree-menu> </div> 注意:depth 的值要确保它是一个 JavaScript 数字而不是一个字符串。 六、收缩 在初始的时候,应该只显示根节点,其他节点全部隐藏,然后通过鼠标点击的时候,能够展开各个节点。 为此,我们将添加一个本地状态 showChildren 。如果该值为 false,则不显示子节点,如果为 true 则显示子节点。而这个值应该通过鼠标点击节点来进行切换,所以我们需要一个点击事件: <!-- ./src/TreeMenu.vue --> <template> <div> <div :style="indent" @click="toggleChildren">{{ label }}</div> <tree-menu v-if="showChildren" v-for="node in nodes" :nodes="node.nodes" :label="node.label" :depth="depth + 1" > </tree-menu> </div> </template> <script> export default { props: [ 'label', 'nodes', 'depth' ], data() { return { showChildren: false } }, name: 'tree-menu', computed: { indent() { return { transform: `translate(${this.depth * 50}px)` } } }, methods: { toggleChildren() { this.showChildren = !this.showChildren; } } } </script> 七、样式 经过以上步骤就已经完成了一个基本的树形菜单。为了使 UI 效果更佳,我们可以添加一个加号和减号图标,使用户界面更加明显。以下是全部的代码: <!-- ./index.html --> <div id="app"> <tree-menu :label="tree.label" :nodes="tree.nodes" :depth="0" > </tree-menu> </div> /* ./src/main.js */ import Vue from 'vue' import TreeMenu from './TreeMenu.vue' import './assets/app.css' //定义树形菜单数据 let tree = { label: 'root', nodes: [ { label: 'item1', nodes: [ { label: 'item1.1' }, { label: 'item1.2', nodes: [ { label: 'item1.2.1' } ] } ] }, { label: 'item2' } ] } new Vue({ el: '#app', // render: h => h(App) data: { tree }, components: { TreeMenu } }) <!-- ./src/TreeMenu.vue --> <template> <div> <!-- <div :style="indent" @click="toggleChildren">{{ label }}</div> --> <div @click="toggleChildren"> <div :style="indent" :class="labelClasses"> <i v-if="nodes" :class="iconClasses"></i> {{ label }} </div> </div> <tree-menu v-if="showChildren" v-for="node in nodes" :nodes="node.nodes" :label="node.label" :depth="depth + 1" > </tree-menu> </div> </template> <script> export default { props: [ 'label', 'nodes', 'depth' ], name: 'tree-menu', data() { return { showChildren: false } }, computed: { iconClasses: function iconClasses() { return { 'plus': !this.showChildren, 'minus': this.showChildren }; }, labelClasses: function labelClasses() { return { 'has-children': this.nodes }; }, indent() { return { transform: `translate(${this.depth * 50}px)` } } }, methods: { toggleChildren() { this.showChildren = !this.showChildren; } } } </script> ./src/assets/app.css body { font-family: sans-serif; font-size: 18px; font-weight: 300; line-height: 1em; } .container { width: 300px; margin: 0 auto; } .tree-menu .label-wrapper { padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid #ccc; } .tree-menu .label-wrapper .has-children { cursor: pointer; } .plus:before { content:'+'; } .minus:before { content:'-'; } 本文章由源码时代H5学科讲师原创! 转载须注明出处!感谢大家的配合!
1 下一页