jQuery: formattare singole lettere

jQuery: formattare singole lettere

I CSS non possono controllare il layout delle singole lettere che compongono una parola nel testo. Una pseudo-classe strutturale come :nth-letter() non è mai stata proposta agli sviluppatori delle specifiche. Per questo motivo possiamo usare jQuery per scomporre il testo di una parola in singole lettere e applicare stili diversi a ognuna di queste. Vediamo come.

Abbiamo il seguente elemento HTML:


<h1>Test</h1>

Creiamo il seguente plugin jQuery:


(function($) {
    
    $.fn.letters = function(cssClass) {
        
          cssClass = cssClass || 'letter';
          
          var text = this.text();
          
          if(!/^[a-z]+$/i.test(text)) {
            
                throw new Error(text + ' non contiene lettere');
            
          }
          
          var counter = 0, html = '', i;
          
          
          for(i = 0; len = text.length, i < len; i += 1) {
            
            
              counter += 1;
              html += '<span class="' + cssClass + counter + '">' + text[i] + '</span>';
            
            
          }
          
          this.html(html);
          
          return this;
          
        
        
        
    };
    
    
})(jQuery)

Il plugin crea una stringa HTML contenente tanti elementi span quante sono le lettere del testo. Ciascuno di questi elementi ha una classe CSS progressiva (letter1, letter2 eccetera) e ha come contenuto la lettera corrente. Viene sfruttata una particolarità delle stringhe JavaScript, ossia il fatto di poter essere considerate come array.

Definiamo quindi delle classi CSS:


span.chunk1 {

    color: #d34545;
    font-family: Impact, sans-serif;
}

span.chunk2 {

    color: #c30;
    font-family: Impact, sans-serif;
    text-transform: uppercase;

}

span.chunk3 {

    text-transform: uppercase;
    background: #000;
    color: #fff;
    text-shadow: 1px 1px 1px #aaa;
    font-size: 1.2em;

}

span.chunk4 {

    background: #000;
    color: #fff;
    text-transform: uppercase;
    text-shadow: 1px 1px 1px #aaa;

}

Poi usiamo il nostro plugin:


$(document).ready(function() {


    $('h1').letters('chunk');
    


});

Potete visionare l'esempio finale in questa pagina.

Torna su