使用CSS隐藏元素的方法很多,在这里简单总结一下:

1、display:none

display:none 应该是最常用的一种隐藏元素的方法,使用该方法隐藏的元素脱离文档流不占据空间,不会被浏览器解析,不能点击,搜索引擎可能会认为被隐藏的文字属于垃圾信息而被忽略,而且屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字。

2、visibility:hidden

使用 visibility:hidden 隐藏的元素,不能点击,但是会占据文档空间,不够灵活,一般配合 position:absolute 或 position:relative 使用。

PS:visibility:hidden 转换为 visibility:visible 跟 display:none 转换为 display:block 相比性能较好,因为 display 在切换可见性时会产生reflow,它要重新构建frame,所以要比 visibility:visible 慢。

顺带介绍一下 reflow

浏览器为了重新渲染部分或整个页面,重新计算页面元素位置和几何结构的进程叫做 reflow。
由于 reflow 是一种浏览器中的用户拦截操作,所以了解如何减少 reflow 次数,及不同的文档属性(DOM 层级,CSS 效率,不用类型的 style 变化)对 reflow 次数的影响对开发者来说非常必要。有时 reflow 页面中的一个元素会 reflow 它的父元素以及所有子元素。

引发 reflow 的一些因素:

  1. 调整窗口大小(Resizing the window)

  2. 改变字体(Changing the font)

  3. 增加或者移除样式表(Adding or removing a stylesheet)

  4. 内容变化,比如用户在input框中输入文字(Content changes, such as a user typing text in an input box)

  5. 激活 CSS 伪类,比如 :hover (IE 中为兄弟结点伪类的激活)(Activation of CSS pseudo classes such as :hover (in IE the activation of the pseudo class of a sibling))

  6. 操作 class 属性(Manipulating the class attribute)

  7. 脚本操作 DOM(A script manipulating the DOM)

  8. 计算 offsetWidth 和 offsetHeight 属性(Calculating offsetWidth and offsetHeight)

  9. 设置 style 属性的值 (Setting a property of the style attribute)

  10. 未指定图片宽高,载入时会使页面reflow

3、position:absolute;  left(or another direction): -9999px;

使用 absolute 使元素脱离文档流, 设置任一方向上足够远的偏移就可以使元素不在浏览者的视野内。

4、opacity:0;  filter:Alpha(opacity=0);

将透明度设为 0 即可把元素“隐藏”,但是元素仍占据原有空间,且可响应点击事件。

5、overflow:hidden;  height:0;

将元素的高度或者宽度设置为 0,对于非块状元素还要相应的设置 display 属性才能达到效果。

6、position、visibility、left(or another direction)、opacity任意组合

只要明确了 position:absolute 可以使元素脱离文档流,不占据文档空间, position:relative 使元素偏离当前的位置,但仍占据原来的空间,left(or another direction)控制元素偏离距离,visibility 控制元素是否可见,opacity 设置元素透明度。

就可以组合搭配达到想要的效果,例如:

position:absolute 配合 visibility:hidden 即可使元素脱离文档流,不占据文档空间并隐藏,类似达到 display:none 的效果

position:relative 配合 left:-9999px 使元素不可见,但是仍占据文档空间

CSS隐藏元素的几种方法的更多相关文章

  1. css隐藏元素的几种方法与区别

    css隐藏元素的几种方法与区别 一:display:none;隐藏不占位 display 除了不能加入 CSS3 动画豪华大餐之外,基本效果卓越,没什么让人诟病的地方. 二:position:abso ...

  2. 用css隐藏元素的5种方法

    .green { width: 100px; height: 100px; background-color: #a0ee00; text-align: center; float: left; ma ...

  3. CSS“隐藏”元素的几种方法的对比

    本文地址:http://luopq.com/2016/02/15/css-tricks-of-hide-element/,转载请注明 一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设 ...

  4. CSS隐藏元素的五种方法

    1.opacity:0 2.visibility:hidden 3.diaplay:none 4.position:absolute display display属性依照词义真正隐藏元素.将disp ...

  5. 有趣的css—隐藏元素的7种思路

    css隐藏元素的7种思路 前言 display.visibility.opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题. 属性 值 是否在页面上显示 注册点击事件是否有效 是否存在 ...

  6. CSS隐藏元素的几种妙法

    一说起CSS隐藏元素,我想大部分小伙伴们都会想到的第一种方法就是设置display为none.这是最为人所熟知也是最常用的方法.我相信还有不少人想到使用设置visibility为hidden来隐藏元素 ...

  7. CSS隐藏元素的几个方法(display,visibility)的区别

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

  8. CSS隐藏元素的N种实现方式。

    1. width:0; 光有高度是不行的,还得有宽度.缺点文字隐藏不了,可以加个color:#fff和背景颜色一样就ok了,障眼法,迷惑人的,其实内容还在,如果有文字的话,还是可以触发点击事件的,这种 ...

  9. css移动元素的几种方法

    一.当然是元素设定为postion: absolute, 然后控制 left, top 位置 二.元素增加overflow属性,然后设置元素的scrollLeft, scrollRight当做滚动条来 ...

随机推荐

  1. 说说chrome上的JS调试

    步骤:审查元素 ->source->选择js文件 ->设置断点 ->触发函数 ->进入调试点step over 到elements目录下双击某一块代码还可以立刻修改,ct ...

  2. 二分查找C++

    #include <iostream> using namespace std; //二分查找:每次都从中间位置寻找,如果找到了就返回,如果没找到, //则分两种情况: //(1)中间元素 ...

  3. C语言实现双向循环链表

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct list_head { stru ...

  4. UE4 - C++ 射线捕捉

    #include "Runtime/Engine/Classes/Kismet/KismetMathLibrary.h" //省略大部分代码 void AMyFPS_Charact ...

  5. PCL中point cloud的数据类型

    出处: http://wiki.ros.org/pcl/Overview 1.数据类型 1.1 ROS中point cloud数据类型 sensor mesgs::PointCloud sensor ...

  6. 转 未能加载类型 xxxx

    未能加载类型 分析器错误   说明:   在分析向此请求提供服务所需资源时出错.请检查下列特定分析错误详细信息并适当地修改源文件. 分析器错误信息:   未能加载类型“xxxxx”. 错误的 < ...

  7. 通俗理解隐马尔科夫模型HMM(转载)

    作者:Yang Eninala 链接:https://www.zhihu.com/question/20962240/answer/33438846 来源:知乎 著作权归作者所有,转载请联系作者获得授 ...

  8. kernel/module.c

    #include <linux/errno.h>#include <linux/kernel.h>#include <asm/segment.h>#include ...

  9. JS eval() 特殊用法

    最近项目有 有个模块 有若干功能菜单,这些菜单查询部分都是一样的,所以就像提取一个通用的查询页面然后使用$('#ele').load('../**.aspx #searchID', {}, funct ...

  10. open Live Writer配置步骤

    一.关于 Open Live Writer 微软推出的一款能够免费使用的博客写作软件,主要为用户提供博客在线撰写和编辑功能,可以离线编辑,联网时同步到各大博客网站上去. 接下来,介绍如何使用这款工具发 ...