I am trying to find out the differences between style
- hidden
- block
- none
I am trying with this example, but unfortunately this isn't working. Could anybody please let me know the answer?
<html>
<head>
<title>JavaScript Unleashed</title>
<script>
function callMe()
{
document.getElementById('layer1').style.visibility = 'block';
}
</script>
</head>
<body onload="callMe()">
<div name="layer1">
<hr>DIV 1<hr>
</div>
</body>
</html>
I am trying to find out the differences between style
- hidden
- block
- none
I am trying with this example, but unfortunately this isn't working. Could anybody please let me know the answer?
<html>
<head>
<title>JavaScript Unleashed</title>
<script>
function callMe()
{
document.getElementById('layer1').style.visibility = 'block';
}
</script>
</head>
<body onload="callMe()">
<div name="layer1">
<hr>DIV 1<hr>
</div>
</body>
</html>
Share
Improve this question
edited May 21, 2015 at 10:00
Ḟḹáḿíṅḡ Ⱬỏḿƀíé
2,1485 gold badges25 silver badges34 bronze badges
asked Jul 11, 2011 at 14:46
user663724user663724
1
- did you try document.getElementById('layer1').style.display = 'block'; and document.getElementById('layer1').style.display = 'none'; – Nasaralla Commented Jul 11, 2011 at 14:49
9 Answers
Reset to default 8You're really close. Two different properties.
display: (block || none) (there are more options here)
visibility: (visible || hidden)
The different is with display:none
the element is pletely hidden from the view. So if you have a box with 300px height and width then you would not see anything there.
With visibility:hidden
it will keep the dimensions of the area, but will hide all the content.
Block isn't a valid visibility option. You are thinking of the Display property which can be set to block.
Visibility
Display
It should be style.display for "block" and "none" to work. Visibility reserves space for the element on the page while, display:none doesn't.
Take a look here for full reference and examples on the difference between different styles decalrations. (hidden relates to visibility)
Basically:
display: block
display: block means that the element is displayed as a block, as paragraphs and headers have always been. A block has some whitespace above and below it and tolerates no HTML elements next to it, except when ordered otherwise (by adding a float declaration to another element, for instance).
display: none
display: none means that the element is not displayed at all (so you won't see it in the example either).
There are two elements in CSS style: visibility
and display
. Visibility may be hidden
or visible
(or collapse
for tables). Display may be inline
, block
or none
.
The main difference between display: none
and visibility: hidden
is that in the second case the content still takes spaces on the page for layout purposes, but is not visible, however with display: none
the content is removed from the layout altogether.
There are two css styles you are confusing:
visibility
which can be set to visible
or hidden
- this hides the object without removing it from the flow, which means that the formatting of the page will be unchanged.
display
which can be many things including: block
, inline
, none
.
Setting display:none
also hides an element, but it also removes it from the page flow, meaning surrounding elements can be affected as they "fill" the hole.
for hiding document element
document.getElementById('layer1').style.visibility = 'hidden';
that can also be achieved by
document.getElementById('layer1').style.display = 'none';
so for showing you do
document.getElementById('layer1').style.display = 'block';
or
document.getElementById('layer1').style.visibility = 'none';
while defining the div you just need to add the style property as below
<div id="layer1" style="disply:none" >
</div>
and while using in function
document.getElementById("layer1").style.display = "";
You can try the following modified code:
<html>
<head>
<title>JavaScript Unleashed</title>
<script>
function callMe()
{
document.getElementById("layer1").style.display = "none";
}
function resetElement()
{
document.getElementById("layer1").style.display = "block";
}
</script>
</head>
<body>
<h1> Heading </h1>
<div id="layer1">
<button onclick="callMe()">click to hide</button>
<hr>DIV 1<hr>
</div>
<div>
<button onclick="resetElement()">Reset All</button>
</div>
</body>
</html>