• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > Angular学习之以Tooltip为例了解自定义指令

Angular学习之以Tooltip为例了解自定义指令

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Angular学习,Tooltip自定义指令等相关知识,希望对您有所帮助

本篇文章带大家继续angular的学习,以Tooltip为例来了解一下自定义指令,希望对大家有所帮助!


Angular学习之以Tooltip为例了解自定义指令


在之前的文章中,我们已经概览了 Angular 的相关内容。在自定义指令的部分,我们已经能够实现编写,但是,在实际场景中,我们还需要标准化的管理。

Angular 是 Angular.js 的升版。

So,本文,我们就以 Tooltip 来讲解下自定义指令的内容。

线上效果图,如下:

Angular学习之以Tooltip为例了解自定义指令

目录结构

在上一篇文章的实现的代码项目基础上,执行命令行:

# 进入 directives 文件夹$ cd directives # 创建 tooltip 文件夹$ mkdir tooltip # 进入 tooltip 文件夹$ cd tooltip # 创建 tooltip 组件$ ng generate component tooltip # 创建 tooltip 指令$ ng generate directive tooltip

执行完上面的命令行之后,你会得到 app/directive/tooltip 的文件目录结构如下:

tooltip├── tooltip                                           // tooltip 组件│    ├── user-list.component.html                     // 页面骨架│    ├── user-list.component.scss                     // 页面独有样式│    ├── user-list.component.spec.ts                  // 测试文件│    └── user-list.component.ts                       // javascript 文件├── tooltip.directive.spec.ts                         // 测试文件└── tooltip.directive.ts                              // 指令文件

嗯,这里我将组件放在 tooltip 的同级,主要是方便管理。当然,这个因人而异,你可以放在公共组件 components 文件夹内。


编写 tooltip 组件

在 html 文件中,有:

<div class="caret"></div><div class="tooltip-content">{{data.content}}</div>

在样式文件 .scss 中,有:

$black: #000000;$white: #ffffff;$caret-size: 6px;$tooltip-bg: transparentize($black, 0.25); // transparentize 是 sass 的语法$grid-gutter-width: 30px;$body-bg-color: $white;$app-anim-time: 200ms;$app-anim-curve: ease-out;$std-border-radius: 5px;$zindex-max: 100; // :host 伪类选择器,给组件元素本身设置样式:host {  position: fixed;  padding: $grid-gutter-width/3 $grid-gutter-width/2;  background-color: $tooltip-bg;  color: $body-bg-color;  opacity: 0;  transition: all $app-anim-time $app-anim-curve;  text-align: center;  border-radius: $std-border-radius;  z-index: $zindex-max;} .caret { // 脱字符  width: 0;  height: 0;  border-left: 6px solid transparent;  border-right: 6px solid transparent;  border-bottom: 6px solid $tooltip-bg;  position: absolute;  top: -$caret-size;  left: 50%;  margin-left: -$caret-size/2;  border-bottom-color: $tooltip-bg;}

嗯~,css 是一个神奇的东西,之后会安排一篇文章来讲解下 sass 相关的内容...


然后,在 javascript 文件 tooltip.component.ts 内容如下:

import {   Component,   ElementRef, // 元素指向  HostBinding,   OnDestroy,   OnInit } from '@angular/core'; @Component({  selector: 'app-tooltip', // 标识符,表明我这个组件叫做啥,这里是 app-tooltip  templateUrl: './tooltip.component.html', // 本组件的骨架  styleUrls: ['./tooltip.component.scss'] // 本组件的私有样式})export class TooltipComponent implements OnInit {   public data: any; // 在 directive 上赋值  private displayTimeOut:any;   // 组件本身 host 绑定相关的装饰器  @HostBinding('style.top')  hostStyleTop!: string;  @HostBinding('style.left') hostStyleLeft!: string;  @HostBinding('style.opacity') hostStyleOpacity!: string;   constructor(    private elementRef: ElementRef  ) { }   ngOnInit(): void {    this.hostStyleTop = this.data.elementPosition.bottom + 'px';     if(this.displayTimeOut) {      clearTimeout(this.displayTimeOut)    }     this.displayTimeOut = setTimeout((_: any) => {      // 这里计算 tooltip 距离左侧的距离,这里计算公式是:tooltip.left + 目标元素的.width - (tooltip.width/2)      this.hostStyleLeft = this.data.elementPosition.left + this.data.element.clientWidth / 2 - this.elementRef.nativeElement.clientWidth / 2 + 'px'      this.hostStyleOpacity = '1';      this.hostStyleTop = this.data.elementPosition.bottom + 10 + 'px'    }, 500)  }        // 组件销毁  ngOnDestroy() {    // 组件销毁后,清除定时器,防止内存泄露    if(this.displayTimeOut) {      clearTimeout(this.displayTimeOut)    }  }}


编写 tooltip 指令

这是本文的重点,具体的说明,我在代码

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Angular学习之以Tooltip为例了解自定义指令

相关文章

  • 电商网站站内结构SEO优化技巧
  • PhotoShop CS6 3D功能制作3D立体文字效果教程
  • 浅谈如何在制作dedecms模板中进行一些SEO设置
  • Photoshop制作复古黄金文字效果
  • PHP中如何理解foreach遍历二维数组
  • 总结分享: 6 种JavaScript的打断点的方式(收藏学习)
  • 浅谈小程序中下拉刷新和上拉加载功能怎么实现?(附代码)
  • 一文详解Laravel如何安装inertia vue3的版本
  • 在javascript中,NaN是什么类型?
  • Photoshop打造超酷光感立体文字效果

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • PHP中怎么解决serialize函数中文乱码的问题
    • php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?
    • 获得高质量流量的方法
    • 如何开启WordPress调试模式(报错提示)
    • PetalBot-华为自研搜索引擎,这个蜘蛛就是花瓣蜘蛛,将来或许也会在国内再杀出一个搜索引擎
    • Photoshop绘制立体质感的网页开关按钮
    • 帝国CMS二次开发领号发号功能开发思路
    • 浅谈怎么使用小程序实现一个变速大转盘
    • PhotoShop设计打造品牌艺术字LOGO效果教程
    • 踩坑分享:Laravel集成phpCAS过程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有