js实现addClass添加样式

JavaScript015

js实现addClass添加样式,第1张

今天和大家分享如何用原生js实现添加样式功能

jQuery里封装的有addClass函数,调用十分方便,那么用JS如何实现呢,下面我们来介绍下。

首先是CSS部分

写一个新的class用来添加

HTML部分

一个没有样式的div

script部分

声明addClass函数,把标签元素和新的class作为参数传进去,进行判断,如果标签元素原来有样式,那么就增加一个样式,如果没有样式,那么就把标签元素的样式设为传进来的样式。

调用函数,这样就实现了样式的添加。

更多前端内容 请 点击关注 点击关注

一组li,这个li不是v-for出来的。是直接写死的。为什么不用v-for,li里面的结构不一样,

给所有的li添加点击事件 tanchu(),给点击的当前li添加一个class;

现在点击之后所有的都会添加这个class;

Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件

以给 body 标签添加 class 为例

通过 jQuery

$( 'body').addClass( 'class1 class2' )

$( 'body' ).removeClass( 'class1 class2' )

支持 classList 的高级浏览器(IE10+,Chrome,Firefox,Safari)

document.body.classList.add( 'class1', 'class2' )

document.body.classList.remove( 'class1', 'class2' )

不支持 classList 的浏览器只能通过 className 来添加

document.body.className += ' cl

[1]直接把样式赋值给className

var odiv=document.getElementById('div1')

odiv.className= div3

//这样我们会得到 class ="div3" 会直接把div2样式给覆盖掉

[2]使用累加赋值给className

var odiv=document.getElementById('div1')

odiv.className+=" "+div3  //样式和样式之间需要空隙 ,所以加个空字符串隔开

//这样可以得到 class="div2 div3" 可以正常增加,但是我们在添加样式的时候我们得考虑下他本身之前有没有同名的样式,如果有我们添加的话就会变成累赘 比如class="div2 div3 div3"

[3]检测样式原先之前是否有相同的样式

var odiv=document.getElementById('div1') 

function hasClass(element,csName){

element.className.match(RegExp('(\\s|^)'+csName+'(\\s|$)'))//使用正则检测是否有相同的样式

}

[4]在[3]的基础上我们就可以进行判断性给元素添加样式了 

var odiv=document.getElementById('div1') 

function hasClass(element,csName){

return  element.className.match(RegExp('(\\s|^)'+csName+'(\\s|$)'))//使用正则检测是否有相同的样式

} 

function addClass(element,csName){

if(!hasClass(element,csName)){

element.className+=' '+csName