Home > Web Front-end > JS Tutorial > Can CSS Style Half of a Character?

Can CSS Style Half of a Character?

Mary-Kate Olsen
Release: 2024-10-31 06:54:01
Original
266 people have browsed it

Is it Possible to Apply CSS to Half of a Character?

Problem:

How can we style only one half of a character? For instance, making one half of the letter transparent.

Previous Attempts:

  • Searching for methods to style half of a character
  • Styling part of a character using CSS or JavaScript
  • Applying CSS to 50% of a character

Example:

Can CSS Style Half of a Character?

Solution:

GitHub Plugin:

https://github.com/arbel/half-style

Demo:

http://jsfiddle.net/arbel/pd9yB/1694/

Features:

  • Pure CSS for single characters
  • JavaScript automation across text or multiple characters
  • Preserves text accessibility for screen readers

Basic Solution:

Single Character:

Half Style on text

This solution uses pure CSS and a class named .halfStyle.

Any Text:

Add the class .textToHalfStyle to the element containing the text.

JavaScript Automation:

<code class="javascript">// jQuery for automated mode
jQuery(function($) {
    var text, chars, $el, i, output;

    // Iterate over all class occurences
    $('.textToHalfStyle').each(function(idx, el) {
    $el = $(el);
    text = $el.text();
    chars = text.split('');

    // Set the screen-reader text
    $el.html('<span style="position: absolute !important;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);">' + text + '</span>');

    // Reset output for appending
    output = '';

    // Iterate over all chars in the text
    for (i = 0; i < chars.length; i++) {
        // Create a styled element for each character and append to container
        output += '<span aria-hidden="true" class="halfStyle" data-content="' + chars[i] + '">' + chars[i] + '</span>';
    }

    // Write to DOM only once
    $el.append(output);
  });
});</code>
Copy after login

CSS:

<code class="css">.halfStyle {
    position: relative;
    display: inline-block;
    font-size: 80px; /* or any font size will work */
    color: black; /* or transparent, any color */
    overflow: hidden;
    white-space: pre; /* to preserve the spaces from collapsing */
}

.halfStyle:before {
    display: block;
    z-index: 1;
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    content: attr(data-content); /* dynamic content for the pseudo element */
    overflow: hidden;
    color: #f00;
}</code>
Copy after login

Example Usage:

<code class="html"><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<p>Single Characters:</p>
<span class="halfStyle" data-content="X">X</span>
<span class="halfStyle" data-content="Y">Y</span>
<span class="halfStyle" data-content="Z">Z</span>
<span class="halfStyle" data-content="A">A</span>

<hr/>
<p>Automated:</p>

<span class="textToHalfStyle">Half-style, please.</span></code>
Copy after login

The above is the detailed content of Can CSS Style Half of a Character?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template