7.6 Styling Elements¶
In this lesson; we will be using the following HTML document:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>The magical boxes</title>
<style>
#container{
display: flex;
justify-content: center;
}
.box{
width: 10rem;
height: 10rem;
margin: 1rem;
}
#box-1{
background: lightblue;
}
#box-2{
background: Olive;
}
#box-3{
background: tomato;
}
#box-4{
background: DarkSlateGray;
}
#box-5{
background: SaddleBrown;
}
#box-6{
background: Yellow;
}
.border-bold{
border: 0.8rem solid #000;
}
.border-light{
border: 0.1rem solid #000;
}
.hide{
display: none;
}
</style>
</head>
<body>
<header>
<h1>Welcome to our magical boxes website</h1>
</header>
<section id="container">
<div class="box" id="box-1"></div>
<div class="box" id="box-2"></div>
<div class="box" id="box-3"></div>
<div class="box" id="box-4"></div>
<div class="box" id="box-5"></div>
<div class="box" id="box-6"></div>
</section>
<script src="script.js"></script>
</body>
</html>
Style Property¶
The Style Object
The style
object represents an element style statement.
Task 1: Change the background color of the first box to green
. Hint: use el.style.backgroundColor = "green"
.
let el = document.querySelector("#container > .box:first-child");
el.style.backgroundColor = "green";
Task 2: Change the background color of all the even boxes to red
.
let els = document.querySelectorAll("#container > .box:nth-child(even)");
for(let el of els){
el.style.backgroundColor = "red";
}
Task 3: Change the width of the third box to 30rem
. Hint: use el.style.width = "30rem"
.
let el = document.querySelector("#container > .box:nth-child(3)");
el.style.width = "30rem";
Task 4: Change the height of the fourth box to 20rem
. Hint: use el.style.height="20rem"
.
let el = document.querySelector("#container > .box:nth-child(4)");
el.style.height = "20rem";
Task 5: Change the border to all boxes to 0.2rem solid #000
. Hint: use el.style.border = "0.2rem solid #000"
.
let els = document.querySelectorAll("#container > .box");
for(let el of els){
el.style.border = "0.2rem solid #000";
}
Task 6: Add the text I am in box 5
to the fifth box, and change the font color to white
. Hint: use el.style.color = "#fff"
.
let el = document.querySelector("#container > .box:nth-child(5)");
let text = document.createTextNode("I am in box 5");
el.appendChild(text);
el.style.color = "#fff";
Task 7: Refer to task 6; make the text font 2rem
. Hint: use el.style.fontSize = "2rem"
.
let el = document.querySelector("#container > .box:nth-child(5)");
let text = document.createTextNode("I am in box 5");
el.appendChild(text);
el.style.color = "#fff";
el.style.fontSize = "2rem";
Task 8: Refer to task 7; add padding to the el
. Hint: use el.style.padding = "4rem"
let el = document.querySelector("#container > .box:nth-child(5)");
let text = document.createTextNode("I am in box 5");
el.appendChild(text);
el.style.color = "#fff";
el.style.fontSize = "2rem";
el.style.padding = "4rem";
Task 9: Change the margin
of all the boxes to 0.1rem 0.2rem
.
let els = document.querySelectorAll("#container > .box");
for(let el of els){
el.style.margin = "0.1rem 0.2rem";
}
Check the full list of the properties you can use with the style
object on the W3schools.com website
Task 10: Apply some style to all the boxes using el.style.cssText = ""
let els = document.querySelectorAll("#container > .box");
for(let el of els){
el.style.cssText = "border: 2rem dotted red; background-color: olive; margin-left: 0.1rem";
}
Using cssText
to style an element leads to erasing all the inline CSS applied to the element
Task 11: Change background-color
of the header
to tomato
, and the color
to white
. Use cssText
.
let el = document.querySelector("header");
el.style.cssText = "background-color: tomato; color: white;";
Task 12: Refer to task 11; add padding: 2rem
to header
.
let el = document.querySelector("header");
el.style.cssText = "background-color: tomato; color: white; padding: 2rem";
Task 13: Refer to task 12; add margin: 2rem 0
to header
.
let el = document.querySelector("header");
el.style.cssText = "background-color: tomato; color: white; padding: 2rem; margin: 2rem 0";
Task 14: Refer to task 13; center the text in the header
element.
let el = document.querySelector("header");
el.style.cssText = "background-color: tomato; color: white; padding: 2rem; margin: 2rem 0; text-align: center";
className¶
Task 15: What are the classes applied to the first box? Hint: use el.className
let el = document.getElementsByClassName("box")[0];
console.log(el.className);
The result is: box
Task 16: Refer to task 15; add the border-bold
class to el
. Hint: use el.className="border-bold"
.
let el = document.getElementsByClassName("box")[0];
el.className = "border-bold";
console.log(el.className);
The result is: border-bold
Task 17: Refer to task 16; add the border-bold
class to el
. Hint: use el.className+="border-bold"
.
let el = document.getElementsByClassName("box")[0];
el.className += " border-bold";
console.log(el.className);
The result is: box border-bold
Task 18: Append the border-light
class to the second box.
let el = document.getElementsByClassName("box")[1];
el.className += " border-light";
console.log(el.className);
The result is: box border-light
el.className
The el.className
property returns and sets the given class value to the class attribute of the element.
classList¶
Task 19: Display the classes of the last box. Hint: use: el.classList
.
let el = document.getElementsByClassName("box")[5];
console.log(el.classList);
The result is: DOMTokenList ["box", value: "box"]
Task 20: Refer to task 19; add the .hide
class to el
. Hint: use el.classList.add("hide")
.
let el = document.getElementsByClassName("box")[5];
el.classList.add("hide");
console.log(el.classList);
The result is: DOMTokenList(2) ["box", "hide", value: "box hide"]
Task 21: Refer to task 20; remove the hide
class from el
. Hint: use el.classList.remove("hide")
.
let el = document.getElementsByClassName("box")[5];
el.classList.add("hide");
el.classList.remove("hide");
console.log(el.classList);
The result is: DOMTokenList ["box", value: "box"]
Task 22: Add the border-bold
class to the first box using classList
.
let el = document.querySelector("#container > .box:first-child");
el.classList.add("border-bold");
Task 23: Add the border-light
class to the third box using classList
.
let el = document.querySelector("#container > .box:nth-child(3)");
el.classList.add("border-light");
Task 24: Remove the box
class from the fourth box, and add the border-light
class to it using classList
.
let el = document.querySelector("#container > .box:nth-child(4)");
el.classList.remove("box");
el.classList.add("border-light");