关于元素隐藏/显示的各种方法

元素的隐藏/显示可以说是使用频率最高的方法之一,比如二级菜单,响应式布局,透明过度等等许许多多的特效都会使用到,以下介绍一下元素隐藏的各属性以及他们的特性和使用方法:display visibility opacity position float overflow

我们先设置一些共有属性:

<head>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #444;
            margin: 10px;
            color: #f00;
            text-align: center;
            line-height: 100px;
        }
    </style>
</head>
<body>
    <div class="display">display</div>
    <div class="visibility">
        <p>visibility</p>
    </div>
    <div class="opacity">opacity</div>
    <div class="overflow">overflow</div>
    <div class="position">position</div>
</body>

1.display:none;
  display用于设置元素的显示方式,其常用取值有block inline-block inline。它在移动端中经常用来设置a链接。在隐藏的方法中,取none值这种方法一般是不可取的!因为display:none是直接不显示,也就是不渲染此元素,如果它所作用的元素排版在页面较前,先渲染,就容易引起回流(reflow)和重绘(repaint),造成难以预知的后果。
  特点:  不占据空间,不可点击(对鼠标事件无响应)
       株连性:其后代元素一概不渲染
       transition无法对其起作用

2.visibility:hidden/visible
  比较常用的方法,浏览器对其渲染可是不可见,它占据空间却不可点击,我们来测试一下:

<style> .visibility{visibility:hidden;}</style>

可以看到,元素消失,而后面的div却没有占据它原来的位置,说明元素不可见却仍然占据空间。另外还有一种特殊情况:

<style>
    .visibility{
        visibility:hidden;
        position: absolute;
    }
</style>

设置position:absolute后,元素不占据空间了!!为什么呢??其实原因很简单,设置此属性后,元素将脱离文档流,后面的元素就会占据它原本的空间,同样效果的还有 position:fiexd 和 float:left/right。
  特点:占据空间,却不可点击(对鼠标事件无响应)
     有继承性,无株连性,后代元素可以设置visibility:visible来显示自己
     transition对hidden -> visible无效,对visible -> hidden 有效

3.opacity:0
  这个属性应该是最常用于隐藏的属性了,取值为0-1.
  特点:占据空间,可点击(对鼠标事件有响应)
     有继承性,无株连性,后代元素可设置opacity:1或者rgba(n,n,n,1)来显示自己
     transition对其有效
     使用position或float使其脱离文档流后,仍然对鼠标事件响应。

4.position ,float。一般也不推荐。
  是的,连这两家伙也来凑热闹了,不过它们的确可以起到隐藏的作用,虽然不是真正意义上的隐藏。
  将元素设置成position:absolute; 然后通过控制它的位置,将它定位到浏览器可视窗口以外的位置,就可以起到隐藏的效果。
  如:position:absolute/fiexd
top:0px;
left:-200px;
  那么它将从浏览器左边“走出去”,并且它是脱离文档流的,不会对页面布局造成影响。
  同样的,浮动元素可也配合margin做到隐藏的效果:
    float:left;
    margin-left:-200px;
  同理,它脱离文档流,所以不对布局造成影响,可是页面中若有其它浮动元素就要小心使用。

5.overflow:hidden/visible
  这个属性在做二级菜单时可以发挥大用处。通过设置元素的 width 或 height 来控制元素溢出的样式,从而起到隐藏/显示的效果。
  方法一:固定overflow属性值,改变width/height

<head>
    <style>
       .overflow{
          overflow: hidden;
      }
      .overflow > ul > li{
          height: 100px;
          list-style-type: none;
      }
      .overflow:hover{
          height: 300px;
      }

    </style>
</head>
<body>
    <div class="overflow">
        <ul>
            <li>导航一</li>
            <li>导航二</li>
            <li>导航三</li>
        </ul>
    </div>
    <div class="position">position</div>
</body>

方法二:固定 width / height 的值,改变overflow的属性值。

<head>
    <style>
       .overflow{
            overflow: hidden;
        }
        .overflow > ul > li{
            height: 100px;
            list-style-type: none;
        }
        .overflow:hover{
            height: 300px;
        }

    </style>
</head>
<body>
    <div class="overflow">
        <ul>
            <li>导航一</li>
            <li>导航二</li>
            <li>导航三</li>
        </ul>
    </div>
    <div class="position">position</div>
</body>

特点:由于是溢出,顾名思义,隐藏的部分本来就不占据空间。
   显示可点击(对鼠标事件响应)  
   无继承性,无株连性,只对设置的元素起作用。
   transition对其有效,可做出炫酷的效果哦
   只需要改变元素的height:0px即可起到隐藏的效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • 先把css隐藏页面元素有几种方法列出来,方便查看以及使用,下文再分析其中的原理 display : none ; ...
    Amfishers阅读 1,122评论 0 3
  • 英文原文:Five Ways to Hide Elements in CSS作者:Baljeet Rathi译者:...
    IT程序狮阅读 383评论 0 1
  • 一、CSS元素隐藏 在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间; ...
    studystudy阅读 312评论 0 0
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,138评论 0 1