使用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语句中的CDATA标签的意义
May 09 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
js获取html文件的思路及示例
Sep 17 Javascript
js实现简单计算器
Nov 22 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
Oct 22 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php自定义的格式化时间示例代码
2013/12/05 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
php实现登录页面的简单实例
2019/09/29 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
python统计cpu利用率的方法
2015/06/02 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
python程序 创建多线程过程详解
2019/09/23 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Python必须了解的35个关键词
2020/07/16 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
六十大寿答谢词
2014/01/12 职场文书
创建青年文明号材料
2014/05/09 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
校长四风对照检查材料
2014/09/27 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
承诺函格式模板
2015/01/21 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
JavaScript函数柯里化
2021/11/07 Javascript
python blinker 信号库
2022/05/04 Python