類名操作 className & classList

類名操作

在前端中,我們常常需要進行類名操作,大致有以下4種

  • Has(el, class)
    檢查el的類中是否包含class類名
  • Add(el, class)
    向el類中添加class類名
  • Remove(el, class)
    從el類中移除class類名
  • Toggle(el, class)
    如果el中包含class,就移除它,反之,添加它

類名操作的意義

通過類名操作,我們可以改變元素的類名,進而改變元素的行為和渲染方式。

類名操作的例子

編寫一個modal插件時,.open類的css樣式中包含opacity: 1屬性,而.close中包含opacity:0。我們可以通過增添或者移除(toggle)div.modal元素的open和close類名,來控制div.modal元素的可見性。
增減類名同樣可以觸發(fā)transition事件,編寫.close.open中的transition屬性可以達到定制動畫效果。

類名操作相關(guān)的webAPI

classList

API

  • add
  • remove
  • item
  • toggle
  • contains

classList包含了完整的類名操作函數(shù),但不一定兼容所有瀏覽器。

className

API

返回class屬性的值

使用正則表達式編寫完整API

inspired by bonzo
首先定義尋找類-正則表達式

var classReg = function(className){
  return new RegExp("(^|\\s+)"+className+"(\\s+|$)");
}
  • has
var has = function(element, className) {
  return classReg(className).test(element.className);
}
  • add
var add = function(element, className){
    if( !has(element, className) ) {
      element.className += ' '+className;
    }
}
  • remove
var remove = function(element, className) {
    element.className = element.className.replace(classReg(className), ' ');
}
  • toggle
var toggle = function(element, className) {
    var fn = has(element,className)?remove:add;
    fn(element, className);
}

通過庫或者自行實現(xiàn)API,我們可以使用className來進行類名操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文 https://www.kancloud.cn/dennis/tgjavascript/241852 一、節(jié)...
    LuckyS007閱讀 894評論 0 0
  • 目錄 元素查找 class操作 節(jié)點操作 屬性操作 內(nèi)容操作 css操作 位置大小 事件 DOM加載完畢 綁定上下...
    北瀟閱讀 370評論 0 0
  • 前端發(fā)展很快,現(xiàn)代瀏覽器原生 API 已經(jīng)足夠好用。我們并不需要為了操作 DOM、Event 等再學(xué)習(xí)一下 jQu...
    codinger閱讀 748評論 0 3
  • 陶行知真的是一位偉大的教育家。 學(xué)高為師,身正為范。 教師這一職業(yè)不應(yīng)該是穩(wěn)定飯碗的象征。 更應(yīng)該是一種教書育人的...
    昕彤47閱讀 1,173評論 0 1
  • 注:本文作者 Heidi Roizen 系 DFJ Venture 合伙人,曾任蘋果公司主管開發(fā)者關(guān)系的高級副總裁...
    夏大王2019閱讀 282評論 0 0

友情鏈接更多精彩內(nèi)容