display,opacity,visibility,position隐藏元素的实质

(1)display:设置属性display:none;,该元素被隐藏,而且该元素的子孙后代也被同时隐藏,此时被隐藏的元素不占据任何空间,用户的交互操作在此元素上不能生效,但是通过js语句操作dom可以来操作该隐藏元素。

实例:

.display-hide {
  display: none;
  transition: all ease 0.8s;
}

.display-hide:hover { /* 当鼠标悬浮在该元素时,设置为block,此时元素也不会出现 ,因为被display隐藏的元素,不占据任何空间,用户的交互操作也不能生效*/
  display: block;
}

.display-hide p {/* 同样的隐藏元素的子孙后代元素也会被隐藏,即使后代元素属性设置为block */
  display: block;
  margin: 0;
  padding: 0;
}
	</style>
</head>
<body>
   <div>鼠标移近来,然后在点击有惊喜哦</div>
    <div class="display-hide"><p>0</p></div>
    <div>第三个div块</div>
    <script>
    var count = 0;
    var DHide = document.getElementsByClassName(‘display-hide‘);
    var Div = document.getElementsByTagName(‘div‘);

    Div[0].addEventListener("mouseover", function(){
    count++;
    DHide[0].innerHTML = ‘<p>‘ +‘你的鼠标移近第一个div:‘+ count + ‘次‘+‘</p>‘;
   });

    Div[0].addEventListener("click", function(){
    DHide[0].style.display = "block";
  });
    </script>
</body>

效果图:

此例子中,第二个div元素被隐藏,于此同时它的子元素p也被隐藏了,当用户有对第二个div有交互行为,此时是不起作用的,但通过js语句可以来操作该元素,使开元素显示。

(2)opacity:设置属性opacity:0;,只是从视觉的角度隐藏了该元素,而该元素本身还是占据页面中的布局,而且,这种隐藏会响应用户的交互。

实例:

<style>
        div {
  padding: 60px;
  width: 60px;
  font-size: 14px;
  background: pink;
  text-align: center;
  margin: 1%; 
  float: left;
  cursor: pointer;
 }
/* 该元素虽然被隐藏了,看不见了,但它在页面中的位置还是存在的 */
.opacity-hide {
  opacity: 0;
  transition: all ease 0.8s;
}
/* 当鼠标移动到这个隐藏元素上面,元素显示,此时响应了用户的交互行为 */
.opacity-hide:hover {
  opacity: 1;
}
	</style>
</head>
<body>
	<div>1</div>
    <div class="opacity-hide">2</div>
    <div>3</div>
</body>

效果图:

此例中第二个div被隐藏了,我们看不见了,但是它在页面中的位置还是存在着,对用户的操作还是会做响应的,当鼠标滑动到第二块div时,显示。

(3)visibility:设置属性visibility:hidden;,该元素被隐藏,同样隐藏的元素对页面的布局仍起作用,但它不会影响任何用户交互,而且它的子孙元素也会在设置为visibility:visible。

.visibility-hide {
  visibility: hidden;
  transition: all ease 0.8s;
}
/* 虽然设置了隐藏效果,但是不会影响用户的交互操作 */
.visibility-hide:hover {
  visibility: visible;
}
 /* 父元素被隐藏了,这时设置子元素为显示状态,此时子元素显示,但父元素不会显示 */
.visibility-hide p {
  visibility: visible;
  margin: 0;
  padding: 0;
}
	</style>
</head>
<body>
   <div>1</div>
    <div class="visibility-hide"><p id="visi-p">2</p></div>
    <div>3</div>
    <script>
 var oHide = document.getElementsByClassName(‘visibility-hide‘);
 var oHideP = document.getElementById(‘visi-p‘);
 var count = oHideP.innerHTML;

oHide[0].addEventListener("click", function(){
    count++;
    oHideP.innerHTML = count;
});
    </script>
</body>

效果图:

此例中,当鼠标移近第二个div时,div的visibility属性变为visible,并为之绑定点击事件。

(4)Position:posiition:absolute;

top:-2880px;

Left:-2880px;

通过设置top,left的值,将元素放在屏幕的可视区域外,这样就达到了元素隐藏的效果。

.position-hide {
  position: absolute;
  top: -9999px;
  left: -9999px;
}

input{
	position: absolute;
	top:-2880px;
	left:-2880px;

}
/* 这个用户效果不会起作用,因为此时的div不在可视区内 */
.position-hide:hover {
  position: static;
}
	</style>
</head>
<body>
	<div>点击元素,有惊喜</div>
    <div class="position-hide"><p>0</p></div>
    <div><input type="radio" value = "获得焦点">3</div>
    <script>
 var count = 0;
var oHide = document.getElementsByClassName(‘position-hide‘);
var Div = document.getElementsByTagName(‘div‘);
var input = document.getElementsByTagName(‘input‘);

Div[0].addEventListener("mouseover", function(){
    count++;
    oHide[0].innerHTML = ‘<p>‘ +‘你的鼠标移近第一个div:‘+ count + ‘次‘+‘</p>‘;
});
Div[2].addEventListener("click",function(){
	input[0].style.position = "static";
});
Div[0].addEventListener("click", function(){

    oHide[0].style.position = "static";
    
});
    </script>
</body>

效果图:

总结: display,opacity,visibility,position,这四种元素隐藏元素各有优缺点,在实际的使用中根据需要,选择合适的。

时间: 2024-08-14 08:25:17

display,opacity,visibility,position隐藏元素的实质的相关文章

jQuery获取display为none的隐藏元素的宽度和高度的解决方案

1.利用给元素添加行内样式:visibility:hidden;display:block 2.让隐藏元素变成有物理尺寸存在,但不可见,获取元素宽高 3.再给它还原成display为none,去除visibility //#step-2默认是隐藏 display:none //添加样式,物理可见 $("#step-2").css({"display":"block","visibility":"hidden"

两种隐藏元素方式【display: none】和【visibility: hidden】的区别及由此引出的问题

此前看到一随笔(@任天缘 原文)讲了这个问题,并总结了: [display: none]:隐藏元素及元素内的所有内容,并且该元素的位置.宽高等其他属性值一并“消失”: [visibility: hidden]:隐藏元素及元素内的所有内容,但是该元素的位置.宽高等属性值仍然还在. 也有总结:(@Nicholas_F の 领域 原文) display:none ---不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失,通俗来说就是看不见也摸不到. visibility:hidden--- 使对

转 opacity() 和 rgba() 的区别?display 和 visibility 有什么不同?

一.背景介绍: 1.大家在写页面时,会用到各种元素,比如div, img等等.有时候一张页面会放好几张图片,图片如果显示效果都一样,看起来很单调,整个页面给人的感觉会很硬.那么,怎么能让页面的元素有一种多样化,甚至有一种朦胧美呢?于是,有了opacity和rgba()这两个属性.其中,opacity属性是css3新提的属性. 2.另外,在看一下display和visibility背景介绍,故名思意,display和visibility是与元素显示有关系的,这两个属性都可以控制元素的显示与隐藏.究

[ jquery 效果 show([speed,[easing],[fn]]) hide([speed,[easing],[fn]]) ] 此方法用于显示隐藏的被选元素:show() 适用于通过 jQuery 方法和 CSS 中 display:none type=&#39;hidden&#39; 隐藏的元素(不适用于通过 visibility:hidden 隐藏的元素)

show()显示隐藏的被选元素:show() 适用于通过 jQuery 方法和 CSS 中 display:none type='hidden' 隐藏的元素(不适用于通过 visibility:hidden 隐藏的元素): hide() 方法隐藏被选元素: 参数 描述 speed 可选.规定显示效果的速度. 可能的值: 毫秒 "slow" "fast" easing 可选.规定在动画的不同点上元素的速度.默认值为 "swing". 可能的值: &

元素隐藏的方式之--hidden,display,visibility

<html lang="en"> <head> <meta charset="UTF-8"> <title>标签或者内容的隐藏</title> <style> .display-none{ display:none; } .display-block{ display:inline-block; } /* visibility属性 */ .visibility-hidden{ visibilit

jQuery无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案

用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢工了. 用Chrome自带的开发工具一查,发现罢工的Tab中.小插件一些重要元素的宽度都变成“0”了,因为这个小插件需要计算动态宽度来实现,于是马上想到是小插件中的宽度获取失败了,果不其然. 汗,居然一直没发现jQuery无法获取隐藏元素(display:none)的宽度(width)和高度(height),为了兼容IE6,我用1.x版,而且是官方

display:none;visibility:hidden;和opacity:0;的区别

display:none; visibility:hidden; opacity:0; 它们都可以让元素隐藏掉,但是它们之间还是有区别的 display:none;隐藏后不占空间 而另外两个虽然隐藏了元素,但是还是占据着空间 而transition对于display:none;和visibility:hidden;是无效的 但是对于opacity:0;是有效的 原文地址:https://www.cnblogs.com/cz0017/p/10159850.html

Visibility属性控制元素的显示和隐藏

w3cschool案例: <!DOCTYPE html> <html> <body> <p id="p1">这是一段文本.</p> <input type="button" value="隐藏文本" onclick="document.getElementById('p1').style.visibility='hidden'" /> <input

CSS隐藏元素的几种方法

使用CSS隐藏元素的方法很多,在这里简单总结一下: 1.display:none display:none 应该是最常用的一种隐藏元素的方法,使用该方法隐藏的元素脱离文档流不占据空间,不会被浏览器解析,不能点击,搜索引擎可能会认为被隐藏的文字属于垃圾信息而被忽略,而且屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字. 2.visibility:hidden 使用 visibility:hidden 隐藏的元素,不能点击,但是会占据文档空间,不够灵活,一般配合 posi