Two key CSS properties are used to control the visibility of HTML elements: visibility
and display
.
visibility
: This property determines whether an element is visible or not. When set to hidden
, the element is not visible, but it still takes up space in the layout.display
: This property defines how an element is displayed. When set to none
, the element is completely removed from the layout, and it doesn’t take up any space.The opacity
property can also be used to make an element transparent. An opacity
value of 0
makes the element completely invisible, but it still takes up space in the layout.
visibility
Property<!DOCTYPE html>
<html lang="en">
<head>
<style>
.hidden-element {
visibility: hidden;
}
</style>
</head>
<body>
<button>Visible Button</button>
<button class="hidden-element">Hidden Button</button>
<input type="text" value="Visible Text Box">
<input type="text" class="hidden-element" value="Hidden Text Box">
</body>
</html>
In this example, the buttons and text boxes with the hidden-element
class are hidden using the visibility
property.
display
Property<!DOCTYPE html>
<html lang="en">
<head>
<style>
.removed-element {
display: none;
}
</style>
</head>
<body>
<button>Visible Button</button>
<button class="removed-element">Hidden Button</button>
<input type="text" value="Visible Text Box">
<input type="text" class="removed-element" value="Hidden Text Box">
</body>
</html>
Here, the elements with the removed-element
class are completely removed from the layout using the display
property.
opacity
Property<!DOCTYPE html>
<html lang="en">
<head>
<style>
.transparent-element {
opacity: 0;
}
</style>
</head>
<body>
<button>Visible Button</button>
<button class="transparent-element">Hidden Button</button>
<input type="text" value="Visible Text Box">
<input type="text" class="transparent-element" value="Hidden Text Box">
</body>
</html>
The elements with the transparent-element
class are made invisible using the opacity
property.
You can use JavaScript to conditionally hide or show elements based on user actions. For example, you can hide a button when a user clicks on it.
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<button id="myButton">Click me to hide</button>
<script>
const button = document.getElementById('myButton');
button.addEventListener('click', function () {
button.classList.add('hidden');
});
</script>
</body>
</html>
In responsive web design, you may want to hide elements on certain screen sizes. You can use media queries to achieve this.
<!DOCTYPE html>
<html lang="en">
<head>
<style>
@media (max-width: 768px) {
.hide-on-mobile {
display: none;
}
}
</style>
</head>
<body>
<button class="hide-on-mobile">Hidden on Mobile</button>
<input type="text" class="hide-on-mobile" value="Hidden on Mobile">
</body>
</html>
When hiding elements, make sure it doesn’t affect the accessibility of your website. Screen readers should still be able to access the content. If an element is hidden for visual reasons only, use the aria-hidden
attribute to indicate that it should be ignored by screen readers.
<button aria-hidden="true" style="display: none;">Hidden Button</button>
Using the display: none
property is generally more performant than visibility: hidden
because it doesn’t require the browser to calculate the layout for the hidden element.
Use classes to manage the visibility of elements. This makes your code more modular and easier to maintain. For example, instead of inline styles, use a class like hidden
in your CSS.
CSS provides multiple ways to hide HTML buttons and text boxes, each with its own advantages. The visibility
property hides an element while keeping its layout space, the display
property completely removes the element from the layout, and the opacity
property makes an element transparent. By understanding these concepts and following the common practices and best practices, you can effectively control the visibility of elements in your web pages and create more interactive and user-friendly interfaces.