--> Sayadasite: An Over View Of Dynamic Web Pages Section 4

Multiple Ads

Search

Menu Bar

An Over View Of Dynamic Web Pages Section 4

  Section 1 Section2 Section 3 Section 4 Section 5 Section 6

Dynamically changing style

Dynamically changing styles in CSS primarily involves using JavaScript to interact with the Document Object Model (DOM) and modify element styles or apply/remove CSS classes.

Here are common methods for achieving dynamic CSS changes:

1. Directly manipulating the style property of an element:

This method allows you to set individual CSS properties directly on an HTML element using JavaScript.

JavaScript

const myElement = document.getElementById('myDiv');
myElement.style.backgroundColor = 'blue';
myElement.style.fontSize = '20px';

2. Modifying the className or classList of an element:

This approach involves pre-defining different styles in CSS classes and then dynamically adding or removing these classes from elements. This is often preferred for managing more complex style changes and promoting better separation of concerns.

Code

<div id="myDiv" class="default-style">Content</div>

 

Code

.default-style {
  color: black;
  border: 1px solid gray;
}
.highlighted-style {
  color: red;
  border: 2px solid blue;
}

JavaScript

const myElement = document.getElementById('myDiv');
// Add a class
myElement.classList.add('highlighted-style');
// Remove a class
myElement.classList.remove('default-style');
// Toggle a class
myElement.classList.toggle('another-style');

3. Using setAttribute to modify the style attribute:

You can use setAttribute to directly change the style attribute of an element. However, be cautious as this will overwrite any existing inline styles on that element.

JavaScript

const myElement = document.getElementById('myDiv');
myElement.setAttribute('style', 'background-color: green; padding: 10px;');

4. Manipulating CSS Custom Properties (CSS Variables):

CSS custom properties, or CSS variables, allow you to define variables within your CSS and then dynamically change their values using JavaScript. This provides a powerful way to manage and update styles globally or for specific components.

Code

:root {
  --main-color: blue;
}
.my-box {
  background-color: var(--main-color);
}

JavaScript

document.documentElement.style.setProperty('--main-color', 'red');

5. Adding or removing entire <style> elements:

For more extensive and global style changes, you can dynamically create or remove <style> elements containing CSS rules.

JavaScript

const newStyleSheet = document.createElement('style');
newStyleSheet.innerHTML = 'body { font-family: Arial, sans-serif; }';
document.head.appendChild(newStyleSheet);

The choice of method depends on the specific requirements of your dynamic styling needs. For simple, isolated changes, directly manipulating the style property might suffice. For more complex and maintainable styling, using CSS classes or custom properties with JavaScript is generally recommended.

Dynamically Changing HTML Style

To change the style of an HTML element, use this syntax:

document.getElementById(id).style.property = new style

The following example changes the style of a <p> element:

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript HTML DOM</h2>

<p>Changing the HTML style:</p>

<p id="p1">Hello World!</p>

<p id="p2">Hello World!</p>

<script>

document.getElementById("p2").style.color = "blue";

document.getElementById("p2").style.fontFamily = "Arial";

document.getElementById("p2").style.fontSize = "larger";

</script>

</body>

</html>

Using Events

The HTML DOM allows you to execute code when an event occurs.

Events are generated by the browser when "things happen" to HTML elements:

1.          An element is clicked on

2.          The page has loaded

3.          Input fields are changed

This example changes the style of the HTML element with id="id1", when the user clicks a button:

Example

2 <!DOCTYPE html>

<html>

<body>

<h1 id="id1">My Heading 1</h1>

<button type="button"

onclick="document.getElementById('id1').style.color = 'red'">

Click Me!</button>

</body>

</html>

No comments: