内容与属性是内功,样式是衣裳。上一式练的是怎么说,这一式练的是怎么穿—— 加一件、脱一件、随时换,全在鼠标起落之间。
- 会用
addClass/removeClass/toggleClass/hasClass管理类名 - 会用
css()读单个属性、写单个属性、用对象一次写多个 - 知道
toggleClass的第二参数能“强制开或关”,css()也支持回调写法
类名四兄弟
类名是样式的开关——Bootstrap 的样式与本站皮肤,全都挂在 class 上。
所以 jQuery 把“换装”做成了四个方法:
注意 toggleClass 的参数用空格隔开,可以一次切换多个类——空心、实心、朱砂色三个类同起同落。
心形图标来自站内自带的 Bootstrap Icons 图标库(第二回第十四式细讲)。
toggleClass 的第二个参数
toggleClass(类名, 开关) 还接受第二个布尔参数:true 表示“无论现在有没有,都给我加上”,
false 表示“无论现在有没有,都给我去掉”。当样式该由程序状态决定、
而不是由“点一下翻一下”决定时,用它正合适。
交互用无参的 toggleClass(来回翻),程序状态用第二参数(对齐现实)。
练功第一题就是这道题。
css:直接写样式
类名管“成套样式”,css() 管“单个或临时的样式”。它有四种形态:
心法:样式是衣裳,类名是衣钩。把鼠标移进卡片——影子浮起;移出去——归于平静。
鼠标进入加 shadow 类、离开再摘掉——两个 .on() 连写,也是链式调用。
(mouseenter / mouseleave 是下一式的主角,这里先混个脸熟。)
这里先 css('width') 读、算完再 css('width', …) 写。留意两个小细节:
css('width') 读到的是浏览器计算后的像素值(不是我们写的百分比),
所以演示把轨道定成 240px 宽,每步加 60px 恰好是 25%;
另外 Bootstrap 的进度条自带宽度过渡动画,演示里先用 transition: none 把它关掉,
让每一步的读数干净利落——第六式会教它重新动起来。
- 给例 1 加一个“管理员”勾选框:勾上后,点按钮只会强制点亮红心(不能取消);不勾时恢复自由切换。提示:toggleClass 的第二参数。
- 用
css()的对象写法,把进度条一次设置成:宽 100%、朱砂底色、圆角 999px。 - 思考题:
addClass('text-danger')与css('color', 'red')都能让字变红,什么时候用哪个?
参考答案 1
勾选状态来自 prop('checked')(上一式刚练过),“状态对齐现实”正是第二参数的用武之地。
参考答案 2
对象写法适合“一次性交代好几条”,注意 CSS 属性名连字符的换成驼峰(background-color
写成 backgroundColor)。
参考答案 3
类名把“红”的含义收进 CSS 定义——可复用、可被皮肤与主题统一管理,适合“有名分的状态”;
css() 直接把样式钉在元素上,适合“动态数值”(宽度百分比、算出来的颜色)或一次性临时效果。
江湖经验:能说清名字的状态用类,说不清名字的动态数值用 css()。
本式小结
- 类名四兄弟管“成套样式”,
toggleClass第二参数让样式对齐程序状态; css()读一、写一、写多、回调,四种形态按需取用;- 类名与内联样式各司其职:有名分的用类,动态数值用
css()。
下一式,修炼事件——on 与 off、事件委托,让每个新来的元素一出生就会响应。