我希望这是你所期望的,让我们尝试和评论。
app.component.css
.text {
overflow: hidden;
}
p {
text-align: center;
white-space: pre;
transition: 30s;
}
app.component.html
<div class="text" #parentTag (mouseenter)="move()" (mouseleave)="stop()">
<p #target >This is some long long super long, extremly long text right here This is some long long super long, extremly long text right hereThis is some long long super long, extremly long text right here This is some long long super long, extremly long text right here This is some long long super long, extremly long text right here This is some long long super long, extremly long text right here This is some long long super long, extremly long text right here
</p>
<div>
app.component.ts
import { Component, ElementRef,Renderer, ViewChild, Renderer2 } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
left = 0;
@ViewChild('parentTag', {static: false})
parentTag: ElementRef;
@ViewChild('target', {static: false})
target: ElementRef;
constructor(private el:ElementRef, private renderer: Renderer2){
}
move(){
console.log(this.parentTag.nativeElement.clientWidth);
console.log(this.target.nativeElement.scrollWidth);
let left = this.target.nativeElement.scrollWidth -
this.parentTag.nativeElement.clientWidth;
this.renderer.setStyle(this.target.nativeElement, 'margin-left', '-'+left+'px');
}
stop(){
this.renderer.setStyle(this.target.nativeElement, 'margin-left', '0px');
}
}