+5

Tìm hiểu và vận dụng pseudo (pseudo-element) trong css - phần 2

Chào các bạn!

Trong bài trước mình đã giới thiệu với các bạn về định nghĩa, cách sử dụng cũng như 1 vài loại pseudo-classes hay dùng nhất. Bài này mình sẽ giới thiệu về pseudo-elements trong css.

1. Định nghĩa và cấu trúc của pseudo-element

Pseudo-element trong CSS được dùng để định dạng một phần đặc biệt của phần tử. Chẳng hạn bạn muốn sử dụng chúng để:

  • Định dạng chữ hoặc dòng đầu tiên của phần tử
  • Chèn nội dung vào trước hoặc sau nội dung của phần tử

Cấu trúc viết thì không khác so với pseudo-classes lắm.

selector::pseudo-element {
    property:value;
}

Tuy nhiên, các bạn phải chú 1 vấn đề sau đây:

  • Đối với pseudo-class thì khi gọi là chỉ cần viết 1 dấu 2 chấm. Chẳng hạn :hover, :focus,...
  • Còn đối với pseudo-element thì phải viết 2 dấu 2 chấm. Ví dụ ::after, ::before,...

Nếu như bạn viết 1 dấu 2 chấm đằng trước pseudo-element thì css vẫn có thể đọc được tuy nhiên khi bạn cài style-lint, scss-lint hay check validator w3c thì chắc chắn sẽ bị báo lỗi. Vì vậy chúng ta nên thống nhất cách viết ::after ngay từ đầu cho quen.

Trong bài này mình sẽ chỉ giới thiệu tới các bạn những pseudo-element hay sử dụng sau đây:

Selector Ví dụ Giải thích
::after p::after Chèn thêm 1 nội dung nào đó vào đằng sau nội dung của p element
::before p::before Chèn thêm 1 nội dung nào đó vào đằng trước nội dung của p element
::first-letter p::first-letter Lựa chọn chữ cái đầu tiên của p element
::first-line p::first-line Lựa chọn dòng đầu tiên của p element
::selection p::selection Dùng để thiết lập style CSS cho 1 vùng văn bản được chọn bởi người dùng (bằng thao tác như double-click vào nội dung hay giữ chuột trái để chọn nội dung)
::placeholder input::placeholder Dùng để định dạng cho những text placeholder của input hoặc textarea element

2. Cách sử dụng các pseudo-elements

2.1. ::after

::after được dùng để chèn một nội dung nào đó vào đằng sau nội dung của 1 element bất kỳ.

blockquote::after {
    content: '>';
}

Đối với ::after, các bạn có thể hiểu nó như 1 element giả lập nào đó của 1 element chính thống. Tức là nó có thể nhận tất cả các thuộc tính css và bạn có thể style cho nó như 1 element. Có thể xét border, background, position, z-index, width, height,...

2.2. ::before

Tương tự như ::after, ::before được dùng để chèn một nội dung nào đó vào đằng trước nội dung của 1 element bất kỳ.

blockquote::before {
    content: '<';
}

Tất nhiên, không khác so với ::after, ::before cũng được xem như 1 element giả lập và có thể áp dụng các thuộc tính css lên nó như ::after. Đây chính là điểm khác biệt của ::after::before với những pseudo-elements còn lại.

Note:

Việc sử dụng ::after::before thực sự rất nhiều. Các bạn có thể tham khảo 1 số bài viết trước đây của mình để style cho các element khác hoặc tạo các hình học bằng cách sử dụng ::after::before nhé.

https://viblo.asia/p/bai-10-css-cho-mot-so-tag-dac-biet-nhu-checkbox-radio-button-va-seclect-box-6J3ZgE1q5mB

https://viblo.asia/p/bai-24-tao-cac-khoi-hinh-hoc-bang-css3-phan-1-1Je5ExEYlnL

https://viblo.asia/p/bai-25-tao-cac-khoi-hinh-hoc-bang-css3-phan-2-Eb85opzjK2G

https://viblo.asia/p/bai-26-tao-cac-khoi-hinh-hoc-bang-css3-phan-3-OeVKBDYYlkW

Ngoài ra còn các bài về hover đẹp với CSS3. Đặc biệt ::after::before là mấu chốt trong việc sử dụng icon-font đó.

2.3. ::first-line

::first-line được dùng để style cho dòng đầu tiên trong nội dung của 1 element.

p::first-line {
    background: yellow;
    font-weight: bold;
}

::first-line có thể áp dụng được những thuộc tính css sau:

  • Các thuộc tính về font
  • Các thuộc tính về color
  • Các thuộc tính về background
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

Lưu ý ::first-line chỉ áp dụng cho các block element như div, p, h1 - h6,...

2.4. ::first-letter

::first-letter được dùng để style cho ký tự đầu tiên trong nội dung của 1 element.

p::first-letter {
    color: red;
    font-weight: bold;
}

::first-letter có thể áp dụng được những thuộc tính css sau:

  • Các thuộc tính font
  • Các thuộc tính color
  • Các thuộc tính background
  • Các thuộc tính margin
  • Các thuộc tính padding
  • Các thuộc tính border
  • text-decoration
  • vertical-align (chỉ khi "float" là "none")
  • text-transform
  • line-height
  • float
  • clear

Cũng như ::first-line, ::first-letter chỉ áp dụng cho các block element như div, p, h1 - h6,...

2.5. ::selection

::selection dùng để thiết lập style CSS cho nội dung phần tử được chọn bởi người dùng (bằng thao tác như double-click vào nội dung hay giữ chuột trái để chọn nội dung).

p::selection {
    color: red;
    background: yellow;
}

::selection có thể áp dụng được những thuộc tính css sau:

  • Các thuộc tính color
  • Các thuộc tính background
  • Cursor
  • Outline.

Lưu ý ::selection không được hỗ trợ cho trình duyệt Internet Explorer 8 và phiên bản trước đó. Firefox hỗ trợ pseudo-element thay thế đó là ::-moz-selection

2.6. ::placeholder

::placeholder là 1 pseudo-element đặc biệt chỉ áp dụng được cho inputtextarea element. Pseudo-element này được dùng để style cho những text placehoder.

input::placeholder {
    color: blue;
    font-size: 1.5em;
}

Như vậy, trong bài này mình đã giới thiệu về định nghĩa cũng như cách sử dụng của những pseudo-elements thông dụng nhất. Tất nhiên, các bạn hoàn toàn có thể kết hợp nhiều pseudo-element cho cùng 1 element. Chẳng hạn, bạn tạo 1 hình bình hành thì có thể sử dụng ::after::before thay vì sử dụng ảnh. Còn tạo thế nào thì các bạn có thể tham khảo về 1 số bài viết mình đã đưa bên trên nhé.

Chúc các bạn thành công!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí