jQuery css() 方法

上一节的 CSS 类适合"成组切换样式",而 css() 方法用来直接读写元素的行内样式,适合只改一两个属性的场景。它既能当 getter 读取样式值,也能当 setter 设置样式。

演示 HTML:

<p id="note">样式示例文字</p>
<button id="btn">换色</button>

css() 获取样式值

css(属性名) 返回第一个匹配元素的该样式当前值(含从样式表继承来的):

var color = $("#note").css("color");
console.log(color); // 输出:rgb(0, 0, 0)(浏览器会返回计算后的值)

说明:读到的多半是浏览器计算值,颜色常显示为 rgb() 格式,属正常现象。

css() 设置单个样式

css(属性名, 值) 直接写入行内样式,优先级高于外部样式表:

$("#btn").click(function () {
    $("#note").css("color", "red");
});
// 效果:点击按钮后文字变红

设置的值会写进元素的 style 属性,实时生效。

一次设置多个样式

传入一个"属性名: 值"的对象,可同时设置多项:

$("#note").css({
    "color": "white",
    "background-color": "#333",
    "font-size": "20px",
    "padding": "10px"
});
// 效果:文字变白、背景变深灰、字号 20px、内边距 10px,一次全部生效

属性名既可用引号包住的连字符写法,也可用驼峰写法(如 backgroundColor)。

属性名写法小技巧

两种命名都支持,混用也没问题:

$("#note").css("background-color", "yellow"); // 连字符写法
$("#note").css("backgroundColor", "yellow");  // 驼峰写法,效果相同

涉及透明度的 opacity、数值类的 width/height 都可直接给数字:

$("#note").css("opacity", 0.5).css("width", 300);
// 效果:透明度 50%,宽度 300px(jQuery 会自动补上 px 单位)

链式调用与回调

css() 支持链式调用;设置时也能用函数按原值加工:

$("#note")
    .css("color", "red")
    .css("font-size", function (i, old) {
        return (parseInt(old) + 4) + "px"; // 在原有字号上加 4px
    });
// 效果:先变红,再在原始字号基础上放大 4 像素

小结

css() 一个方法搞定读写:一参读取、两参写入、传对象批量设置。要"成组切换样式"选 addClass/removeClass,要"零散微调属性"则 css() 更直接。

笔记加载中…