1. 程式人生 > >css隱藏元素的方法何區別

css隱藏元素的方法何區別

給他 .sh 方法 float 交互效果 方式 之前 自定義 兼容ie

前言

用 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隱藏元素的方法何區別