使用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 相关文章推荐
JQuery toggle使用分析
Nov 16 Javascript
js拦截alert对话框另类应用
Jan 16 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
JavaScript检测并限制复选框选中个数的方法
Aug 12 Javascript
值得分享和收藏的Bootstrap学习教程
May 12 Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
前端路由&amp;webpack基础配置详解
Jun 10 Javascript
JS实现简单的表格增删
Jan 16 Javascript
详解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文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
php查询操作实现投票功能
2016/05/09 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
js继承实现方法详解
2016/12/16 Javascript
用原生js做单页应用
2017/01/17 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
python中的__slots__使用示例
2015/02/26 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
python flask中动态URL规则详解
2019/11/22 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
青年文明号事迹材料
2014/01/18 职场文书
法人任命书范本
2014/06/04 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
市场部岗位职责
2015/02/12 职场文书
Python合并多张图片成PDF
2021/06/09 Python