- Saved searches
- Use saved searches to filter your results more quickly
- License
- mattboldt/typed.js
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Self-Typing Text Effect using CSS & JavaScript
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
A JavaScript Typing Animation Library
License
mattboldt/typed.js
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Typed.js is a library that types. Enter in any string, and watch it type at the speed you’ve set, backspace what it’s typed, and begin a new sentence for however many strings you’ve set.
script src pl-s">https://unpkg.com/typed.js@2.0.16/dist/typed.umd.js">script>
For use directly in the browser via tag:
span id pl-s">element">span> script src pl-s">https://unpkg.com/typed.js@2.0.16/dist/typed.umd.js">script> script> var typed = new Typed('#element', strings: ['First sentence.', '& a second sentence.'], typeSpeed: 50, >); script> body>
For use with a build tool like Vite, and/or in a React application, install with NPM or Yarn.
import Typed from 'typed.js'; const typed = new Typed('#element', strings: ['First sentence.', '& a second sentence.'], typeSpeed: 50, >);
import React from 'react'; import Typed from 'typed.js'; function MyComponent() // Create reference to store the DOM element containing the animation const el = React.useRef(null); React.useEffect(() => const typed = new Typed(el.current, strings: ['First sentence.', '& a second sentence.'], typeSpeed: 50, >); return () => // Destroy Typed instance during cleanup to stop animation typed.destroy(); >; >, []); return ( div className="App"> span ref=el> /> /div> ); >
Wonderful sites that have used (or are using) Typed.js
Strings from static HTML (SEO Friendly)
Rather than using the strings array to insert strings, you can place an HTML div on the page and read from it. This allows bots and search engines, as well as users with JavaScript disabled, to see your text on the page.
script> var typed = new Typed('#typed', stringsElement: '#typed-strings' >); /script>
div id pl-s">typed-strings"> p>Typed.js is a strong>JavaScriptstrong> library.p> p>It em>typesem> out sentences.p> div> span id pl-s">typed">span>
You can pause in the middle of a string for a given amount of time by including an escape character.
var typed = new Typed('#element', // Waits 1000ms after typing "First" strings: ['First ^1000 sentence.', 'Second sentence.'], >);
In the following example, this would only backspace the words after «This is a»
var typed = new Typed('#element', strings: ['This is a JavaScript library', 'This is an ES6 module'], smartBackspace: true, // Default value >);
The following example would emulate how a terminal acts when typing a command and seeing its result.
var typed = new Typed('#element', strings: ['git push --force ^1000\n `pushed to origin with option force`'], >);
CSS animations are built upon initialization in JavaScript. But, you can customize them at your will! These classes are:
/* Cursor */ .typed-cursor < >/* If fade out option is set */ .typed-fade-out
var typed = new Typed('#element', /** * @property array> strings strings to be typed * @property string> stringsElement ID of element containing string children */ strings: [ 'These are the default values. ', 'You know what you should do?', 'Use your own!', 'Have a great day!', ], stringsElement: null, /** * @property number> typeSpeed type speed in milliseconds */ typeSpeed: 0, /** * @property number> startDelay time before typing starts in milliseconds */ startDelay: 0, /** * @property number> backSpeed backspacing speed in milliseconds */ backSpeed: 0, /** * @property boolean> smartBackspace only backspace what doesn't match the previous string */ smartBackspace: true, /** * @property boolean> shuffle shuffle the strings */ shuffle: false, /** * @property number> backDelay time before backspacing in milliseconds */ backDelay: 700, /** * @property boolean> fadeOut Fade out instead of backspace * @property string> fadeOutClass css class for fade animation * @property boolean> fadeOutDelay Fade out delay in milliseconds */ fadeOut: false, fadeOutClass: 'typed-fade-out', fadeOutDelay: 500, /** * @property boolean> loop loop strings * @property number> loopCount amount of loops */ loop: false, loopCount: Infinity, /** * @property boolean> showCursor show cursor * @property string> cursorChar character for cursor * @property boolean> autoInsertCss insert CSS for cursor and fadeOut into HTML */ showCursor: true, cursorChar: '|', autoInsertCss: true, /** * @property string> attr attribute for typing * Ex: input placeholder, value, or just HTML text */ attr: null, /** * @property boolean> bindInputFocusEvents bind to focus and blur if el is text input */ bindInputFocusEvents: false, /** * @property string> contentType 'html' or 'null' for plaintext */ contentType: 'html', /** * Before it begins typing * @param Typed> self */ onBegin: (self) => >, /** * All typing is complete * @param Typed> self */ onComplete: (self) => >, /** * Before each string is typed * @param number> arrayPos * @param Typed> self */ preStringTyped: (arrayPos, self) => >, /** * After each string is typed * @param number> arrayPos * @param Typed> self */ onStringTyped: (arrayPos, self) => >, /** * During looping, after last string is typed * @param Typed> self */ onLastStringBackspaced: (self) => >, /** * Typing has been stopped * @param number> arrayPos * @param Typed> self */ onTypingPaused: (arrayPos, self) => >, /** * Typing has been started after being stopped * @param number> arrayPos * @param Typed> self */ onTypingResumed: (arrayPos, self) => >, /** * After reset * @param Typed> self */ onReset: (self) => >, /** * After stop * @param number> arrayPos * @param Typed> self */ onStop: (arrayPos, self) => >, /** * After start * @param number> arrayPos * @param Typed> self */ onStart: (arrayPos, self) => >, /** * After destroy * @param Typed> self */ onDestroy: (self) => >, >);
Thanks for checking this out. If you have any questions, I’ll be on Twitter.
If you’re using this, let me know! I’d love to see it.
Self-Typing Text Effect using CSS & JavaScript
Self-Typing Text Effect is a type of effect in which all the alphabets of the text are revealed one by one, one after the other to give the look and feel of being typed on the screen by themselves. Even though this is a basic text effect, it is still eye-capturing and effective animation. This animation is widely used in all modern web applications and is very easy to implement. This can be designed and implemented using only CSS or only JavaScript and developers can modify this animation depending on their creativity. For example, we can increase or decrease the speed of the text reveals or even add a blinking cursor to the end of the text to enhance the animation. For a different version of the text reveal effect which works on the same lines and is similar to this text effect, refer to the article:
In this tutorial, we will implement Self-Typing Text Effect using HTML, CSS, and JavaScript. We assume that you are familiar with HTML and CSS rules and have a basic knowledge of CSS Animations.
Step 1: Install Browsersync using npm. We will use Browsersync to start a server and provide a URL to view the HTML site, CSS Animation and to load the respective JavaScript files. We will install Browsersync globally.
npm install -g browser-sync
Step 2: Create an “index.html” file, an index.css file, and an index.js in your project root folder.
HTML: Add the following code snippet in that file. This file contains the codes for both CSS and JavaScript files which are included.
CSS: The overflow: hidden; CSS property specifies the behavior of the content if it overflows the HTML elements default box. As we have specified hidden, the content will be clipped initially and will be invisible to the user. This is important since we want to ensure that the text is not revealed until the animation is completed.
The white-space: nowrap; CSS property specifies the behavior of the white spaces in the text content. A sequence of white spaces, if present, will collapse into a single white space and the content will never be wrapped to the next line until a br HTML tag is encountered. This is important to keep the CSS Animation from breaking.
The margin: 0 auto; CSS property simply extends the margin as the text is revealed, to support the typing effect. Refer to the code comments for a better understanding. We have defined an additional wrapper class surrounding the entire CSS animation to align it to the center of the screen using the display: flex; and justify-content: center; CSS properties. The CSS Animation will be triggered as soon as the website is loaded. We have used simple CSS animation to achieve the typing effect as shown below. A detailed explanation of which can be found here. The steps(30, end) is a CSS animation timing function. The first parameter specifies the number of intervals in the function and it should be a positive integer greater than 0. The second parameter is an optional parameter and the value is set as an end.
JavaScript: In this file, we are manually appending every alphabet to the HTML h1 tag’s #effect element by incrementing an index value, fetching, and appending every character from the text using the charAt() and the setTimeout() JavaScript functions. The interval set in the setTimeout() function determines the speed at which the text will be revealed thereby displaying the Self-Typing Effect. The textEffect() function is triggered by the onClick HTML property of the Self Typing Text Effect using the HTML & JS button. In our case, we have set the interval as 50 ms but it can be re-adjusted according to convenience.