Css隐藏元素(display,visibility)的区别

display

display属性值

display 属性规定元素应该生成的框的类型。

属性值:

block:

/表现为一个块级元素(一般情况下独占一行)/

当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像DIV元素一样,它会在那个点被放入到页面中。(实际上你可以设置span的display:block,使其可以像DIV一样工作。)

inline:

/表现为一个行级元素(一般情况下不独占一行)/

将display设置为inline,将使其行为和元素inline一样—即使它是普通的块元素如DIV,它也将会被组合成像span那样的输出流。

none:

/元素不可见,并且不为其保留相应的位置/

最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填充。

display的使用

1、display默认属性值为块级的元素:

adress,quote,body,xmp,center,col,colgroup,dd,dtr,div,

dl,dt,fieldset,form,hn,hr,iframe,legend,listing,marquee,

menu,ol,p,plaintext,pre,table,td,th,tr,ul

2、display默认属性值为none的元素:

br,frame,nextid,tbody,tfoot,thead

3、li元素的display属性默认值为:list-item

4、其他元素display属性默认值都为inline

display的特性

改变元素的display属性将对周围元素造成的影响有:

在属性值设为block的元素后面添加新行

从属性值设为inline的元素所在行中删除一行

隐藏属性值设为none的元素并且释放该元素在文档中所占的物理空间,对于其他元素来说,相当于该元素不存在,因此,该元素的位置被其他元素顶替

visibility

visibility的属性值

visibility:visible

/元素可见,默认值/

visibility:hidden

/元素不可见,但仍然为其保留相应的空间/

visibility:collapse

/只对table对象起作用,能移除行或列但不会影响表格的布局。如果这个值用在table以外的对象上则表现为hidden。/

visibility:inherit

/继承上级元素的visibility值。/

visibility特性

用来确定元素是显示还是隐藏,这用visibility=”visible/hidden”来表示,visible表示显示,hidden表示隐藏。当visibility被设置为”hidden”的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置。

visibility和display的区别

大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的。visibility和display两个属性都有隐藏元素的功能。visibility属性所控制的元素虽然不在浏览器里面显示出来,但他在浏览区里是存在的,只是不显示而已。而display属性设置为none,这个元素就变成了一个不显示的元素

display:none;

使用该属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;

visibility:hidden;

使用该属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。

visibility和display的其他区别

其实visibility和display的区别主要有三点:

空间占据

回流与渲染

株连性

回流与渲染:

display:none隐藏产生reflow和repaint(回流与重绘),而visibility:hidden没有这个影响前端性能的问题;

株连性:

所谓“株连性”,就是如果祖先元素遭遇某祸害,则其子子孙孙无一例外也要遭殃。

display:none就是“株连性”明显的声明:一旦父节点元素应用了display:none,父节点及其子孙节点元素全部不可见,而且无论其子孙元素如何不屈地挣扎都无济于事。

在实际的web应用中,我们要经常实现一些显示隐藏的功能,由于display:none本身特性以及jQuery潜在的驱动,使得我们对display:none这种隐藏特性相当熟知。因此,久而久之会形成比较牢固的情感化认识,并无法避免地将这种认识迁移到其他类似表现属性(eg. visibility)的认识上,再加上一些常规经验……

举例来说吧,通常情况下,我们给一个父元素应用visibility:hidden,则其子孙后代也都会全部不可见。于是,我们就会有类似的认识迁移:应用了visibility:hidden声明下的子孙元素如何不屈地挣扎都摆脱不了不可见被抹杀的命运。而实际上却存在隐藏“失效”的情况。

何时隐藏“失效”?很简单,如果子孙元素应用了visibility:visible,那么这个子孙元素又会刘谦般地显现出来。

对比总结:

display:none是个相当惨无人道的声明,子孙后代全部搞死(株连性),而且连块安葬的地方都不留(不留空间),导致全体民众哗然(渲染与回流)。

visibility:hidden则具有人道主义关怀,虽然不得已搞死子孙,但是子孙可以通过一定手段避免(伪株连性),而且死后全尸,墓地俱全(占据空间),国内民众比较淡然(无渲染与回流)。

其他隐藏元素

在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间;有的可以响应点击,有的不能响应点击

{ display: none; /* 不占据空间,无法点击 */ }

{ visibility: hidden; /* 占据空间,无法点击 */ }

{ position: absolute; top: -999em; /* 不占据空间,无法点击 */ }

{ position: relative; top: -999em; /* 占据空间,无法点击 */ }

{ position: absolute; visibility: hidden; /* 不占据空间,无法点击 */ }

{ height: 0; overflow: hidden; /* 不占据空间,无法点击 */ }

{ opacity: 0; filter:Alpha(opacity=0); /* 占据空间,可以点击 */ }

{ position: absolute; opacity: 0; filter:Alpha(opacity=0); /* 不占据空间,可以点击 */ }

{

zoom: 0.001;

-moz-transform: scale(0);

-webkit-transform: scale(0);

-o-transform: scale(0);

transform: scale(0);

/* IE6/IE7/IE9不占据空间,IE8/FireFox/Chrome/Opera占据空间。都无法点击 */

}

{

position: absolute;

zoom: 0.001;

-moz-transform: scale(0);

-webkit-transform: scale(0);

-o-transform: scale(0);

transform: scale(0);

/* 不占据空间,无法点击 */

}

height:0和overflow:hidden的组合

overflow:hidden用中文理解就是“溢出隐藏”,也就是盒子以外的内容都咔嚓掉不可见的。加上height:0,只要是一般的非inline水平元素,则元素内部所有子孙都应该是不可见的。

height:0和overflow:hidden组合隐藏“失效”的条件如下:祖先元素没有position:relative/absolute/fixed声明,同时内部子元素应用了position:absolute/fixed声明。

什么时候使用Visibility或者Display属性?

Visibility和Display属性虽然都可以达到隐藏页面元素的目的,但它们的区别在于如何回应正常文档流。

如果你想隐藏某元素,但在页面上保留该元素的空间的话,你应该使用visibility:hidden。如果你想在隐藏某元素的同时让其它内容填充空白的话应该使用display:none。

在现实中我(作者)更多的倾向于使用display属性(相信这也是大多数人的习惯,bolo注)。当你决定用display:none来隐藏一个元素时,你必须知道其它内容将填充到该元素留下的空白位置,从而改变页面的布局。

使用Visibility或者Display属性的注意事项

display:none:

1、JS读取元素属性值

如果在样式文件或页面文件代码中直接用display:none对元素进行了隐藏,载入页面后,在没有通过js设置样式使元素显示的前提下,使用js代码会无法正确获得该元素的一些属性,比如offSetTop,offSetLeft等,返回的值会为0,通过js设置style.display来使元素显示后才能正确获得这些值。

2、SEO优化时需要注意

使用display:none隐藏的元素不会被百度等搜索网站检索,会影响到网站的SEO,某些情况下可以使用left:-100000px来达到同样效果。

3、样式文件

如果是通过样式文件或方式来设置元素的display:none样式,用js设置style.display=”“并不能使元素显示,可以使用block或inline等值来代替。通过style=”display:none”直接在元素上进行的设置不会有这个问题

4、有些情况下可以使用style.visibility来代替style.display,但是要注意的是style.visibility隐藏元素时会保留元素在页面上所占的空间,而style.display隐藏元素且让出所占页面空间。

visibility:hidden:

如果想让某一段代码在前台不显示,最简单的方法是用css的display:none,这样,下边的内容就自动填补这个空隙。但是在一些特殊的情况下,我们只需要隐藏这个元素,但它的位置不能被其他元素占用了,那么,visibility:hidden就可以实现这个要求。

例子

display属性值的使用

.test{

height:100px;

background-color:#ccc;

}

.displayWrap{

display: none;

height:100px;

background-color:#E60C0F;

}

.displayChild{

display: block;

height:100px;

width: 50%;

background-color:#000;

}

.visibilityWrap{

visibility: hidden;

height:100px;

background-color:#f5f00e;

}

.visibilityChild{

visibility: visible;

height:100px;

width: 50%;

background-color:#000;

}

displayChild
visibilityChild

css元素隐藏不可获取,Css隐藏元素(display,visibility)的区别相关推荐

  1. python list查找元素下标,python 获取list特定元素下标的实例讲解

    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等.怎么办?看下面 方法一:利用数组自身的特性 a.index(target), 其中a是你的目 ...

  2. java list取最后一个元素_Java stream() 获取List指定元素或最后一个元素的方法

    示例ListList list = Arrays.asList(1, 2, 3, 4, 5); 1.通过Stream()来获取 如果过滤器的计算结果为true,则检索该元素,否则返回最后一个元素.in ...

  3. python获取当前网页元素_python – 如何获取webdriver中元素的当前内容

    我相信预言是在正确的轨道.这取决于它是什么样的元素.您需要对输入元素使用element.get_attribute('value'),并返回元素的文本节点. 您可以使用element.tag_name ...

  4. 如何给FormPanel表单中的元素赋值以及获取表单元素值

    1.定义表单元素的name属性如下 var HLV = new Ext.form.TextField({fieldLabel: '汇率',name:'EXCHANGERATE',anchor: '30 ...

  5. python 提取列表元素_Python如何获取列表中元素的索引,python,获得,某个,index

    由前面<python判断字符串中是否包含子字符串str(这个很重要,经常被问到,会经常使用)index() find()>( https://blog.csdn.net/jiongta94 ...

  6. 怎么获取html的某个元素,MSHTML怎么获取一个网页元素对象

    C/C++ code//获取IHTMLDocument2 IHTMLDocument2 *pDoc2; IHTMLFramesCollection2 *pFc2; HWND hIE = (HWND)h ...

  7. java set获取元素_Set如何获取第一个元素

    import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; p ...

  8. js 兼容性封装获取第一个子元素,最后一个子元素,下一个兄弟元素,上一个兄弟元素

    高级浏览器: chrome firefox ie9及以上符合web标准浏览器. 低版本浏览器: ie6,ie7,ie8. 节点和元素的适用范围:以firstChild和firstElementChil ...

  9. 奇葩!小米手机自带浏览器css兼容问题,强制屏蔽、隐藏类名为 top_box 的元素。

    如标题所示,今天记录一下小米手机自带浏览器的问题. 同一个页面代码,不论在微信环境,其他第三方浏览器,或者嵌入app中显示都没有问题,唯有小米手机自带浏览器,莫名其妙的有个元素不见了. 然后一顿改代码 ...

最新文章

  1. OC基础-关于构造方法
  2. Delphi使用资源文件全攻略
  3. HashMap 你真的了解吗?
  4. Remoting 与 Webservice 的区别
  5. Oracle安装步骤及PL/SQL Developer连接数据库
  6. 构建基于Nginx的web服务器
  7. 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛
  8. 树莓派学习——文件传输
  9. 关于边缘计算,那些不边缘的“术”与“道”
  10. 读写锁SRWLock
  11. 【Spark Summit EU 2016】Spark的性能,过去、现在与未来
  12. Javascript中的条件语句和循环语句
  13. linux下类everthing搜索工具
  14. origin画已知函数曲线_20+实用origin技能,带你用技巧画出完美曲线!
  15. Apache2 MPM 模式了解
  16. php个人微信公众号,PHP实现微信公众号自定义菜单
  17. CCF“信息检索”的前沿讲座
  18. 【初级C语言】代码版式(空行,空格,对齐,长行代码,注释)
  19. 打印符号三角形问题java_回溯法之符号三角形问题
  20. 华米已成全球第五大智能手表企业,可望进一步摆脱对小米的依赖

热门文章

  1. tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...
  2. css样式全大写,用css样式表实现首字大写
  3. python json文件传输图片
  4. Pytest+Allure+Jenkins接口自动化项目实战(一)
  5. (笔记)网络技术学习交流会
  6. Fixed Function Shader
  7. HDU 1108 最小公倍数
  8. iOS定位服务与地图开发(3)---地理信息编码查询
  9. WINCE 下配置 QT 的方法
  10. div css入门教程,更简洁CSS清理浮动方式:clearfix