contain
property in CSS and the height of the <body>
element in HTML. The contain
property is a powerful tool that allows developers to isolate a DOM subtree from the rest of the page, which can lead to significant performance improvements. Meanwhile, properly managing the height of the <body>
element ensures that the content is displayed correctly and consistently across different devices and screen sizes. In this blog post, we will explore the fundamental concepts, usage methods, common practices, and best practices related to CSS contain
and body height in HTML.contain
Property?The CSS contain
property is used to indicate that an element and its contents are, as much as possible, independent of the rest of the document tree. This isolation can be useful for performance reasons because the browser can avoid unnecessary layout, paint, and composite operations when changes occur within the contained element.
There are several values for the contain
property:
none
: This is the default value, which means there is no containment.strict
: Applies all forms of containment (size
, layout
, style
, and paint
).content
: Applies layout
, style
, and paint
containment.size
: The element’s size can be computed without considering its descendants.layout
: The element’s descendants cannot affect the layout of elements outside the container.style
: The element is isolated from changes to global CSS custom properties.paint
: The descendants of the element cannot be painted outside the element’s bounds.<body>
Element HeightThe <body>
element is the root element that contains all the visible content of an HTML page. By default, the height of the <body>
element is determined by the height of its content. However, there are cases where you may want to set a specific height for the <body>
element, such as creating a full - screen layout or a fixed - height header and footer.
contain
PropertyTo use the contain
property, you simply add it to the CSS rule for the element you want to contain. Here is an example:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<meta name="viewport" content="width=device-width, initial - scale = 1.0">
<style>
.contained - element {
contain: content;
border: 1px solid black;
padding: 10px;
}
</style>
</head>
<body>
<div class="contained - element">
<p>This is some content inside a contained element.</p>
</div>
</body>
</html>
In this example, the .contained - element
has contain: content
applied, which means that its layout, style, and paint are isolated from the rest of the page.
<body>
Element HeightThere are several ways to set the height of the <body>
element:
body {
height: 500px;
}
html,
body {
height: 100%;
}
When using a percentage height, it’s important to note that the parent element (in this case, the <html>
element) must also have a defined height. Otherwise, the percentage value will be relative to an undefined height, and the <body>
may not behave as expected.
contain
One of the most common use cases for the contain
property is performance optimization. Consider a page with a large number of dynamic elements, such as a news feed. By applying contain
to each news item, the browser can optimize the rendering process.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<meta name="viewport" content="width=device-width, initial - scale = 1.0">
<style>
.news - item {
contain: content;
border: 1px solid gray;
margin: 10px;
padding: 10px;
}
</style>
</head>
<body>
<div class="news - item">
<h2>News Title 1</h2>
<p>News content goes here...</p>
</div>
<div class="news - item">
<h2>News Title 2</h2>
<p>More news content...</p>
</div>
</body>
</html>
In responsive design, setting the height of the <body>
element can be challenging. A common practice is to use a combination of relative units (such as percentages or viewport units) to ensure that the page layout adapts to different screen sizes.
html,
body {
height: 100vh; /* 100% of the viewport height */
margin: 0;
}
Using vh
(viewport height) units allows the <body>
element to take up the full height of the browser window, regardless of the device’s screen size.
contain
with Other CSS PropertiesThe contain
property can be combined with other CSS properties for even better results. For example, you can combine it with position: absolute
or position: fixed
to create isolated floating elements.
.floating - element {
position: absolute;
top: 20px;
right: 20px;
contain: strict;
background - color: lightblue;
padding: 10px;
}
When using the contain
property, it’s important to note that browser support may vary. As of now, most modern browsers support the contain
property, but it’s a good practice to provide fallbacks for older browsers. You can use feature detection libraries like Modernizr to check for browser support and apply alternative styles if necessary.
In conclusion, the CSS contain
property and proper management of the <body>
element height are important aspects of web development. The contain
property can significantly improve the performance of a web page by isolating elements from the rest of the document tree. Meanwhile, setting the appropriate height for the <body>
element is crucial for creating responsive and visually appealing layouts. By understanding the fundamental concepts, usage methods, common practices, and best practices, you can make the most of these features in your web projects.