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

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

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

<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

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

  

<stlyle>
    .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即可起到隐藏的效果

                                                      欢迎补充、指正

  

时间: 2024-10-24 14:30:33

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

html学习 - 元素隐藏/显示和input隐藏

元素隐藏 在html中我们经常需要把某些元素隐藏起来,有时候我们需要临时隐藏页面,让其他元素显示,来完成操作.有时候有些信息我们需要传给js,但是又不想给用户看,所以也会隐藏起来. display/visibility方法 在html中有这两个方法都可以隐藏元素. 先上一段html代码,然后进行操作. html代码 <!DOCTYPE html> <head> <title>aliens</title> <script src="./js/j

3种纯css方法控制元素隐藏显示

1.通过hover,也是最常用的方式.此方法要求按钮与被控制元素必须有层级关系.(兼容低端浏览器常用) <div class="nav-btn"> <h2>按钮</h2> <ul class="nav-box"> <li><a href="#">菜单1</a></li> <li><a href="#">菜单2

Android Fragment隐藏显示调用的方法

//在Activity中加载显示隐藏Fragment import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import com.commons.Config; import com.geluyawangluo.withtheni

让一个元素隐藏的12种方法

1.display:none 显示为无 2.visibility:hidden  隐藏 3.width\height 4.透明度 opacity:0 5.left\top 6.margin负值 7.用另一个div遮盖 8.z-index负值 9.transform:sale() 缩放 10.transform:translate() 位移 听说有12种方法,欢迎大家补充!!!

解决JQuery中datatables设置隐藏显示列多次提交后台刷新数据的问题

此次项目开发过程中用到了Jquery的Datatables插件,无疑他是数据列表展示,解决MVC中同步过程中先走控制器后返回视图,查询数据过程中无法提示等待的弊端, 而且他所提供的各种方法也都有较强的实用性.但是再好的程序也会有瑕疵,项目开发中就遇到了其提供的设置隐藏显示列的方法 table.fnSetColumnVis(colShowDic_key[i], true);//colShowDic_key[i]为列的索引.会多次提交刷新数据(有多少列会提交刷新多少次). 为解决这个问题尝试了很多种

jQuery判断元素是否显示与隐藏

jQuery判断一个元素是显示还是隐藏,jQuery使用is()方法来判断一个元素是否显示,反之则为隐藏 核心代码 if($("#username").is(":hidden")){ } 实例代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test.html</ti

使块元素并排显示和清除浮动的方法

使多个块元素并排显示: ①inline-block:内敛块,不占一行,但可以设置宽高属性,将块元素的display设置为inline-block,可以让多个div块横向显示.但是该用法下多个块之间会出现空格,是由于相邻两个</div>与<div>之间的换行符引起的,空格的清除办法: ①去掉换行符(不推荐):页面不美观 ②注释(不推荐):将换行部分注释掉 ③将上一行的>移到下一行(不推荐):页面不美观 ④将要并排显示的div添加父元素,并且给父元素div添加属性:font-si

jquery实现的点击页面其他地方隐藏显示的元素

jquery实现的点击页面其他地方隐藏显示的元素:在实际应用中,可能有这样的效果,那就是有这样一个弹出层,点击层本身的时候,这个层不会隐藏,而点击除去层之外的页面其他地方则会将这个层隐藏,下面就通过代码实例介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="

常用div操作以及隐藏显示方法

获取或者设置div的高度以及宽度  方法一:height和width函数,可以用于获取或者设置元素的高度以及宽度(val()获取参数的值,这种方法得到的值是整数)  CSS函数可以用于获取或者设置元素的高度和宽度(获取CSS("width"),设置css("width","200px")或者CSS({"width:200px","height:200px"})),这种方法得到的是已px结尾的字符串 需要注意