使用AngularJS2中的指令实现按钮的切换效果


Posted in Javascript onMarch 27, 2017

使用AngularJS2中的指令实现按钮的切换效果 

之前在AngularJS2中一种button切换效果的实现(二)中实现了按钮的切换效果,但是方法比较low,这次我们使用Angular2的指令来实现。

指令实现hover效果

import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
 selector: '[myHighlight]'
})
export class HighlightDirective {
 constructor(private el: ElementRef) { }
 @HostListener('mouseenter') onMouseEnter() {
 this.highlight('red');
 }
 @HostListener('mouseleave') onMouseLeave() {
 this.highlight(null);
 }
 private highlight(color: string) {
 this.el.nativeElement.style.backgroundColor = color;
 }
}
<button myHighlight class="btn">按钮一</button>
<button myHighlight class="btn">按钮二</button>
<button myHighlight class="btn">按钮三</button>
.btn{
 height: 50px;
 width: 100px;
 background-color: #3399ff;
 color: white;
 border: 0;
 outline: 0;
 cursor: hand;
}

hover的效果直接参考Angular官网的代码。

使用AngularJS2中的指令实现按钮的切换效果 

指令实现click效果

import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
 selector: '[myHighlight]'
})
export class HighlightDirective {
 constructor(private el: ElementRef) { }
 @HostListener('click') onMouseClick() {
 this.clickhighlight("black");
 }
 private clickhighlight(color: string) {
 let obj = this.el.nativeElement;
 let btns = obj.parentNode.children;
 //背景色全部重置
 for(let i=0; i<btns.length; i++){
 btns[i].style.backgroundColor = "#3399ff";
 }
 //设置当前点击对象的背景色
 obj.style.backgroundColor = color;
 }
}
<div>
<button myHighlight class="btn">按钮一</button>
<button myHighlight class="btn">按钮二</button>
<button myHighlight class="btn">按钮三</button>
</div>
.btn{
 height: 50px;
 width: 100px;
 background-color: #3399ff;
 color: white;
 border: 0;
 outline: 0;
 cursor: hand;
}

click效果仍然用@HostListener装饰器引用属性型指令的宿主元素,首先把所有button的背景颜色重置,然后再设置当前点击对象的背景颜色,这样就达到了点击后背景颜色变化的效果。

使用AngularJS2中的指令实现按钮的切换效果 

指令实现click加hover效果

import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
 selector: '[myHighlight]'
})
export class HighlightDirective {
 constructor(private el: ElementRef) { }
 @HostListener('click') onMouseClick() {
 this.clickhighlight("black");
 }
 private clickhighlight(color: string) {
 let obj = this.el.nativeElement;
 let btns = obj.parentNode.children;
 //背景色全部重置
 for(let i=0; i<btns.length; i++){
 btns[i].style.backgroundColor = "#3399ff";
 }
 //设置当前点击对象的背景色
 obj.style.backgroundColor = color;
 }
}
<div>
<button myHighlight class="btn">按钮一</button>
<button myHighlight class="btn">按钮二</button>
<button myHighlight class="btn">按钮三</button>
</div>
.btn{
 height: 50px;
 width: 100px;
 background-color: #3399ff;
 color: white;
 border: 0;
 outline: 0;
 cursor: hand;
}
.btn:hover{
 background: black !important;
}

配合上文click效果,只要加上一行css代码就可以实现click和hover的组合效果,此处务必使用hover伪类,并用!important来提升样式的优先级,如果用@HostListener装饰器,mouseenter、mouseleave、click三者会打架:

使用AngularJS2中的指令实现按钮的切换效果 

以上所述是小编给大家介绍的使用AngularJS2中的指令实现按钮的切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
(转载)JavaScript中匿名函数,函数直接量和闭包
May 08 Javascript
JavaScript入门教程(9) Document文档对象
Jan 31 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
Jan 14 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
javascript实现根据身份证号读取相关信息
Dec 17 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
Google 地图事件实例讲解
Aug 06 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
详解VUE的状态控制与延时加载刷新
Mar 27 #Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 #Javascript
js实现三级联动效果(简单易懂)
Mar 27 #Javascript
JS数组去重(4种方法)
Mar 27 #Javascript
JS实现隔行换色的表格排序
Mar 27 #Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 #Javascript
axios学习教程全攻略
Mar 26 #Javascript
You might like
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
一个javascript参数的小问题
2008/03/02 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
cf收人广告词
2014/03/14 职场文书
司法建议书范文
2014/05/13 职场文书
企业趣味活动方案
2014/08/21 职场文书
高三英语教学计划
2015/01/23 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
《活见鬼》教学反思
2016/02/24 职场文书