animation-name: test;
animation-duration: 4s;
animation-delay: 2s;
animation-iteration-count: 1;
animation-direction: alternate-reverse;
animation-play-state: paused;
animation-fill-mode: both;
animation: test 2s 2 1s alternate;
@keyframes test {
/* from表示動畫的開始位置 也可以使用 0% */
from{
margin-left: 0;
background-color: orange;
}
/* to動畫的結束位置 也可以使用100%*/
to{
background-color: red;
margin-left: 700px;
}
}
transform: translateY(-100px);
perspective: 800px;
transform: translateZ(800px);
transform: rotateY(180deg);
/* 是否顯示元素的背面 */
backface-visibility: hidden;
transform-origin:20px 20px;
transform:scale(2)
background-color: #bfa;
background-image: url("./img/1.png");
background-position: center;
background-position: -50px 300px;
background-origin: border-box;
background-clip: content-box;
background-size: contain;
SS3的transform屬性可以縮放、傾斜和旋轉任何元素。在沒有任何瀏覽器前綴的前提下,這個屬性已經被所有的現代瀏覽器所支持。如果想支持黑莓瀏覽器和安卓版的UC瀏覽器,你就需要添加-webkit-前綴了。
#myelement{ -webkit-transform:rotate(30deg); transform:rotate(30deg); }
完美!然而,當你使用上述代碼時,你會發現元素的內容、邊框、背景圖片都會發生旋轉。那么,怎樣才能只旋轉背景圖片呢?怎樣才能只讓元素本身旋轉,而讓其背景圖片位置固定呢?
目前,W3C還沒有專門變形背景圖片的屬性。我相信在不久的將來肯定會出現這個非常實用的屬性。但是對于現在想實現相同效果的開發者們來說毫無幫助。
萬幸,這里有個解決方法。其實,就是一個給父級容器元素before偽元素或者after偽元素添加背景圖片的hack。這時,我們就可以獨立控制帶有背景圖片偽元素的變形。
只變形背景
為了控制偽元素在其父級容器內定位,其父級容器元素必須設置相對定位(position:relative)。為了防止背景溢出,你也需要給容器元素設置overflow:hidden;
#myelement{ position:relative; overflow:hidden; }
現在,我們來創建一個具有可以變形背景的絕對定位的偽元素。將偽元素的層級設置為-1(z-index:-1),保證其不遮蓋內容。
#myelement:before{ content:''; position:absolute; width:200%; height:200%; top:-50%; left:-50%; z-index:-1; background:url(background.png) 0 0 repeate; -webkit-transform:rotate(30deg); transform:rotate(30deg); }
注意,你需要調整偽元素的寬度、高度和定位。比如,當你使用重復圖片做背景時,旋轉的區域必須比其所在容器面積大,以此保證全部覆蓋容器背景。
固定一個變形元素的背景
父級容器上的所有變形樣式都會繼承到其偽元素。因此,我們需要撤銷其偽元素的變形樣式。例如,如果容器旋轉30deg,其偽元素背景必須旋轉-30deg,這樣背景才能固定到某個位置。
#myelement{ position:relative; overflow:hidden; -webkit-transform:rotate(30deg); transform:rotate(30deg); } #myelement:before{ content:''; position:absolute; width:200%; height:200%; top:-50%; left:-50%; z-index:-1; background:url(background.png) 0 0 repeat; -webkit-transform:rotate(-30deg); transform:rotate(-30deg); }
當然,你仍然需要調整偽元素背景的尺寸和位置,使其完全覆蓋父級容器。
下面是CodePen上的相關實例:
https://codepen.io/SitePoint/pen/Ngpvwx
這種方法支持所有標準瀏覽器、edge、IE9~IE11。在IE8中不會有任何變形樣式,但是背景圖仍然顯示。
IE6和IE7不支持偽元素,因此背景圖不會顯示。然而,為了支持那些古老的瀏覽器,你可以直接給容器設置背景圖而不是用先進的選擇器或者一定條件的CSS將容器的背景設置為空。
大量創造性的應用都用到了CSS3的變形屬性。您有相關分享嗎?
本文由大前端學堂編譯出品,原文來自sitepoint,作者Craig Buckler,若轉載請注明出處,轉發感激不盡。
使用 transform 控制元素的變形,包括控制移動、旋轉、傾斜、3D轉換等。
下面是CSS提供的變形動作。
position: absolute;
left: 50%;
top: 50%;
/* margin-left: -100px;
margin-top: -100px; */
transform: translate(-50%, -50%);
width: 300px;
height: 300px;
變形參考點,設置元素的 X/YZ 操作的基點,用于控制旋轉、傾斜等操作
屬性值為:top、bottom、left、right、center 或者是 百分數 | 具體數值
默認值: center center
transform-origin: left center 300px;
控制元素的透視深度
推薦設置作為函數設置,規避透視造成元素大小不一致:transform: perspective(600px);
三維空間視角,對元素設置 Z軸 效果時需要呈現三維空間效果
transform-style: preserve-3d;
控制視線的角度,就像我們眼睛看物體時的聚焦點
需要設置 perspective 規則才能看到效果
控制是否可以看到元素的背面
可選屬性:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。