zoukankan      html  css  js  c++  java
  • JS之ClassName属性使用

    一、style与className属性的对比

    在前面的style属性学习中,知道了通过style属性可以控制元素的样式,从而实现了行为层通过DOM的style属性去干预变现层显示的目地,但是这种就是不好的,而且为了实现通过DOM脚本设置的样式,你就不得不花时间去研究JavaScript函数,去寻找对应修改和设置样式的有关语句。而且每添加或修改js脚本的代码量远大于我们修改css样式的代码量。

    所以与其使用DOM直接改变某个元素的样式,不如通过JavaScript代码去更新这个元素的class属性。

    下面通过代码来比较这两种方式的差别:

    复制代码
    function setStyleHeaderSiblings() {
        if (!checkCompatibility()) return; //check compatibility
        var heads = document.getElementsByTagName("h1");
        var ele;  //defines a element for receive;
        for (var i = 0; i < heads.length; i++) {
            ele = getNextElement(heads[i].nextSibling);
            ele.style.fontWeight = "bold";
            ele.style.fontSize = "1.2em";
        }
    }
    复制代码
    复制代码
    function setStyleHeaderSiblings() {
        if (!checkCompatibility()) return; //check compatibility
        var heads = document.getElementsByTagName("h1");
        var ele;  //defines a element for receive;
        for (var i = 0; i < heads.length; i++) {
            ele = getNextElement(heads[i].nextSibling);
            ele.className="change";
        }
    css样式表
    .change{
    font-weight:bold;
    font-size:1.2em;
    }
     
    复制代码

    假设我们这个需要给这个效果加上一个

    上面这种做法需要在js里面加如下代码:

    ele.style.backgroundColor="blue";

    而第二种做法则只要在样式表里加一个样式就可以实现,而且实现了样式与行为的分离,还减少了我们的代码量,所以在后期需求不确定的情况下,我建议第二种方法来动态的修改元素的样式。

    二、追加class类名

    但是通过className设置元素的样式也有一个缺陷,那就是通过className设置元素的class属性时将替换(而不是追加)该元素原有的class属性,在实际开发中往往很多时候我们需要追加class;

    所以根据这个需要我们可以自定义一个方法来实现追加className的效果代码如下:

    复制代码
    function addClass(element,value) {
        if (!element.className) {
            element.className = value;
        } else {
            newClassName = element.className;
            newClassName += " "; //这句代码追加的类名分开
            newClassName += value;
            element.className = newClassName;
        }
    }
    复制代码
  • 相关阅读:
    robotframework学习笔记
    软件工程结对编程第二次作业
    软件工程结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    coding地址:https://dev.tencent.com/u/zhoucysw
    软件工程(2018)结对编程第二次作业
    软件工程(2019)结对编程第一次作业
    软件工程(2019)第三次个人作业
  • 原文地址:https://www.cnblogs.com/Joe-and-Joan/p/10036961.html
Copyright © 2011-2022 走看看