css隐藏元素的方法何区别

Posted cui-ting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css隐藏元素的方法何区别相关的知识,希望对你有一定的参考价值。

前言

用 CSS 隐藏页面元素有许多种方法。你可以将 opacity 设为 0、将 visibility 设为 hidden、将 display 设为 none 或者将 position 设为 absolute 然后将位置设到不可见区域。

但是每个方法之前是存在着细微的不同,这些不同决定了在一个特定的场合下使用哪一个方法。下面我的这篇文章就给大家解说一下他们之间的区别吧,让大家能根据场合来选择适合的方式.

 

Opacity

该属性的意思是检索或设置对象的不透明度当他的透明度为0的时候,视觉上它是消失了,但是他依然占据着那个位置,并对网页的布局起作用。它也将响应用户交互。添加了该属性的元素,它的背景和元素内容也是会跟着变化的.我们可以利用他的这一特性制作一些很棒的动画效果,我这边制作的一个简单的小效果,代码如下:

css代码:

技术图片
.green{
        width: 100px;
        height: 100px;
        background-color:#a0ee00;
        text-align: center;
        float: left;
        margin: 20px;
        line-height:100px;
    }
    .myDiv{
        opacity: 0;
        transition:all ease 1s;
    }
    .myDiv:hover{
        opacity: 1;
    }
    .show{
        opacity: 0;
        animation:showtime infinite 4s;
        -webkit-animation:showtime infinite 4s;
        -moz-animation:showtime infinite 4s;
        -o-animation:showtime infinite 4s;
    }
    @keyframes showtime{
        25%{
            opacity: 0.5;
        }
        50%{
            opacity: 1;
        }
        75%{
            opacity: 0.5;
        }
        100%{
            opacity: 0;
        }
    }
        @-webkit-keyframes showtime{
        25%{
            opacity: 0.5;
        }
        50%{
            opacity: 1;
        }
        75%{
            opacity: 0.5;
        }
        100%{
            opacity: 0;
        }
    }
        @-moz-keyframes showtime{
        25%{
            opacity: 0.5;
        }
        50%{
            opacity: 1;
        }
        75%{
            opacity: 0.5;
        }
        100%{
            opacity: 0;
        }
    }
        @-o-keyframes showtime{
        25%{
            opacity: 0.5;
        }
        50%{
            opacity: 1;
        }
        75%{
            opacity: 0.5;
        }
        100%{
            opacity: 0;
        }
    }
技术图片

 

html代码:

 

<div class="green">1</div>
<div class="myDiv green">2</div>
<div class="green">3</div>
<div class="show green">4</div>

 

注意:该属性是兼容IE9以上的浏览器,IE8 以及更早的版本支持替代的 filter 属性,例如: filter:Alpha(opacity=50)。

Display

该属性才是真正意义上的隐藏元素,当元素的display属性为none时,该元素就会就会从视觉中消失,并且连盒模型也不生成.也不会在页面占据任何位置,不但如此,就连它的子元素也会一同从盒子模型中消失。给他和它的子元素添加的任何动画效果交互效果都会不起作用。jq中的show(),hide(),toggle()方法就是通过改变display的值来实现变化效果的。

Visibility

 该属性类似opacity属性,该属性值为hidden的时候,元素将会隐藏,也会占据着自己的位置,并对网页的布局起作用,与 opacity 唯一不同的是它不会响应任何用户交互。此外,元素在读屏软件中也会被隐藏。这个属性也能够实现动画效果,只要它的初始和结束状态不一样。这确保了 visibility 状态切换之间的过渡动画可以是时间平滑的

注意:1.任何的版本的 Internet Explorer (包括 IE8)都不支持 "inherit" 和 "collapse" 属性值。

   2.如果一个元素的 visibility 被设置为 hidden,但是想要显示它的子元素,只要给想要显示的子元素添加visibility:visible;就可以了。尝试 hover 在隐藏元素上,不要 hover 在 p 标签里的数字上,你会发现你的鼠标光标没有变成手指头的样子。此时,你点击鼠标,你的 click 事件也不会被触发。而在 <div> 标签里面的 <p> 标签则依然可以捕获所有的鼠标事件。一旦你的鼠标移动到文字上,<div> 本身变得可见并且事件注册也随之生效。

Clip-path

该属性很少见,该属性是通过裁剪的方法实现隐藏的。被隐藏的内容依然占据着那个位置,它周围的元素的行为就如同它可见时一样。记住用户交互例如鼠标悬停或者点击在剪裁区域之外也不可能生效。此外,这个属性能够使用各种过渡动画来实现不同的效果。

注意:clip-path之所以没有很普及,是因为其浏览器兼容问题。在IE中是完全不支持的,所以,建议用的时候一定要加上内核前缀。

 css代码:

技术图片
.haorooms-small {
    background-size: cover;
    width: 300px;
    height: 300px;
    -webkit-clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);
    clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);
}
技术图片

html代码:

<div class="haorooms-small" style="background-image: url(‘http://sandbox.runjs.cn/uploads/rs/216/0y89gzo2/idtga8h3.png‘);">

 

Position

该属性的意义就是把元素脱离文档流移出视觉区域,添加该属性后既不会影响布局,又能让元素保持可以操作。应用该属性后,主要就是通过控制方向(top,left,right,bottom),达到一定的值,离开当前可是页面。

css代码:

 

.hide {

   position: absolute;

   top: -9999px;

   left: -9999px;

}

 

注意:你得避免使用这个方法去隐藏任何可以获得焦点的元素,因为如果那么做,当用户让那个元素获得焦点时,会导致一个不可预料的焦点切换。这个方法在创建自定义复选框和单选按钮时经常被使用。

 

结论:

这里介绍了5中方法,每种方法之间都是存在区别的,到底要用哪一种的话,就要视情况而定

以上是关于css隐藏元素的方法何区别的主要内容,如果未能解决你的问题,请参考以下文章

如何让html的某个元素隐藏,我们一般有三种方式:display:none, opacity:0, visibility:hidden。但这三种方式有何区别?

CSS中如何让元素隐藏?

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

隐藏元素的方法,都有啥区别?

CSS animation 与 CSS transition 有何区别

使用CSS隐藏HTML元素的4种常用方法