DOM的属性与DOM的样式

标题DOM的属性与DOM的样式

DOM的属性
相同的标签属性:
id style className src title checked type placeholder disable value action method

完全没有相同的标签属性:
rowspan colspan

对于部分属性名,标签属性和对象属性是共通的
style 可以设置两种值,一种是字符串,一种是对象

div.class=“abc”//不能使用class
div.className="abc"等同于在标签中添加了class属性
input.value=“aaa”;//不会出现在标签属性,仅在非文本元素出现
input.checked=false;//这个checked和标签的checked有冲突,有冲突时以对象属性为准

标签属性的存储和获取值分别使用setSttribute,getSttribute
标签属性不能有大小写
标签属性的值都必须是字符型
标签属性是属于暴露值的特征
标签属性设置的目的是为了更加轻松地找到标签
还可以用来存储需要观察的值

设置标签属性
div.setAttribute(属性名,属性值)

标签属性的存储和获取值分别使用setAttribute和getAttribute
标签属性不能有大小写,标签属性值都必须是字符型,标签属性是属于暴露值特征
标签属性设置的目的就是为了更加轻松找到标签,还可以用来存储需要观察的值

删除标签属性
div. removeAttribute(name);

document.body:body元素
document.title:获取、设置文档的标题
document.URL:获得完整的URL

dom自定义的对象属性:除自身拥有的外自己定义的
dom自身有的对象属性:自身带有的

DOM的样式

字符串形态的行内样式,使用分号分隔,样式名称与CSS完全相同
div.style=“width:50px;height:50px;background-color:red”;

对象形态的行内样式,需要一个个定义,要求属性值必须是字符串,如果值是0则可以使用数值,会隐式转换为字符
属性名和CSS不相同,命名标准不同,一个是驼峰式命名,一个是-小写
div.style.width=“50px”;
div.style.height=“50px”;
div.style.backgroundColor=“red”;
div.style.position=“absolute”;
div.style.left=0;
div.style.top=0;

即使使用的是字符串行内样式,也会在设置后被添加在对象样式中

div.style
是CSSStyleDeclaration类型的对象
只能获取行内样式的结果,CSS样式设置的样式结果是不可以获取的

getComputedStyle(div).width
获取计算后(渲染后)样式 谷歌和火狐浏览器,已经IE8以上支持
div.currentStyle.width ie8及以下

使用try方法获取渲染后样式
var style;
try{
style=getComputedStyle(div);
}catch(e){
console.log(e);
style=div.currentStyle
}
console.log(style.width);

console.log(document.styleSheets);//获取当前页面中所有的style标签
console.log(document.styleSheets[0]);//第一个style标签
console.log(document.styleSheets[0].cssRules);//第一个style标签中所有选择器CSS列表
console.log(document.styleSheets[0].cssRules[0]);//第一个style标签中选择器CSS列表第一个选择器CSS
console.log(document.styleSheets[0].cssRules[0].style);//第一个style标签中选择器CSS列表第一个选择器CSS的样式
console.log(document.styleSheets[0].cssRules[0].selectorText);//第一个style标签中选择器CSS列表第一个选择器CSS的名字
document.styleSheets[0].cssRules[0].style.width=“100px”;可以修改样式

var styleSheet=document.styleSheets[0];
styleSheet.insertRule(“选择器 { 样式内容 }”,插入在第几个选择器索引)
styleSheet.insertRule(".div2 {width:100px;height:100px;background-color:blue;}",styleSheet.cssRules.length)//
document.styleSheets[0].addRule();//添加选择器样式早期浏览器不支持
styleSheet.addRule(选择器,“CSS样式”,插入在第几个选择器索引)

添加CSS案例

function addCSS(selector, style, title) {
   // 如果没有设置title参数,默认设置为xietian
   if (title === undefined) title = "xietian";
   // 将当前文档所有的style标签列表转换为数组
   var arr = Array.from(document.styleSheets);
   // 根据归并,判断是否有style的title是我们给入的参数,如果有就这个style标签对应的styleSheet返回
   // 如果没有找到返回null
   var styleSheet = arr.reduce(function (value, item) {
          if (item.title === title) return item;
          return value;
   }, null);
   // 如果没有找到
   if (!styleSheet) {
   // 创建一个style,并且给他设置title为给入的title,放入到head中
   var s = document.createElement("style");
   s.title = title;
   document.head.appendChild(s);
   // 获取文档styleSheets列表的最后一个,最后一个就是新增的内容
   styleSheet = document.styleSheets[document.styleSheets.length - 1];
   }
   var str = "";
   // 新建字符串,并且将对象遍历,把每个样式转换为字符形式累加进入
   for (var prop in style) {
   // 样式名需要将大写字母转换为-小写字母,样式值如果是数值,加上px
     str +=
     prop.replace(/[A-Z]/g, function (value) {
         return "-" + value.toLowerCase();
     }) +":" + (typeof style[prop] === "number"? style[prop] + "px" : style[prop]) +";";
}
     // 判断是否支持方法addRule,如果支持,直接添加
if (styleSheet.addRule) {
          styleSheet.addRule(selector, str, styleSheet.cssRules.length);
   } else {
          styleSheet.insertRule(selector + "{ " + str + " }",styleSheet.cssRules.length);
        }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值