

NG-GX-SPLIT-TEXT - This is an Angular utility to split text into words, lines or chars for subsequent animations.
You can familiarize yourself with the demo version here - DEMO
Versions
Angular |
ng-gx-split-text |
>=8.0.0 <9.0.0 |
v0.0.x |
Features
- <input checked="" disabled="" type="checkbox"> Split into chars
- <input checked="" disabled="" type="checkbox"> Split into words
- <input checked="" disabled="" type="checkbox"> Split into line-chars
- <input checked="" disabled="" type="checkbox"> Split into line-words
- <input checked="" disabled="" type="checkbox"> Defer init
Getting started
Step 1: Install ng-gx-split-text
(npm):
npm install ng-gx-split-text
Step 2: Import NgGxSplitTextModule:
import { NgGxSplitTextModule } from 'ng-gx-split-text';
@NgModule({
declarations: [
AppComponent,
],
imports: [
NgGxSplitTextModule,
],
bootstrap: [AppComponent]
})
export class AppModule {}
Step 3: Add directive to HTML node you want to split and template ID to reference this Directive in Component (example: #text):
<p #text ngGxSplitText>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus amet consequuntur culpa
delectus, doloribus exercitationem ipsam, laudantium molestiae non numquam odit omnis optio praesentium quae ratione
similique sit soluta voluptatem?</p>
Step 4: Add @ViewChild to access node words, lines and chars by previously assigned ID:
@ViewChild('text', { static: true, read: NgGxSplitTextDirective }) text: NgGxSplitTextDirective;
Step 5: Work with split text using @ViewChild (Example for GSAP):
export class AppComponent implements AfterViewInit {
@ViewChild('text', {static: true, read: NgGxSplitTextDirective}) text: NgGxSplitTextDirective;
tlText = new TimelineMax();
constructor() {}
ngAfterViewInit(): void {
this.textAnimation();
}
textAnimation() {
this.tlText
.to(this.text.words, 0.5, {
opacity: 0,
})
.staggerFromTo(this.text.words, 0.5, {
opacity: 0,
x: () => {
return _.random(-100, 100);
},
y: () => {
return _.random(-100, 100);
},
rotation: () => {
return _.random(-25, 25);
},
immediateRender: false,
}, {
opacity: 1,
x: 0,
y: 0,
rotation: 0,
}, 0.03);
}
}
API
Directives
Name |
Description |
NgGxSplitText |
Split your text (all options is default) |
[splitOptions] |
Split your text (custom options ) |
Options
Name |
Type |
Default |
Description |
defer |
boolean |
false |
Defer initiation (for manual initiation use initSplit() ) |
mask |
boolean |
false |
Add mask/wrap (overflow: hidden) for words |
onlyWords |
boolean |
false |
Split only words without chars |
Example:
<p #text ngGxSplitText>Lorem ipsum dolor...</p> // Default options
<p #text ngGxSplitText [splitOptions]="{defer: true, ...}">Lorem ipsum dolor...</p> // Custom options
Properties
Name |
Type |
Description |
isInit |
boolean |
Is Split Text applied |
nativeElement |
HTMLElement |
Container HTMLElement |
words |
HTMLElement[] |
Words HTMLElement array |
chars |
HTMLElement[] |
Chars HTMLElement array |
line-words |
HTMLElement[][] |
Line array with words HTMLElement array |
line-chars |
HTMLElement[][] |
Line array with chars HTMLElement array |
Example:
this.text.isInit
this.text.srcText
Methods
Name |
Description |
initSplit() |
Initialize Split Text (For using in case defer: true ) |
resetSplit() |
Reset to source text |
Example:
ngAfterViewInit(): void {
this.text.initSplit();
this.text.initSplit();
}