首頁 >web前端 >css教學 >JavaScript 如何像 CSS 的 `:first-line` 一樣為任意行設定特定文字行的樣式?

JavaScript 如何像 CSS 的 `:first-line` 一樣為任意行設定特定文字行的樣式?

Barbara Streisand
Barbara Streisand原創
2024-11-18 21:48:02287瀏覽

How Can JavaScript Style Specific Lines of Text Like CSS's `:first-line` but for Any Line?

使用JavaScript 選擇特定文字行

我們如何設定特定文字行的樣式,類似於:first-line CSS 偽元素,而對 CSS 偽元素,而可能不將其限制為僅第一行?

雖然僅 CSS 不足以完成此任務,但 JavaScript 提供了解決方案。

JavaScript 實作:

我們可以使用JavaScript 將每個單字包裝在一個span 元素中:

$(function(){ 
  var p = $('p'); 
  var words = p.text().split(' '); 
  var text = ''; 
  $.each(words, function(i, w){
                   if($.trim(w)) text = text + '<span>' + w + '</span> ' }
        ); //each word 
  p.html(text); 

為了確定每個span的行號,我們使用Window 的resize 事件來計算每個span 的垂直位置:

  $(window).resize(function(){ 

    var line = 0; 
    var prevTop = -15; 
    $('span', p).each(function(){ 
      var word = $(this); 
      var top = word.offset().top; 
      if(top!=prevTop){ 
        prevTop=top; 
        line++; 
      } 
      word.attr('class', 'line' + line); 
    });//each 

  });//resize 

突出顯示偶數/奇數行:

要突出顯示偶數/奇數行,程式碼可以簡化為:

  $(window).resize(function(){ 

    $('span', p).each(function(){ 
      var word = $(this); 
      var top = word.offset().top; 
      var line = Math.floor(top / 20);
      word.attr('class', (line % 2 == 0 ? 'even' : 'odd'));
    });//each
  });//resize 

注意事項:

此方法假設單字不會在同一行內換行,且類別中的變更可能會影響單字的大小或寬度。

範例:

[點擊此處](https://jsbin.com/piwizateni/1/edit?html,css,js,output) 進行工作演示。

以上是JavaScript 如何像 CSS 的 `:first-line` 一樣為任意行設定特定文字行的樣式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn