CSSStyleDeclaration: phương thức setProperty()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức giao diện CSSStyleDeclaration.setProperty() thiết lập một giá trị mới cho một thuộc tính trên một đối tượng khai báo kiểu CSS.
Cú pháp
setProperty(propertyName, value)
setProperty(propertyName, value, priority)
Tham số
propertyName-
Một chuỗi đại diện cho tên thuộc tính CSS (dạng hyphen case) cần sửa đổi.
valueOptional-
Một chuỗi chứa giá trị thuộc tính mới. Nếu không được chỉ định, được xem như chuỗi rỗng. Giá trị
nullđược xem tương đương với chuỗi rỗng ("").Note:
valuekhông được chứa"!important", tham số đó nên được thiết lập bằng tham sốpriority. priorityOptional-
Một chuỗi cho phép thiết lập độ ưu tiên CSS thành important. Chỉ chấp nhận các giá trị sau:
"important"(không phân biệt hoa thường) để thiết lập thuộc tính là!important;"",undefined, hoặcnullđể xóa cờ!importantnếu có.
Bất kỳ giá trị nào khác khiến phương thức trả về sớm và không có thay đổi nào xảy ra (trừ khi
valuerỗng, trong trường hợp đó thuộc tính bị xóa bất kể giá trịpriority). Ví dụ,falsekhông phải là giá trị priority hợp lệ.
Giá trị trả về
Không có (undefined).
Ngoại lệ
NoModificationAllowedErrorDOMException-
Được ném nếu thuộc tính hoặc khối khai báo là chỉ đọc.
Cách sử dụng thay thế
Nếu có thể bỏ qua priority, JavaScript có cú pháp đơn giản hơn để thiết lập một thuộc tính CSS trên một đối tượng khai báo kiểu:
style.cssPropertyName = "value";
Ví dụ
>Thiết lập các thuộc tính box
Trong ví dụ này, chúng ta có ba nút, có thể được nhấn để thay đổi động đường viền, màu nền và màu văn bản của đoạn box thành các giá trị ngẫu nhiên (xem ví dụ trực tiếp ở cuối phần này).
Cơ sở hạ tầng mẫu trực tiếp của MDN kết hợp tất cả các khối CSS trong ví dụ thành một kiểu nội tuyến duy nhất có id css-output, vì vậy trước tiên chúng ta sử dụng document.getElementById() để tìm bảng kiểu đó.
Sau đó, chúng ta lặp qua các quy tắc khác nhau chứa trong bảng kiểu trong mảng tìm thấy tại stylesheet.cssRules.
Đối với mỗi quy tắc, chúng ta kiểm tra xem CSSStyleRule.selectorText có bằng bộ chọn .box p hay không, đây là bộ chọn chúng ta muốn.
Nếu có, chúng ta lưu tham chiếu đến đối tượng CSSStyleRule này trong một biến.
Sau đó, chúng ta sử dụng ba hàm để tạo các giá trị ngẫu nhiên cho các thuộc tính liên quan và cập nhật quy tắc với các giá trị này.
Trong mỗi trường hợp, điều này được thực hiện bằng phương thức setProperty(), ví dụ: boxParaRule.style.setProperty('border', newBorder);.
HTML
<div class="controls">
<button class="border">Border</button>
<button class="bgcolor">Background</button>
<button class="color">Text</button>
</div>
<div class="box">
<p>Box</p>
</div>
CSS
html {
background: orange;
font-family: sans-serif;
height: 100%;
}
body {
height: inherit;
width: 80%;
min-width: 500px;
max-width: 1000px;
margin: 0 auto;
}
.controls {
display: flex;
justify-content: space-around;
align-items: center;
}
div button {
flex: 1;
margin: 20px;
height: 30px;
line-height: 30px;
}
.box {
display: flex;
justify-content: center;
align-items: center;
height: calc(100% - 70px);
}
.box p {
width: 50%;
text-align: center;
font-weight: bold;
font-size: 40px;
height: 150px;
line-height: 150px;
background: red;
border: 5px solid purple;
color: white;
transition: all 1s;
}
JavaScript
const borderBtn = document.querySelector(".border");
const bgColorBtn = document.querySelector(".bgcolor");
const colorBtn = document.querySelector(".color");
const box = document.querySelector(".box");
function random(min, max) {
const num = Math.floor(Math.random() * (max - min)) + min;
return num;
}
function randomColor() {
return `rgb(${random(0, 255)} ${random(0, 255)} ${random(0, 255)})`;
}
// Tìm bảng kiểu nội tuyến được tạo cho mẫu trực tiếp MDN
const stylesheet = document.getElementById("css-output").sheet;
const boxParaRule = [...stylesheet.cssRules].find(
(r) => r.selectorText === ".box p",
);
function setRandomBorder() {
const newBorder = `${random(1, 50)}px solid ${randomColor()}`;
boxParaRule.style.setProperty("border", newBorder);
}
function setRandomBgColor() {
const newBgColor = randomColor();
boxParaRule.style.setProperty("background-color", newBgColor);
}
function setRandomColor() {
const newColor = randomColor();
boxParaRule.style.setProperty("color", newColor);
}
borderBtn.addEventListener("click", setRandomBorder);
bgColorBtn.addEventListener("click", setRandomBgColor);
colorBtn.addEventListener("click", setRandomColor);
Kết quả
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| CSS Object Model (CSSOM)> # dom-cssstyledeclaration-setproperty> |