使用AngularJS2中的指令实现按钮的切换效果
发布时间 - 2026-01-11 00:22:40 点击率:次

之前在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官网的代码。
指令实现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的背景颜色重置,然后再设置当前点击对象的背景颜色,这样就达到了点击后背景颜色变化的效果。
指令实现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中的指令实现按钮的切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# angularjs
# 指令
# angularjs按钮切换
# AngularJS实现动态切换样式的方法分析
# AngularJS标签页tab选项卡切换功能经典实例详解
# 详解AngularJS ng-class样式切换
# angularJs的ng-class切换class
# AngularJS路由切换实现方法分析
# AngularJS实现使用路由切换视图的方法
# AngularJS入门教程之多视图切换用法示例
# 用AngularJS的指令实现tabs切换效果
# 使用AngularJS实现可伸缩的页面切换的方法
# angularjs实现Tab栏切换效果
# 背景色
# 小编
# 在此
# 给大家
# 然后再
# 来实现
# 所述
# 给我留言
# 官网
# 感谢大家
# 就可以
# 就达
# 疑问请
# 有任何
# 实现了
# HighlightDirective
# export
# core
# selector
# Input
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用wdcp快速搭建高效网站?
JavaScript常见的五种数组去重的方式
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
如何在腾讯云免费申请建站?
如何自定义建站之星网站的导航菜单样式?
高防服务器租用如何选择配置与防御等级?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
网站制作免费,什么网站能看正片电影?
焦点电影公司作品,电影焦点结局是什么?
JavaScript Ajax实现异步通信
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
利用python获取某年中每个月的第一天和最后一天
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何在七牛云存储上搭建网站并设置自定义域名?
JS中对数组元素进行增删改移的方法总结
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
如何在服务器上配置二级域名建站?
Laravel怎么使用artisan命令缓存配置和视图
微信小程序 scroll-view组件实现列表页实例代码
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Laravel如何生成URL和重定向?(路由助手函数)
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何在阿里云服务器自主搭建网站?
如何快速上传建站程序避免常见错误?
如何挑选优质建站一级代理提升网站排名?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在景安服务器上快速搭建个人网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何在腾讯云服务器快速搭建个人网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在阿里云虚拟服务器快速搭建网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?

