HTML分为通用属性、自有属性和自定义属性
有一些HTML标准属性不是通用的而是某一些标签特有的
HTML规范也允许我们自定义一些属性。(最新规范中,推荐以data-开头)
自定义属性的设置
element.属性 获取属性值
注意:
class是保留关键字,但是在element.getAttribute(‘属性’); 方法中可以直接使用;element.属性 写法则需要使用className代替
11111
const target = document.getElementsByClassName('test')[0];
console.log(target.title);
console.log(target.className);
console.log(target.id);
console.log(target.getAttribute('class'));
element.属性 = ‘值’ 设置内置属性值
11111
const target = document.getElementsByClassName('test')[0];
console.log(target.id); // test
target.id = 'test2';
console.log(target.id); // test2
注意:
直接设置自定义属性可以设置成功并取到相应的值,但是没有设置到标签内,不会显示在标签里
const target = document.getElementsByClassName('test')[0];
console.log(target.name); // undefined
target.name = 'test';
console.log(target.name); // 'test'
const target = document.getElementsByClassName('test')[0];
console.log(target.gettAttribute('data-name')); // undefined
target.setAttribute('data-name', 'test');
console.log(target.getAttribute('data-name')); // 'test'
element.removeAttribute(“属性名”) 移除指定的属性
const target = document.getElementsByClassName('test')[0];
target.removeAttribute('data-name');
element.hasAttribute(“属性名”) 判断元素里面有没有对应的属性名
结果会返回布尔类型的值,true或false
const target = document.getElementsByClassName('test')[0];
target.setAttribute('data-name', 'test');
console.log(target.hasAttribute('data-name')); // true
target.removeAttribute('data-name');
console.log(target.hasAttribute('data-name')); // false
自定义属性的目的:是为了保存和使用数据,有些数据可以保存到页面中而不用保存到数据库中
自定义属性获取是通过 getAttribute(‘属性’) 方法获取
但是有些自定义属性很容易引起歧义,不容易判断到底是元素内部的属性还是自定义属性
H5中新增了标准
H5中规定自定义属性需要以 data- 开头做属性名并且赋值
或者
element.setAttribute('data-name','test');
兼容性较好的获取方法
getAttribute(‘属性’)
H5新增方法(从IE11才开始支持,兼容性较差)
element.dataset.属性;
element.dataset[ ‘属性’ ];
dataset 可以理解成 集合 的意思,获得所有以 data-开头的 自定义属性,data-开头的自定义属性的集合
test
const target = document.getElementsByClassName('test')[0];
console.log(target.dataset);
console.log(target.dataset.name);
console.log(target.dataset.age);
现在除了在sass、less等预处理工具来实现变量,还可以直接在CSS中使用变量, 以后就可以直接通过js控制css样式
–*来声明变量名,var(–*)来使用
:root{
--bg-color: red;
background-color: var(--bg-color);
}
:root{
--bg-color: red;
}
// 获取
getComputedStyle(document.documentElement).getPropertyValue('--bg-color');
// 赋值
document.documentElement.style.setProperty('--bg-color', 'blue')
test
.colorRed {
color: red!important;
}
target.style.setProperty('font-size', '20px');
target.setAttribute('class', 'test colorRed');
const style = getComputedStyle(target);
console.log(target.style.color); // yellow
console.log(style.color); // red
CSS 变量教程-阮一峰