CSS
2D-omvandlingar
Sök…
Syntax
- Rotera omformning
- transform: rotera (<angle>)
- Översätt Transform
- transform: translate (<length-or-percentage> [, <length-or-percentage>]?)
- transform: translateX (<length-or-percentage>)
- transform: translateY (<length-or-percentage>)
- Skew Transform
- transform: skew (<angle> [, <angle>]?)
- transform: skewX (<angle>)
- transform: skewY (<angle>)
- Skala Transform
- transform: skala (<skala-faktor> [, <skala-faktor>]?)
- transform: skalaX (<skala-faktor>)
- transform: skalaY (<skala-faktor>)
- Matrix Transform
- transform: matris (<nummer> [, <nummer>] {5,5})
parametrar
Funktion / parameter | detaljer |
---|---|
rotate(x) | Definierar en transformation som rör elementet runt en fast punkt på Z-axeln |
translate(x,y) | Flyttar elementets position på X- och Y-axeln |
translateX(x) | Flyttar elementets position på X-axeln |
translateY(y) | Flyttar positionen för elementet på Y-axeln |
scale(x,y) | Ändrar storleken på elementet på X- och Y-axeln |
scaleX(x) | Ändrar storleken på elementet på X-axeln |
scaleY(y) | Ändrar storleken på elementet på Y-axeln |
skew(x,y) | Skjuvmappning eller transvektion, förvrängning av varje punkt i ett element med en viss vinkel i varje riktning |
skewX(x) | Horisontell skjuvningskartläggning som snedvrider varje punkt i ett element med en viss vinkel i horisontell riktning |
skewY(y) | Vertikal skjuvningskartläggning som snedvrider varje punkt i ett element med en viss vinkel i vertikal riktning |
matrix() | Definierar en 2D-transformation i form av en transformationsmatris. |
vinkel | Vinkeln med vilken elementet ska roteras eller skevas (beroende på vilken funktion det används). Vinkel kan tillhandahållas i grader ( deg ), gradier ( grad ), radianer ( rad ) eller svängar ( turn ). I funktionen skew() är den andra vinkeln valfri. Om det inte tillhandahålls kommer det inte att ske (0) skev i Y-axeln. |
längd-eller-procentandel | Avståndet uttryckt som en längd eller en procentandel med vilken elementet ska översättas. I funktionen translate() är den andra längden eller procenten valfri. Om det inte tillhandahålls skulle det inte finnas någon (0) översättning i Y-axeln. |
skalfaktor | Ett nummer som definierar hur många gånger elementet ska skalas i den angivna axeln. I funktionen scale() är den andra skalfaktorn valfri. Om den inte tillhandahålls kommer den första skalfaktorn att tillämpas även för Y-axeln. |
Anmärkningar
2D-koordiantsystem
Transformationer görs enligt ett 2D X / Y-koordinatsystem. X-axeln går från höger till vänster och Y-axeln går nedåt som visas i följande bild:
Så en positiv translateY()
går nedåt och en positiv translateX()
går rätt.
Webbläsarsupport och prefix
- IE stöder den här egenskapen eftersom IE9 med
-ms-
prefixet. Äldre versioner och Edge behöver inte prefixet - Firefox stöder den sedan version 3.5 och behöver prefixet
-moz-
tills version 15 - Chrome sedan version 4 och tills version 34 behöver
-webkit-
prefixet - Safari behöver
-webkit-
prefixet tills version 8 - Opera behöver
-o-
prefixet för version 11.5 och-webkit-
prefixet från version 15 till 22 - Android behöver
-webkit-
prefixet från version 2.1 till 4.4.4
Exempel på prefixad transform:
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
Rotera
html
<div class="rotate"></div>
CSS
.rotate {
width: 100px;
height: 100px;
background: teal;
transform: rotate(45deg);
}
Detta exempel roterar div med 45 grader medurs. Rotationscentret är i mitten av div, 50%
från vänster och 50%
från toppen. Du kan ändra rotationscentrumet genom att ställa in egenskapen för transform-origin
.
transform-origin: 100% 50%;
Exemplet ovan kommer att ställa in rotationscentret på mitten av höger sida.
Skala
html
<div class="scale"></div>
CSS
.scale {
width: 100px;
height: 100px;
background: teal;
transform: scale(0.5, 1.3);
}
Detta exempel 100px * 0.5 = 50px
div till 100px * 0.5 = 50px
på X-axeln och till 100px * 1.3 = 130px
på Y-axeln.
Transformans centrum är i divets centrum, 50%
från vänster och 50%
från toppen.
Översätt
html
<div class="translate"></div>
CSS
.translate {
width: 100px;
height: 100px;
background: teal;
transform: translate(200px, 50%);
}
Detta exempel kommer att flytta div med 200px på X-axeln och med 100px * 50% = 50px
på Y-axeln.
Du kan också ange översättningar på en enda axel.
På X-axeln:
.translate {
transform: translateX(200px);
}
På Y-axeln:
.translate {
transform: translateY(50%);
}
Skev
html
<div class="skew"></div>
CSS
.skew {
width: 100px;
height: 100px;
background: teal;
transform: skew(20deg, -30deg);
}
Detta exempel kommer att skeva div med 20 grader på X-axeln och med - 30 grader på Y-axeln.
Transformans centrum är i divets centrum, 50%
från vänster och 50%
från toppen.
Se resultatet här .
Flera omvandlingar
Flera omvandlingar kan tillämpas på ett element i en egenskap som denna:
transform: rotate(15deg) translateX(200px);
Detta roterar elementet 15 grader medurs och översätter det sedan 200px till höger.
I kedjade transformationer rör sig koordinatsystemet med elementet . Detta betyder att översättningen inte kommer att vara horisontell men på en axel rotera 15 grader medsols som visas i följande bild:
Om du ändrar ordningen på transformerna ändras utgången. Det första exemplet kommer att vara annorlunda än
transform: translateX(200px) rotate(15deg);
<div class="transform"></div>
.transform {
transform: rotate(15deg) translateX(200px);
}
Som visas på denna bild:
Transform Origin
Transformationer görs med avseende på en punkt som definieras av egenskapen transform-origin
.
Egenskapen har två värden: transform-origin: XY;
I följande exempel roterar den första div ( .tl
) runt det övre vänstra hörnet med transform-origin: 0 0;
och den andra ( .tr
) transformeras runt det övre högra hörnet med transform-origin: 100% 0
. Rotationen tillämpas på svävaren :
HTML:
<div class="transform originl"></div>
<div class="transform origin2"></div>
CSS:
.transform {
display: inline-block;
width: 200px;
height: 100px;
background: teal;
transition: transform 1s;
}
.origin1 {
transform-origin: 0 0;
}
.origin2 {
transform-origin: 100% 0;
}
.transform:hover {
transform: rotate(30deg);
}
Standardvärdet för egenskapen transform-origin är 50% 50%
vilket är elementet i mitten.