How to Create a CSS3 Blurred Text Link Effect
Detailed explanation of the effects of fuzzy text in CSS3 and FAQs
Key Points
- CSS3 can create blur text effects with transparent text colors and text shadows, but not all browsers support the
text-shadow
attribute. In this case, you can use Modernizr or write custom text shadow detection code as a workaround. - A pleasing effect can be achieved for the navigation menu by smoothly blurring the links in and out while hovering or focusing. This involves defining a "blur" class that can be applied to any link and then using a CSS style that can be applied in all browsers.
- When creating blurred text effects, be sure to pay attention to accessibility and visibility issues. In addition, the amount of blur can be controlled by adjusting the third text shadow attribute (defining the amount of blur). It can be modified to increase or decrease blur effect.
The following is an example of the text effect I saw on Chris Coyier's CSS Tricks website. Blur text can be created in CSS3 by applying transparent text colors and text shadows:
.blur-text { color: transparent; text-shadow: 0 0 5px //m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b000; }
Unfortunately, not all browsers support text-shadow
. IE9 and below will apply transparent colors, but no shadow effect - the text becomes invisible. We have to turn to Modernizr or write our own text shadow detection code. The following JavaScript code attaches the "textshadow" class to the HTML element when the browser supports it. So we can use the CSS selector of ".textshadow .blur-text" to ensure that it is applied only if the effect does not cause bad behavior:
if (document.createElement("detect").style.textShadow === "") { document.getElementsByTagName("html")[0].className += " textshadow"; }
Warning: Opera's fuzzy behavior Chrome and Firefox display fuzzy text, but are disabled in IE. However, Opera can be weird; it supports text-shadow
, but does not want to apply it to transparent text. This seems to be a mistake, as applying the color of rgba(0,0,0,0)
will solve the problem.
Fuzzy link
With some extra CSS3 magic, we can make the links smoothly blur in and out when hovering or focusing. This can be a pleasant effect for the navigation menu. We will define a "blur" class (or "blur in" class) that can be applied to any link. The link will start with blur and return to normal focus when activated. Similarly, we will define the "blur out" class that blurs the text when hovering/focusing, i.e.:
<a href="//m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b">开始模糊,结束清晰</a> <a href="//m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b">开始清晰,结束模糊</a>
We now need basic CSS styles that apply to all browsers—even those that do not support text-shadow
:
a.blur { text-decoration: none; color: //m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b339; } a.blur:hover, a.blur:focus { text-decoration: underline; color: //m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b933; }
The next set of styles applies to all .blur
elements, regardless of whether they have focus or not:
- We remove the link underline and outline
- Set the text color to transparent and
- Apply CSS3 transitions that animate smoothly between no text shadows and full text shadows. The effect starts after 100 milliseconds and is completed after 400 milliseconds.
.blur-text { color: transparent; text-shadow: 0 0 5px //m.sbmmt.com/link/93ac0c50dd620dc7b88e5fe05c70e15b000; }
Finally, we define two text shadow states. The third text shadow attribute defines the "fuzzy amount". It will animate between 0 and 4px, but if more or less blur is required, you can modify it:
if (document.createElement("detect").style.textShadow === "") { document.getElementsByTagName("html")[0].className += " textshadow"; }
View the link fuzzy demo page - the source code contains all the required CSS and JavaScript. I hope you find it useful, but be careful about accessibility/visibility issues when using this effect. If you use it elsewhere, I'd love to receive your comments and post the URL.
FAQs for fuzzy text effects in CSS3
(The FAQs part is omitted here because it is too long and is highly repetitive with the original content. FAQs can be selectively retained or reorganized as needed and rewritten in a more concise language.)
The above is the detailed content of How to Create a CSS3 Blurred Text Link Effect. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

The scope of JavaScript determines the accessibility scope of variables, which are divided into global, function and block-level scope; the context determines the direction of this and depends on the function call method. 1. Scopes include global scope (accessible anywhere), function scope (only valid within the function), and block-level scope (let and const are valid within {}). 2. The execution context contains the variable object, scope chain and the values of this. This points to global or undefined in the ordinary function, the method call points to the call object, the constructor points to the new object, and can also be explicitly specified by call/apply/bind. 3. Closure refers to functions accessing and remembering external scope variables. They are often used for encapsulation and cache, but may cause

To get the value of the HTML input box, the core is to find the corresponding element through the DOM operation and read the value attribute. 1. Use document.getElementById to be the most direct way. After adding an id to input, you can get the element and read the value through this method; 2. Use querySelector to be more flexible, and you can select elements based on attributes such as name, class, type, etc.; 3. You can add input or change event listeners to achieve interactive functions, such as obtaining input content in real time; 4. Pay attention to the script execution timing, spelling errors and null judgment, and ensure that the element exists before accessing the value.

There are two core methods to get the selected radio button value. 1. Use querySelector to directly obtain the selected item, and use the input[name="your-radio-name"]:checked selector to obtain the selected element and read its value attribute. It is suitable for modern browsers and has concise code; 2. Use document.getElementsByName to traverse and find the first checked radio through loop NodeList and get its value, which is suitable for scenarios that are compatible with old browsers or require manual control of the process; in addition, you need to pay attention to the spelling of the name attribute, handling unselected situations, and dynamic loading of content

To use JavaScript to create a secure sandbox iframe, first use the sandbox attribute of HTML to limit iframe behavior, such as prohibiting script execution, pop-up windows and form submission; secondly, by adding specific tokens such as allow-scripts to relax permissions as needed; then combine postMessage() to achieve secure cross-domain communication, while strictly verifying message sources and data; finally avoid common configuration errors, such as not verifying the source, not setting up CSP, etc., and perform security testing before going online.

CompositionAPI in Vue3 is more suitable for complex logic and type derivation, and OptionsAPI is suitable for simple scenarios and beginners; 1. OptionsAPI organizes code according to options such as data and methods, and has clear structure but complex components are fragmented; 2. CompositionAPI uses setup to concentrate related logic, which is conducive to maintenance and reuse; 3. CompositionAPI realizes conflict-free and parameterizable logical reuse through composable functions, which is better than mixin; 4. CompositionAPI has better support for TypeScript and more accurate type derivation; 5. There is no significant difference in the performance and packaging volume of the two; 6.

Debugging complex JavaScript applications requires systematic use tools. 1. Set breakpoints and conditional breakpoints to intercept suspicious processes, such as before function entry, loop, asynchronous callback and filter according to conditions; 2. Enable Blackboxing function to block third-party library interference; 3. Use debugger statements to control debug entry based on environmental judgment; 4. Trace the call link through CallStack, analyze the execution path and variable status, thereby efficiently locate the root cause of the problem.

There is an essential difference between JavaScript's WebWorkers and JavaThreads in concurrent processing. 1. JavaScript adopts a single-thread model. WebWorkers is an independent thread provided by the browser. It is suitable for performing time-consuming tasks that do not block the UI, but cannot operate the DOM; 2. Java supports real multithreading from the language level, created through the Thread class, suitable for complex concurrent logic and server-side processing; 3. WebWorkers use postMessage() to communicate with the main thread, which is highly secure and isolated; Java threads can share memory, so synchronization issues need to be paid attention to; 4. WebWorkers are more suitable for front-end parallel computing, such as image processing, and

Type casting is the behavior of automatically converting one type of value to another type in JavaScript. Common scenarios include: 1. When using operators, if one side is a string, the other side will also be converted to a string, such as '5' 5. The result is "55"; 2. In the Boolean context, non-Boolean values will be implicitly converted to Boolean types, such as empty strings, 0, null, undefined, etc., which are considered false; 3. Null participates in numerical operations and will be converted to 0, and undefined will be converted to NaN; 4. The problems caused by implicit conversion can be avoided through explicit conversion functions such as Number(), String(), and Boolean(). Mastering these rules helps
