【问题标题】:text-overflow property custom styletext-overflow 属性自定义样式
【发布时间】:2019-12-11 04:26:54
【问题描述】:

应用程序是基于 Angular 构建的。在组件中,有一个 div,其中有一个文本。 <div>abcdefghijklmnop<div>

根据屏幕大小,它应该完全显示或者应该被剪裁。为此,我发现有一个属性'text-overflow',它像abcde... 一样剪切了文本。但要求是我们必须以其他方式剪辑文本,

<first 3 character>...<last 3 character>

所以它应该看起来像abc...nop。我们怎样才能做到这一点?浏览器是chrome。

【问题讨论】:

  • 您正在寻找哪些窗口断点以及这些断点上的预期行为是什么?
  • 我想说的角管用例
  • 有什么方法可以完全通过 mediaquery 或 css 实现。如果使用角度,我们应该如何处理? @AkberIqbal
  • @SiddAjmera 断点会像 bootstrap 中的那样,我认为它是 5。此外,Bootstrap 也链接在此应用程序中。

标签: javascript html css angular typescript


【解决方案1】:

您可以使用如下所示的属性指令来执行此操作。更多详情请参考Angular DOC

请注意:您可以根据需要改进此指令。该指令只是为您提供实现该功能的基础。

指令:

import { Directive, ElementRef, OnInit } from '@angular/core';

@Directive({
  selector: '[appClip]'
})
export class ClipDirective implements OnInit {

  constructor(private el: ElementRef) { }

  ngOnInit(): void {
    let text: string = this.el.nativeElement.innerHTML;

    if(text.length > 6) {
      const first3 = text.slice(0, 3);
      const last3 = text.slice(text.length - 3)

      this.el.nativeElement.innerHTML =  `${first3}...${last3}`;
    }
  }

}

HTML:

<div appClip="">abcdefghijklmnop</div>

Working DEMO

【讨论】:

  • 感谢您的快速回复。我们如何应用逻辑,例如如果我们确实有空间限制然后剪辑 innerHTML,否则没有。空间限制可以是当前 div 元素的宽度和屏幕大小,就像在手机中一样,如果我们打开,它应该剪辑,否则不会。
  • 是的,您将能够做到,请遵循该指令的基本结构。您可以使用this.el.nativeElement 获取 div 元素的宽度。随心所欲地操纵事物。我只给了你剪辑文本的基本答案:)。欲了解更多信息,请关注this link about attribute directive
猜你喜欢
  • 2017-06-23
  • 2018-04-20
  • 2011-01-11
  • 1970-01-01
  • 2011-12-12
  • 2015-01-23
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多