dom元素样式
控制dom元素的类样式
- className: 获取或设置元素的类名
- classList: dom4的新属性,是一个用于控制元素类名的对象
- add:用于添加一个类名
- remove:用于移除一个类名
- contains:用于判断一个类名是否存在
- toggle:用于添加/移除一个类名
js
dom.classList.to("red"); //有的话就移除red 没有的话就添加red获取样式
CSS的短横线命名,需要转换为小驼峰命名
- dom.style:得到行内样式对象
- window.getComputedStyle(dom元素):得到某个元素最终计算的样式
- 可以有第二个参数,用于得到某个元素的某个伪元素样式
获取尽量获取到准确的书属性,避免获取速写属性
- 可以有第二个参数,用于得到某个元素的某个伪元素样式
js
getComputedStyle(dom, "before"); //得到该元素的为元素的样式设置样式
dom.style.样式名 = 值
设置的是行内样式。
练习
js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
body {
margin: 0;
}
header {
width: 100%;
background: #333;
color: #eee;
}
nav {
overflow: hidden;
}
span {
float: left;
line-height: 50px;
margin: 0 15px;
cursor: pointer;
}
span.active {
color: gold;
}
</style>
</head>
<body>
<header>
<nav>
<span>Lorem.</span>
<span>Explicabo.</span>
<span>Harum?</span>
<span>Delectus?</span>
<span>Commodi.</span>
<span>Ullam!</span>
<span>Tempora!</span>
</nav>
</header>
<script>
var spans = document.getElementsByTagName("span");
Array.from(spans).forEach(function(sp) {
sp.onclick = function(){
//去掉之前的所有具有active的类样式
var span = document.querySelector("span.active");
if(span){
span.classList.remove("active");
}
this.classList.add("active");
}
})
</script>
</body>
</html>js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.container {
width: 200px;
height: 200px;
border: 2px solid;
cursor: pointer;
}
</style>
</head>
<body>
<p>
点击div,设置div的背景色为随机颜色
</p>
<div class="container">
</div>
<script src="../../common/BetterFunction.js"></script>
<script>
var div = document.querySelector(".container");
div.onclick = function() {
// 0 - 255
this.style.background = `rgb(${MyFunctions.getRandom(0, 255)},${MyFunctions.getRandom(0, 255)},${MyFunctions.getRandom(0, 255)})`;
}
</script>
</body>
</html>js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.container {
overflow: hidden;
border: 2px solid;
width: 200px;
height: 200px;
position: relative;
line-height: 200px;
text-align: center;
font-size: 100px;
font-family: 宋体;
}
</style>
</head>
<body>
<div class="container">
袁
</div>
<p>
<button id="btnbig">放大</button>
<button id="btnsmall">缩小</button>
</p>
<script>
var btnBig = document.getElementById("btnbig"),
btnSmall = document.getElementById("btnsmall"),
div = document.querySelector(".container");
btnBig.onclick = function() {
//得到当前的字体大小
var size = parseInt(getComputedStyle(div).fontSize);
div.style.fontSize = size + 10 + "px";
}
btnSmall.onclick = function() {
//得到当前的字体大小
var size = parseInt(getComputedStyle(div).fontSize);
var result = size - 10;
if (result < 10) {
result = 10;
}
div.style.fontSize = result + "px";
}
</script>
</body>
</html>js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p>
利用pokers文件夹中的图片,用纯JS生成图片依次排列到页面上。不允许使用样式表
</p>
<div id="divcontainer">
</div>
<script>
var div = document.getElementById("divcontainer");
var imgs = [];
for (var i = 1; i <= 13; i++) {
for (var j = 1; j <= 4; j++) {
imgs.push(createImg(`pokers/${i}_${j}.jpg`));
}
}
imgs.push(createImg(`pokers/14_1.jpg`));
imgs.push(createImg(`pokers/15_1.jpg`));
imgs.sort(function() {
return Math.random() - 0.5;
});
imgs.forEach(function(img){
div.appendChild(img);
});
function createImg(src) {
var img = document.createElement("img");
img.src = src;
img.style.margin = "30px";
return img;
}
</script>
</body>
</html>