使用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中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
HTML页面登录时的JS验证方法
May 28 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
BootStrap 导航条实例代码
May 18 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
vue实现动态列表点击各行换色的方法
Sep 13 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 Javascript
JS 创建对象的模式实例小结
Apr 28 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下mysql数据库操作类(改自discuz)
2010/07/03 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Python采用Django开发自己的博客系统
2020/09/29 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
python制作抖音代码舞
2019/04/07 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Python学习之time模块的基本使用
2021/01/17 Python
python解包概念及实例
2021/02/17 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
2014年情人节活动方案
2014/02/16 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript