CSS Clip屬性

目錄

一、什麼是Clip屬性 2

1、定義及用法 2

2、 瀏覽器支持 4

二、 Rect()使用 4

1、 基本語法 4

2、 實例解析 5

3、 案例 8

 

 

一、什麼是Clip屬性

1、定義及用法

①定義

該屬性用於剪裁絕對定位元素。

 

當一幅圖像的尺寸大於包含它的元素時會發生什麼呢?"clip" 屬性允許您規定一個元素的可見尺寸,這樣此元素就會被修剪並顯示爲這個形狀。

                                          --------解釋來源於W3school.com

 

 

通俗一點來說就是:通過使用該屬性可以對某一個元素進行剪裁,只會顯示剪裁後的部分

 

舉個實栗子:

img

  {

  position:absolute;

  clip:rect(0px,60px,200px,0px);

  }

 

<html>
<head>
<style type="text/css">
img 
{
position:absolute;
clip:rect(0px 50px 200px 0px)
}
</style>
</head>

<body>
<p>clip 屬性剪切了一幅圖像:</p>
<p><img border="0" src="/i/eg_bookasp.gif" width="120" height="151"></p>
</body>

</html>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

圖中的書的整張圖被Clip剪切了,只顯示了被剪裁的部分

 

 

②用法

 

這個屬性用於定義一個剪裁矩形。clip屬性只能在元素設置了“position:absolute”或者“position:fixed”屬性起作用。clip無法在設置“position:relative”和“position:static”上發揮作用。

 

 

默認值:

auto

繼承性:

no

版本:

CSS2

JavaScript 語法:

object.style.clip="rect(0px,50px,50px,0px)"

 

可能的值

描述

shape

shape是一個函數功能,設置元素的形狀。唯一合法的形狀值是:rect (toprightbottomleft)

auto

這是一個默認值,clip設置auto值和沒有進行剪切是一樣的效果。

inherit

規定應該從父元素繼承 clip 屬性的值。

 

 

 

  1. 瀏覽器支持

 

所有主流瀏覽器都支持 clip 屬性。

 

註釋:任何的版本的 Internet Explorer (包括 IE8)都不支持屬性值 "inherit"。

 

 

  • Rect()使用
  1. 基本語法

rect()需要設置四個值:top, right, bottom和left。

rect()屬性值和margin、padding以及bodrder都遵循TRBL順時針旋轉的規則。

rect (top, right, bottom, left);

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

在CSS2.1中,rect()和<top>和<bottom>指定偏移量是從元素盒子頂部邊緣算起;<left>和<right>指定的偏移量是從元素盒子左邊邊緣算起。

 

 

 

來張圖片你就懂了

 

 

    

 

 

  1. 實例解析

在50X55px的長方形盒子中是行剪切,得到虛線的長方形:

 

p#one { clip: rect(5px, 40px, 45px, 5px); }

p#two { clip: rect(5px, 55px, 45px, 5px); }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

<top>, <right>, <bottom>, <left>可以將值設置爲“auto”或者長度值<length>,還可以充許負的長度值。

<top>和<left>的值爲auto時,就相當於top和left取值爲0;

<right>和<bottom>的值auto時,就相當於元素的寬度(這個寬度包括元素的border、padding和width),或者簡單的理解爲100%。

 

 

舉個栗子:

 

top取值爲0時

.rect6 img {

  clip: rect(13px, auto, 161px, 30px);}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

 

 

left取值爲0

 

.rect7 img {

  clip: rect(13px, 164px, auto, 30px);}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

 

 

 

注意:

特殊情況:rect()中的bottom值小於top值,或者right值小於left值時

拿這張圖舉例:

 

 

Left應該是在right的左邊,結果現在left的值還比right大,也就是說現在left跑到了right的右邊

 

 

這似乎有點不符合邏輯,那這樣的話會怎樣顯示呢?

 

 

我們假設這是一張這張圖,把left這條邊取名爲A,right這條邊取名爲B(方便區分而已)

假設A在B的左邊的時候爲正常放置在桌面上,能完全看到照片是什麼,然兒現在A卻在B的右邊,也就是相當於把照片翻了過來,現在這張照片你會看不到它是什麼。

 

所以當rect()中的bottom值小於top值,或者right值小於left值時不顯示剪切區域

 

  1. 案例

 

通過clip實現行內sprites的效果

 

要製作上圖的一個效果,一般來說都是使用三個圖來製作,現在我們可以使用clip屬性在行內使用sprites圖來實現上圖的效果,至於這兩者的區別看看對比圖就都能知道了。

 

 

通過使用clip屬性讓三張圖合三爲一,能降低圖片總大小,減少對瀏覽器的負擔

 

代碼部分:


 

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>clip demo</title> 
<style> 
* { 
margin:0; 
padding: 0; 
} 


#wrapper { 
position: relative; 
width: 386px; 
margin:50px auto; 
list-style: none outside none; 
} 
#wrapper li { 
width: 128px; 
height: 128px; 
float: left; 
position: relative; 
} 
.icons { 
position:absolute; 
top:0; 
left:0; 
} 


.happy { 
clip: rect(0 256px 128px 128px); 
left:-128px; 
} 


.angry { 
clip: rect(0 384px 128px 256px); 
left:-256px; 
} 


.sad { 
clip: rect(0 128px 128px 0); 
} 
</style> 
</head> 
<body> 
<ul id="wrapper"> 
<li><img src="icons.png" alt="Happy Icon" class="icons happy" /></li> 
<li><img src="icons.png" alt="Sad Icon" class="icons sad" /></li> 
<li><img src="icons.png" alt="Angry Icon" class="icons angry" /></li> 
</ul> 




</body> 
</html>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

實例

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章