• 前端试题-cssText?


    平常我们想更改页面上某个元素的样式时,我们一般会在js里这样写:

    想更新obj的宽时,写上一行:

    obj.style.width = “200px”;

    想改它的定位类型时,再写一行:

    obj.style.position = “absolute”;

    又想改它的边框了,再加一行:

    obj.style.border = “1px solid brown”;

    ……

    改的样式多时,我们就要这样不停的写一行写一行……

    如果我们在网上搜js批量修改样式,会发现有这样一个属性cssText。

    它是一组样式属性及值的文本表示。

    如果在js没有使用cssText前,即使在css样式里已经对obj进行了一些样式设置,但在控制台输出obj.style.cssText时却是空,只有在js使用过cssText对样式进行设置后,obj.style.cssText才能输出cssText设置的值。

    就如我们把上面那一行行代码换成cssText写法,在js里是这样的:

    obj.style.cssText = “200px; position:absolute; border:1px solid brown”;

    此时我们再在控制台输出一下obj.style.cssText,就会出现我们设置的值,但同样这样值里仍然不会出现css样式里设置的值的。

    有一点要注意,就是cssText对之前元素含有的样式会全部替换掉,因此我们用cssText时就应该这样用:

    obj.style.cssText += “200px; position:absolute; border:1px solid brown”;

    还有一个IE6/7/8会出现的问题,如果我们让控制台输出cssText的值会发现,IE6/7/8返回的属性名和值不仅是大写,而且最后一个属性名和值的后面的分号”;”被丢掉了。

    这样使用cssText在拼接字符串时我们要在前面补上一个分号,才不会出各种各样的问题。因此完善一点的cssText写法是这样的:

    obj.style.cssText += “; 200px; position:absolute; border:1px solid brown”;

    到这里cssText已经说完了。

    不过还有一种类似批量修改属性的方法貌似也不错,同样达到同样的效果。

    //使用JSON的方式

    function setStyle(obj, json){
    for (var i in json){
    obj.style[i] = json[i];
    }
    }

    setStyle(obj,{'200px', top:'50px', left:'100px', border:'2px solid brown'});

    setStyle(obj,{height:'50px'});
  • 相关阅读:
    [微软官方]SQLSERVER的兼容级别
    使用 OPENJSON 分析和转换 JSON 数据 (SQL Server)
    WPF 解决TreeViewItem上为IsMouseOver 时 父级Item也会 受影响
    依赖注入
    关于编译告警 C4819 的完整解决方案
    你想知道的 std::vector::push_back 和 std::vector::emplace_back
    如何使用 Dump 文件?
    关于 PDB 文件你需要知道什么?
    图解哈希表及其原理
    C++ 中的虚函数表及虚函数执行原理
  • 原文地址:https://www.cnblogs.com/sunshinegirl-7/p/5202403.html
Copyright © 2020-2023  润新知