Một lát sau, Ganesh Dahal đã viết một bài đăng ở đây trên CSS-Tricks trả lời một tweet hỏi về việc thêm bóng hộp CSS trên các khối và phần tử WordPress. Có rất nhiều nội dung tuyệt vời trong đó tận dụng các tính năng mới được cung cấp trong WordPress 6.1 cung cấp các điều khiển để áp dụng bóng đổ cho mọi thứ trực tiếp trong Trình chỉnh sửa khối và Giao diện người dùng Trình chỉnh sửa trang.
Ganesh đã chạm nhẹ vào các yếu tố nút trong bài đăng đó. Tôi muốn chọn nó và đi sâu hơn vào các cách tiếp cận để tạo kiểu cho các nút trong chủ đề khối WordPress. Cụ thể, chúng tôi sẽ mở ra một theme.json
tệp và chia nhỏ các cách tiếp cận khác nhau để tạo kiểu cho các nút trong lược đồ.
Tại sao các nút, bạn yêu cầu? Đó là một câu hỏi hay, vì vậy hãy bắt đầu với điều đó.
Các loại nút khác nhau
Khi chúng ta nói về các nút trong ngữ cảnh của Trình chỉnh sửa khối WordPress, chúng ta phải phân biệt giữa hai loại khác nhau:
- Các khối con bên trong khối Buttons
- Các nút được lồng bên trong khối khác (ví dụ: khối Biểu mẫu nhận xét bài đăng)
Nếu chúng ta thêm cả hai khối này vào một mẫu, chúng sẽ có giao diện giống nhau theo mặc định.
Nhưng đánh dấu là rất khác nhau:
<div class="wp-block-button"> <a class="wp-block-button__link wp-element-button">Button 1</a>
</div>
<p class="form-submit wp-block-button"> <input name="submit" type="submit" id="submit" class="wp-block-button__link wp-element-button" value="Post Comment"> </p>
Như chúng ta có thể thấy, các tên thẻ HTML là khác nhau. Đó là các lớp phổ biến - .wp-block-button
và .wp-element-button
— đảm bảo kiểu dáng nhất quán giữa hai nút.
Nếu chúng tôi đang viết CSS, chúng tôi sẽ nhắm mục tiêu đến hai lớp này. Nhưng như chúng ta đã biết, các chủ đề khối WordPress có cách quản lý kiểu khác nhau và đó là thông qua theme.json
tập tin. Ganesh cũng đề cập đến điều này rất chi tiết, và bạn nên đọc bài báo của anh ấy.
Vì vậy, làm cách nào để xác định kiểu nút trong theme.json
mà không cần viết CSS thực tế? Chúng ta hãy làm cùng nhau.
Tạo các kiểu cơ sở
theme.json
là một tập hợp lược đồ có cấu trúc được viết trong các cặp thuộc tính: giá trị. Các thuộc tính cấp cao nhất được gọi là "các phần" và chúng ta sẽ làm việc với styles
tiết diện. Đây là nơi mà tất cả các hướng dẫn phong cách đi.
Chúng tôi sẽ tập trung cụ thể vào elements
trong styles
. Bộ chọn này nhắm mục tiêu các phần tử HTML được chia sẻ giữa các khối. Đây là shell cơ bản mà chúng ta đang làm việc với:
// theme.json
{ "version": 2, "styles": { "elements": { // etc. } }
}
Vì vậy, những gì chúng ta cần làm là xác định một button
thành phần.
={ "version": 2, "styles": { "elements": { "button": { // etc. } } }
}
Đó button
tương ứng với các phần tử HTML được sử dụng để đánh dấu các phần tử nút ở giao diện người dùng. Các nút này chứa các thẻ HTML có thể là một trong hai loại nút của chúng tôi: một thành phần độc lập (tức là khối Nút) hoặc một thành phần được lồng trong một khối khác (ví dụ: khối Nhận xét Bài đăng).
Thay vì phải tạo kiểu cho từng khối riêng lẻ, chúng tôi tạo các kiểu được chia sẻ. Hãy tiếp tục và thay đổi màu nền và văn bản mặc định cho cả hai loại nút trong chủ đề của chúng ta. Có một color
đối tượng trong đó, lần lượt, hỗ trợ background
và text
các thuộc tính nơi chúng tôi đặt các giá trị mà chúng tôi muốn:
{ "version": 2, "styles": { "elements": { "button": { "color": { "background": "#17a2b8", "text": "#ffffff" } } } }
}
Thao tác này sẽ thay đổi màu của cả hai loại nút:
Nếu mở DevTools và xem CSS mà WordPress tạo cho các nút, chúng tôi sẽ thấy rằng .wp-element-button
lớp thêm các kiểu chúng tôi đã xác định trong theme.json
:
.wp-element-button { background-color: #17a2b8; color: #ffffff;
}
Đó là những màu mặc định của chúng tôi! Tiếp theo, chúng tôi muốn cung cấp cho người dùng phản hồi trực quan khi họ tương tác với nút.
Triển khai các kiểu nút tương tác
Vì đây là một trang web về CSS, tôi cá là nhiều người trong số các bạn đã quen thuộc với trạng thái tương tác của các liên kết và nút. Chúng ta có thể :hover
con trỏ chuột qua chúng, tab chúng vào :focus
, bấm vào chúng để làm cho chúng :active
. Heck, thậm chí còn có một :visited
trạng thái để cung cấp cho người dùng dấu hiệu trực quan rằng họ đã nhấp vào trang này trước đây.
Những người đang có Lớp giả CSS và chúng tôi sử dụng chúng để nhắm mục tiêu các tương tác của liên kết hoặc nút.
Trong CSS, chúng ta có thể tạo kiểu cho một :hover
trạng thái như thế này:
a:hover { /* Styles */
}
In theme.json
, chúng ta sẽ mở rộng phần khai báo nút hiện có với các lớp giả này.
{ "version": 2, "styles": { "elements": { "button": { "color": { "background": "#17a2b8", "text": "#ffffff" } ":hover": { "color": { "background": "#138496" } }, ":focus": { "color": { "background": "#138496" } }, ":active": { "color": { "background": "#138496" } } } } }
}
Lưu ý bản chất "cấu trúc" của điều này. Về cơ bản, chúng tôi đang làm theo một phác thảo:
Bây giờ chúng ta có một định nghĩa đầy đủ về kiểu tương tác và mặc định của nút. Nhưng nếu chúng ta muốn tạo kiểu cho một số nút được lồng trong các khối khác thì sao?
Các nút tạo kiểu được lồng trong các khối riêng lẻ
Hãy tưởng tượng rằng chúng ta muốn tất cả các nút có kiểu cơ bản, với một ngoại lệ. Chúng tôi muốn nút gửi của khối Biểu mẫu đăng nhận xét có màu xanh lam. Làm thế nào chúng ta sẽ đạt được điều đó?
Khối này phức tạp hơn khối Nút vì nó có nhiều phần chuyển động hơn: biểu mẫu, đầu vào, văn bản hướng dẫn và nút. Để nhắm mục tiêu nút trong khối này, chúng tôi phải tuân theo cùng một loại cấu trúc JSON mà chúng tôi đã làm cho button
phần tử, nhưng được áp dụng cho khối Biểu mẫu nhận xét bài đăng, được ánh xạ tới core/post-comments-form
thành phần:
{ "version": 2, "styles": { "elements" { "button": { // Default button styles } } "blocks": { "core/post-comments-form": { // etc. } } }
}
Lưu ý rằng chúng tôi không còn làm việc trong elements
nữa không. Thay vào đó, chúng tôi đang làm việc bên trong blocks
được dành riêng để định cấu hình các khối thực tế. Ngược lại, các nút được coi là một phần tử toàn cầu vì chúng có thể được lồng vào nhau trong các khối, mặc dù chúng cũng có sẵn dưới dạng một khối độc lập.
Cấu trúc JSON hỗ trợ các phần tử bên trong các phần tử. Vì vậy, nếu có một button
phần tử trong khối Biểu mẫu nhận xét bài đăng, chúng tôi có thể nhắm mục tiêu nó trong khối core/post-comments-form
khối:
{ "version": 2, "styles": { "elements" { "button": { // Default button styles } } "blocks": { "core/post-comments-form": { "elements": { "button": { "color": { "background": "#007bff" } } } } } }
}
Bộ chọn này có nghĩa là chúng tôi không chỉ nhắm mục tiêu một khối cụ thể — chúng tôi đang nhắm mục tiêu một phần tử cụ thể có trong khối đó. Bây giờ chúng ta có một tập hợp các kiểu nút mặc định được áp dụng cho tất cả các nút trong chủ đề và một tập hợp các kiểu áp dụng cho các nút cụ thể có trong khối Biểu mẫu nhận xét bài đăng.
Kết quả là CSS được tạo bởi WordPress có bộ chọn chính xác hơn:
.wp-block-post-comments-form .wp-element-button,
.wp-block-post-comments-form .wp-block-button__link { background-color: #007bff;
}
Và nếu chúng ta muốn định nghĩa các phong cách tương tác khác nhau cho nút Post Comment Form thì sao? Nó giống như cách chúng tôi đã làm với các kiểu mặc định, chỉ những kiểu được xác định bên trong core/post-comments-form
khối:
{ "version": 2, "styles": { "elements" { "button": { // Default button styles } } "blocks": { "core/post-comments-form": { "elements": { "button": { "color": { "background": "#007bff" } ":hover": { "color": { "background": "#138496" } }, // etc. } } } } }
}
Còn các nút không ở dạng khối thì sao?
WordPress tự động tạo và áp dụng các lớp phù hợp để xuất các kiểu nút này. Nhưng nếu bạn sử dụng một chủ đề WordPress “lai” hỗ trợ các khối và chỉnh sửa toàn bộ trang web, nhưng cũng chứa các mẫu PHP “cổ điển” thì sao? Hoặc nếu bạn tạo một khối tùy chỉnh hoặc thậm chí có một mã ngắn kế thừa có chứa các nút thì sao? Không ai trong số này được xử lý bởi Công cụ kiểu WordPress!
Đừng lo lắng. Trong tất cả các trường hợp đó, bạn sẽ thêm .wp-element-button
class trong đánh dấu mẫu, khối hoặc mã ngắn. Các kiểu do WordPress tạo ra sau đó sẽ được áp dụng trong các trường hợp đó.
Và có thể có một số tình huống mà bạn không kiểm soát được việc đánh dấu. Ví dụ: một số plugin khối có thể hơi quá cố chấp và tự do áp dụng kiểu dáng của riêng mình. Đó là nơi bạn thường có thể chuyển đến tùy chọn “Nâng cao” trong bảng cài đặt của khối và áp dụng lớp ở đó:
Kết thúc
Trong khi viết “CSS” trong theme.json
lúc đầu có thể cảm thấy khó xử, tôi thấy rằng nó trở thành bản chất thứ hai. Giống như CSS, có một số thuộc tính hạn chế mà bạn có thể áp dụng rộng rãi hoặc rất hẹp bằng cách sử dụng các bộ chọn phù hợp.
Và đừng quên ba ưu điểm chính của việc sử dụng theme.json
:
- Các kiểu được áp dụng cho các nút ở cả giao diện người dùng và trình chỉnh sửa khối.
- CSS của bạn sẽ tương thích với các bản cập nhật WordPress trong tương lai.
- Các kiểu được tạo hoạt động với chủ đề khối và chủ đề cổ điển giống nhau — không cần sao chép bất kỳ thứ gì trong một biểu định kiểu riêng.
Nếu bạn đã sử dụng theme.json
phong cách trong các dự án của bạn, xin vui lòng chia sẻ kinh nghiệm và suy nghĩ của bạn. Tôi mong được đọc bất kỳ ý kiến và phản hồi!
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. Truy cập Tại đây.
- nguồn: https://css-tricks.com/styling-buttons-in-wordpress-block-themes/
- 1
- 10
- 11
- 7
- 9
- 98
- a
- Giới thiệu
- ở trên
- Đạt được
- hoạt động
- Thêm
- tiên tiến
- lợi thế
- trước
- Tất cả
- Đã
- và
- Một
- áp dụng
- Đăng Nhập
- Nộp đơn
- cách tiếp cận
- bài viết
- có sẵn
- trở lại
- lý lịch
- cơ sở
- cơ bản
- Về cơ bản
- bởi vì
- trở thành
- trước
- Đặt cược
- giữa
- Đen
- Chặn
- Khối
- Màu xanh da trời
- Hộp
- Nghỉ giải lao
- một thời gian ngắn
- rộng rãi
- nút
- gọi là
- trường hợp
- nhất định
- thay đổi
- Những thay đổi
- tốt nghiệp lớp XNUMX
- các lớp học
- cổ điển
- màu sắc
- bình luận
- Bình luận
- Chung
- tương thích
- hoàn thành
- phức tạp
- thành phần
- xem xét
- thích hợp
- chứa
- bối cảnh
- Ngược lại
- điều khiển
- điều khiển
- tương ứng
- có thể
- phủ
- nứt
- tạo
- CSS
- khách hàng
- nhiều
- sâu sắc hơn
- Mặc định
- ĐÃ LÀM
- khác nhau
- trực tiếp
- phân biệt
- xuống
- mỗi
- biên tập viên
- hay
- các yếu tố
- đảm bảo
- vv
- Ngay cả
- ví dụ
- ngoại lệ
- hiện tại
- mở rộng
- Kinh nghiệm
- thêm
- quen
- Tính năng
- thông tin phản hồi
- Tập tin
- Tên
- Tập trung
- theo
- tiếp theo
- hình thức
- Forward
- tìm thấy
- tươi
- trước mặt
- Mặt trận cuối cùng
- tương lai
- tạo ra
- tạo
- Cho
- Cho
- Toàn cầu
- Go
- đi
- tốt
- tuyệt vời
- có
- tại đây
- làm nổi bật
- di chuột
- Độ đáng tin của
- HTML
- HTTPS
- in
- Mặt khác
- dấu hiệu
- hệ thống riêng biệt,
- đầu vào
- thay vì
- hướng dẫn
- tương tác
- tương tác
- IT
- json
- Biết
- Legacy
- Cấp
- đòn bẩy
- ánh sáng
- Hạn chế
- liên kết
- ít
- còn
- Xem
- Rất nhiều
- thực hiện
- Chủ yếu
- làm cho
- quản lý
- nhiều
- dấu
- có nghĩa
- Might
- chi tiết
- di chuyển
- tên
- Thiên nhiên
- Cần
- Mới
- Các tính năng mới
- tiếp theo
- con số
- vật
- ONE
- mở
- Khăng khăng
- Tùy chọn
- gọi món
- Nền tảng khác
- đề cương
- riêng
- cặp
- bảng điều khiển
- các bộ phận
- PHP
- chọn
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- xin vui lòng
- Plugin
- Bài đăng
- dự án
- tài sản
- tài sản
- cho
- câu hỏi
- Đọc
- Reading
- đỏ
- Ltd
- kết quả
- tương tự
- Thứ hai
- Phần
- định
- thiết lập
- Chia sẻ
- chia sẻ
- Shell
- vận chuyển
- kể từ khi
- website
- tình huống
- So
- một số
- riêng
- đặc biệt
- độc lập
- Bắt đầu
- Tiểu bang
- Bang
- cấu trúc
- cấu trúc
- phong cách
- trình
- Hỗ trợ
- TAG
- nói
- Mục tiêu
- nhắm mục tiêu
- mục tiêu
- mẫu
- mẫu
- Sản phẩm
- Khối
- chủ đề
- điều
- số ba
- Thông qua
- đến
- bên nhau
- quá
- hàng đầu
- đúng
- XOAY
- kêu riu ríu
- loại
- thường
- ui
- Cập nhật
- sử dụng
- Người sử dụng
- giá trị
- Các giá trị
- khác nhau
- phiên bản
- Xem
- Điều gì
- cái nào
- trong khi
- sẽ
- ở trong
- không có
- WordPress
- Khối WordPress
- WordPress Chủ đề
- Công việc
- đang làm việc
- sẽ
- viết
- viết
- Bạn
- trên màn hình
- zephyrnet