使用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 相关文章推荐
js螺旋动画效果的具体实例
Nov 15 Javascript
juery框架写的弹窗效果适合新手
Nov 27 Javascript
node.js中的querystring.escape方法使用说明
Dec 10 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
jquery 多个radio的click事件实例
Dec 03 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
全面介绍vue 全家桶和项目实例
Dec 27 Javascript
详解JavaScript 中 if / if...else...替换方式
Jul 15 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
JavaScript实现原型封装轮播图
Dec 27 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php ios推送(代码)
2013/07/01 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
了解ESlint和其相关操作小结
2018/05/21 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python数据操作方法封装类实例
2017/06/23 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python 带时区的日期格式化操作
2020/10/23 Python
家佳咖啡店创业计划书
2013/12/27 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL