CSSContainerRule: thuộc tính containerQuery

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2023.

Thuộc tính chỉ đọc containerQuery của giao diện CSSContainerRule trả về một chuỗi biểu thị các điều kiện container được đánh giá khi container thay đổi kích thước, nhằm xác định xem các kiểu trong @container liên kết có được áp dụng hay không.

Ví dụ, giá trị của containerQuery cho @container bên dưới là (width >= 700px):

css
@container sidebar (width >= 700px) {
  .card {
    font-size: 2em;
  }
}

Giá trị

Một chuỗi chứa truy vấn container.

Lưu ý rằng giá trị có thể không giống hệt chuỗi ban đầu, vì có thể xảy ra các chuẩn hóa như loại bỏ khoảng trắng.

Ví dụ

Ví dụ dưới đây định nghĩa một quy tắc @container không tên, và hiển thị các thuộc tính của CSSContainerRule liên kết. CSS tương tự như trong ví dụ @container Thiết lập kiểu dựa trên kích thước container.

Đầu tiên chúng ta định nghĩa HTML cho một card (<div>) được chứa trong một post.

html
<div class="post">
  <div class="card">
    <h2>Card title</h2>
    <p>Card content</p>
  </div>
</div>

CSS cho phần tử container chỉ định loại container. @container sau đó áp dụng chiều rộng, cỡ chữ và màu nền mới cho phần tử được chứa "card" nếu chiều rộng nhỏ hơn 650px.

html
<style id="example-styles">
  /* A container context based on inline size */
  .post {
    container-type: inline-size;
  }

  /* Apply styles if the container is narrower than 650px */
  @container (width < 650px) {
    .card {
      width: 50%;
      background-color: gray;
      font-size: 1em;
    }
  }
</style>

Code dưới đây lấy HTMLStyleElement liên kết với ví dụ bằng id của nó, sau đó sử dụng thuộc tính sheet để lấy StyleSheet. Từ StyleSheet, chúng ta lấy tập hợp cssRules được thêm vào sheet. Vì chúng ta đã thêm @container làm quy tắc thứ hai ở trên, chúng ta có thể truy cập CSSContainerRule liên kết bằng mục nhập thứ hai (chỉ số "1"), trong cssRules. Cuối cùng, chúng ta ghi lại các thuộc tính tên container và truy vấn.

js
const exampleStylesheet = document.getElementById("example-styles").sheet;
const exampleRules = exampleStylesheet.cssRules;
const containerRule = exampleRules[1]; // a CSSContainerRule representing the container rule.
log(`CSSContainerRule.containerQuery: "${containerRule.containerQuery}"`);

Kết quả ví dụ được hiển thị bên dưới. Phần log liệt kê chuỗi truy vấn. Card sẽ thay đổi nền khi chiều rộng của trang chuyển qua 650px.

Thông số kỹ thuật

Specification
CSS Conditional Rules Module Level 5
# dom-csscontainerrule-containerquery

Tương thích trình duyệt

Xem thêm