搜尋
首頁web前端css教學WordPress中的造型按鈕阻止主題

Styling Buttons in WordPress Block Themes

WordPress 6.1 引入的新功能為在區塊編輯器和站點編輯器 UI 中直接應用陰影提供了控制,這篇文章將深入探討在 WordPress 區塊主題中設置按鈕樣式的方法,特別是利用 theme.json 文件。

為什麼選擇按鈕?這是個好問題,讓我們從這裡開始。

不同類型的按鈕

在 WordPress 區塊編輯器的上下文中,我們必須區分兩種不同類型的按鈕:

  1. 按鈕區塊內的子區塊。
  2. 嵌套在其他區塊內的按鈕(例如,“文章評論表單”區塊)。

如果我們將這兩種區塊添加到模板中,它們默認情況下具有相同的外觀。

但其標記卻大相徑庭:

<div>
  <a>Button 1</a>
</div>
<p>
  </p>

我們可以看到,HTML 標籤名稱不同。正是通用的類名——.wp-block-button.wp-element-button——確保了這兩個按鈕的一致樣式。

如果我們編寫 CSS,我們會定位這兩個類。但眾所周知,WordPress 區塊主題有不同的樣式管理方式,那就是通過 theme.json 文件。

那麼,如何在不編寫實際 CSS 的情況下在 theme.json 中定義按鈕樣式呢?讓我們一起完成它。

創建基本樣式

theme.json 是一個結構化的模式集,以屬性:值對的形式編寫。頂級屬性稱為“sections”,我們將使用 styles 部分。這是所有樣式指令所在的位置。

我們將特別關注 styles 中的 elements。此選擇器定位在區塊之間共享的 HTML 元素。這是我們正在使用的基本框架:

// theme.json
{
  "version": 2,
  "styles": {
    "elements": {
      // etc.
    }
  }
}

我們需要做的就是定義一個按鈕元素。

{
  "version": 2,
  "styles": {
    "elements": {
      "button": {
        // etc.
      }
    }
  }
}

該按鈕對應於用於在前端標記按鈕元素的 HTML 元素。這些按鈕包含可能是我們兩種按鈕類型之一的 HTML 標籤:獨立組件(即按鈕區塊)或嵌套在另一個區塊中的組件(例如,文章評論區塊)。

與其必須為每個單獨的區塊設置樣式,不如創建共享樣式。讓我們繼續為主題中的兩種按鈕類型更改默認背景色和文本顏色。其中有一個顏色對象,它反過來支持背景和文本屬性,我們在其中設置所需的值:

{
  "version": 2,
  "styles": {
    "elements": {
      "button": {
        "color": {
          "background": "#17a2b8",
          "text": "#ffffff"
        }
      }
    }
  }
}

這會更改兩種按鈕的顏色。

如果打開 DevTools 並查看 WordPress 為按鈕生成的 CSS,我們會看到 .wp-element-button 類添加了我們在 theme.json 中定義的樣式:

.wp-element-button {
  background-color: #17a2b8;
  color: #ffffff;
}

這些是我們的默認顏色!接下來,我們希望在用戶與按鈕交互時向他們提供視覺反饋。

實現交互式按鈕樣式

由於這是一個關於 CSS 的站點,我敢打賭你們中的許多人已經熟悉鏈接和按鈕的交互狀態。我們可以將鼠標光標懸停在它們上面(:hover),將它們製表到焦點(:focus),點擊它們以使它們處於活動狀態(:active)。甚至還有一個 :visited 狀態,可以向用戶直觀地表明他們之前點擊過這個。

這些是 CSS 偽類,我們使用它們來定位鏈接或按鈕的交互。

在 CSS 中,我們可能會像這樣設置 :hover 狀態的樣式:

<div>
  <a>Button 1</a>
</div>
<p>
  </p>

theme.json 中,我們將使用這些偽類擴展現有的按鈕聲明。

// theme.json
{
  "version": 2,
  "styles": {
    "elements": {
      // etc.
    }
  }
}

請注意其“結構化”特性。我們基本上遵循一個概要:

  • 元素
    • 元素
      • 對象
        • 屬性

我們現在已經完成了按鈕的默認和交互式樣式的完整定義。但是,如果我們想設置嵌套在其他區塊中的某些按鈕的樣式呢?

設置嵌套在各個區塊中的按鈕的樣式

讓我們假設我們希望所有按鈕都具有我們的基本樣式,但有一個例外。我們希望“文章評論表單”區塊的提交按鈕為藍色。我們該如何實現呢?

此區塊比按鈕區塊更複雜,因為它包含更多活動部件:表單、輸入、說明性文本和按鈕。為了定位此區塊中的按鈕,我們必須遵循與按鈕元素相同的 JSON 結構,但應用於映射到 core/post-comments-form 元素的“文章評論表單”區塊:

{
  "version": 2,
  "styles": {
    "elements": {
      "button": {
        // etc.
      }
    }
  }
}

請注意,我們不再在 elements 中工作了。相反,我們在 blocks 內工作,它用於配置實際的區塊。相比之下,按鈕被認為是一個全局元素,因為它們可以嵌套在區塊中,即使它們也可以作為獨立區塊使用。

JSON 結構支持元素內的元素。因此,如果“文章評論表單”區塊中存在按鈕元素,我們可以在 core/post-comments-form 區塊中定位它:

{
  "version": 2,
  "styles": {
    "elements": {
      "button": {
        "color": {
          "background": "#17a2b8",
          "text": "#ffffff"
        }
      }
    }
  }
}

此選擇器意味著我們不僅定位特定區塊——我們還定位包含在該區塊中的特定元素。現在,我們有一組應用於主題中所有按鈕的默認按鈕樣式,以及一組應用於包含在“文章評論表單”區塊中的特定按鈕的樣式。

WordPress 生成的 CSS 因此具有更精確的選擇器:

.wp-element-button {
  background-color: #17a2b8;
  color: #ffffff;
}

如果我們想為“文章評論表單”按鈕定義不同的交互式樣式呢?這與我們為默認樣式所做的方法相同,只是這些樣式是在 core/post-comments-form 區塊內定義的:

<div>
  <a>Button 1</a>
</div>
<p>
  </p>

非區塊中的按鈕怎麼辦?

WordPress 會自動生成並應用正確的類來輸出這些按鈕樣式。但是,如果您使用支持區塊和全站編輯但還包含“經典”PHP 模板的“混合”WordPress 主題怎麼辦?或者,如果您創建了一個自定義區塊,甚至有一個包含按鈕的舊版短代碼怎麼辦?這些都不受 WordPress 樣式引擎處理!

別擔心。在所有這些情況下,您都將在模板、區塊或短代碼標記中添加 .wp-element-button 類。然後將應用 WordPress 生成的樣式。

在某些情況下,您可能無法控制標記。例如,某些區塊插件可能過於武斷,並隨意應用其自己的樣式。這時,您通常可以轉到區塊設置面板中的“高級”選項並在那裡應用該類:

總結

雖然一開始在 theme.json 中編寫“CSS”可能會感覺很彆扭,但我發現它會成為第二天性。與 CSS 一樣,您可以使用正確選擇器廣泛或非常精確地應用有限數量的屬性。

並且不要忘記使用 theme.json 的三個主要優點:

  1. 樣式應用於前端視圖和區塊編輯器中的按鈕。
  2. 您的 CSS 將與未來的 WordPress 更新兼容。
  3. 生成的樣式與區塊主題和經典主題都兼容——無需在單獨的樣式表中復制任何內容。

如果您在項目中使用了 theme.json 樣式,請分享您的經驗和想法。我期待閱讀任何評論和反饋!

以上是WordPress中的造型按鈕阻止主題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

什麼是CSS Flexbox?什麼是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

我們如何使用CSS使網站迅速響應?我們如何使用CSS使網站迅速響應?Apr 30, 2025 pm 03:19 PM

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

CSS盒裝屬性有什麼作用?CSS盒裝屬性有什麼作用?Apr 30, 2025 pm 03:18 PM

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。

我們如何使用CSS動畫?我們如何使用CSS動畫?Apr 30, 2025 pm 03:17 PM

文章討論使用CSS,關鍵屬性並與JavaScript結合創建動畫。主要問題是瀏覽器兼容性。

我們可以使用CSS向我們的項目添加3D轉換嗎?我們可以使用CSS向我們的項目添加3D轉換嗎?Apr 30, 2025 pm 03:16 PM

文章討論了Web項目的3D轉換,關鍵屬性,瀏覽器兼容性和性能注意事項的討論。 (角色計數:159)

我們如何在CSS中添加梯度?我們如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章討論了使用CSS梯度(線性,徑向,重複)來增強網站視覺效果,添加深度,焦點和現代美學。

CSS中的偽元素是什麼?CSS中的偽元素是什麼?Apr 30, 2025 pm 03:14 PM

文章討論了CSS中的偽元素,它們在增強HTML樣式方面的使用以及與偽級的差異。提供實用的例子。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!