css3学习之2D转换功能详解
YPE html>
å‰è¨€
CSS3æä¾›äº†2D转æ¢åŠŸèƒ½ï¼Œèƒ½å¤Ÿå¯¹å…ƒç´ è¿›è¡Œç§»åŠ¨ã€ç¼©æ”¾å’Œè½¬åЍç‰åŠŸèƒ½ã€‚
2D转æ¢çš„属性å为transform,使用方法为transform:method(value)。
2Dè½¬æ¢æ–¹æ³•有translateã€scaleã€rotateã€skewã€matrix,还有基于这些分支出的translateXã€scaleYç‰ã€‚
这里,我将会介ç»åˆ°ä»¥ä¸‹è½¬æ¢æ–¹æ³•:
- translate()
- rotate()
- scale()
- skew()Â
首先,我们先æ’入一个简å•çš„html代ç
Css3çš„2Dè½¬æ¢ ![]()
è¿™æ®µä»£ç æˆ‘们å¯ä»¥å®žçŽ°åœ¨ä¸€ä¸ªdivé‡Œæ”¾ä¸€å¼ å›¾ç‰‡ï¼Œé€šè¿‡è¿™å¼ å›¾ç‰‡ä»¥ä¾¿äºŽå‘大家介ç»ä»¥ä¸‹æ–¹æ³•。
1.translate()方法:这个方法里å¯ä»¥æœ‰ä¸¤ä¸ªå‚数,ä¸é—´ç”¨åˆ†å·éš”开,分别表示沿ç€Xè½´å’ŒY轴移动的è·ç¦»ï¼Œè¿™ä¸ªè·ç¦»æ˜¯ç›¸å¯¹äºŽè¯¥å›¾ç‰‡çš„移动è·ç¦»ï¼Œä¸”å‘å³ä¸ºXè½´çš„æ£æ–¹å‘,å‘下为Yè½´çš„æ£æ–¹å‘。下é¢çš„代ç 表示将图片å‘å³ç§»åЍ100px,å‘下也移动100。  
img{ margin:100px 0 0 100px; transform:translate(100px,100px); }
2.rotate()æ–¹æ³•ï¼šè¿™ä¸ªæ–¹æ³•é‡Œæœ‰ä¸€ä¸ªå‚æ•°ï¼Œè¡¨ç¤ºè¦æ—‹è½¬çš„åº¦æ•°ï¼Œæ£æ•°è¡¨ç¤ºé¡ºæ—¶é’ˆæ—‹è½¬ï¼Œé‚£ä¹ˆè´Ÿæ•°å°±è¡¨ç¤ºé€†æ—¶é’ˆæ—‹è½¬äº†ã€‚åœ¨è¦æ—‹è½¬çš„度数åŽé¢æ·»åŠ deg (å³degreeï¼Œåº¦æ•°çš„æ„æ€ï¼‰ã€‚以下代ç 表示将图片顺时针旋转50°。
img{ margin:100px 0 0 100px; transform:rotate(50deg); ï½
3.scale()æ–¹æ³•ï¼šè¿™ä¸ªæ–¹æ³•é‡Œæœ‰ä¸¤ä¸ªå‚æ•°ï¼Œæ²¡æœ‰å•ä½ã€‚分别表示宽度和高度放大或缩å°çš„倿•°ï¼Œå¦‚果大于1表示放大;如果å°äºŽä¸€è¡¨ç¤ºç¼©å°ã€‚以下代ç 表示将图片的宽度和高度都放大两å€ã€‚
img{ margin:100px 0 0 100px; transform:scale(2,2); }
4.skewï¼ˆï¼‰æ–¹æ³•ï¼šæœ‰ä¸¤ä¸ªå‚æ•°ï¼Œåˆ†åˆ«è¡¨ç¤ºæ²¿ç€Xè½´å’ŒY轴倾斜转æ¢ï¼Œå•ä½åŒæ ·æ˜¯degï¼Œè¡¨ç¤ºè§’åº¦ã€‚è¿™ä¸ªæ–¹æ³•ä¸æ˜¯å¾ˆå®¹æ˜“ç†è§£ã€‚首先给出下列代ç :
img{ margin:100px 0 0 100px; transform:skew(20deg,0deg); ï½
表示将图片沿ç€x轴逆时针旋转20度。
这是没有使用skewï¼ˆï¼‰æ–¹æ³•çš„æ ·å
这是使用了skew()方法之åŽçš„æ ·å。
ä¸ºä»€ä¹ˆå‘¢ï¼Ÿè¿™æ˜¯å› ä¸ºå…¶xè½´å’ŒYè½´çš„æ–¹å‘æ˜¯è¿™æ ·çš„:
当x轴旋转20°时会将图片进行逆时针旋转,但是请注æ„ï¼šè¿™é‡Œä¸æ˜¯çœŸæ£æ„ä¹‰ä¸Šçš„æ—‹è½¬ï¼Œè€Œæœ‰æ‹‰ä¼¸å€¾æ–œçš„æ„æ€ï¼Œæ—‹è½¬ä¹‹åŽï¼Œå®ƒçš„宽度并没有改å˜ï¼Œå¹¶ä¸”åšä¸€æ¡åž‚线å¯ä»¥å‘现高也是没有改å˜çš„。
对于Yè½´æ–¹å‘çš„æ—‹è½¬æ˜¯ä¸€æ ·çš„ï¼š
img{ margin:100px 0 0 100px; transform:skew(0deg,20deg); ï½
上é¢çš„代ç 表示将图片沿ç€Yè½´æ–¹å‘æ—‹è½¬äº†20°。
旋转之åŽï¼Œå°±æ˜¯ä¸‹é¢è¿™æ ·äº†ï¼šå®ƒæ˜¯æ²¿ç€é¡ºæ—¶é’ˆæ–¹å‘旋转的。
如果,我们对x和y轴都旋转呢?
img{ margin:100px 0 0 100px; transform:skew(20deg,20deg); ï½
那么最终就是综åˆä½œç”¨çš„æ•ˆæžœäº†ï¼Œå¦‚下图所示:
说了这么多,大家有没有å‘çŽ°æˆ‘ä»¬æ¯æ¬¡åç§»ï¼Œæ—‹è½¬ï¼Œå€¾æ–œï¼Œæ”¾å¤§å’Œç¼©å°æ˜¯ç›¸å¯¹äºŽå“ªä¸ªç‚¹å‘¢ï¼Ÿ
å¦‚æžœä½ ç¨å¾®ç»†å¿ƒçš„è¯ï¼Œå°±ä¼šå‘现是相对于ä¸å¿ƒç‚¹ã€‚这里就è¦ç”¨åˆ°tansform-origin属性了。
å³é€šè¿‡è¿™ä¸ªå±žæ€§ï¼Œæˆ‘们å¯ä»¥è§„定这些方法通过哪一个点作为原点。
é¦–å…ˆä¸¾å‡ ä¸ªä¾‹å。
transform-origin:0 0;表示以左上角为原点。
transform-origin:100% 0;表示以å³ä¸Šè§’为原点
transform-origin:0 100%;表示以左下角为原点
transform-origin:100% 100%;表示以å³ä¸‹è§’为原点
于是我们å¯ä»¥å¾—知,这些值的设定是以左上角为基点的,å‘å³ä¸ºxè½´çš„æ£æ–¹å‘,å‘下为yè½´çš„æ£æ–¹å‘。如果ä¸è®¾å®šè¿™ä¸ªå±žæ€§ï¼Œé‚£ä¹ˆé»˜è®¤å€¼ä¸º
transform-origin:50% 50%;å³ä»¥ä¸å¿ƒä½œä¸ºå˜æ¢çš„基点。
æœ€åŽæˆ‘还è¦è¯´ä¸€ä¸‹æµè§ˆå™¨å…¼å®¹çš„问题,为了使代ç 能在å„个æµè§ˆå™¨è¿è¡ŒæˆåŠŸï¼Œæˆ‘ä»¬éœ€è¦åœ¨å±‚å æ ·å¼è¡¨ä¸å¤šåŠ å‡ è¡Œä»£ç ,比如说rotate()方法:
transform: rotate(30deg); -ms-transform: rotate(30deg); /* IE 9 */ -webkit-transform: rotate(30deg); /* Safari and Chrome */ -o-transform: rotate(30deg); /* Opera */ -moz-transform: rotate(30deg); /* Firefox */
è¿™æ ·ï¼Œæˆ‘ä»¬å°±å¯ä»¥åœ¨å„ä¸ªä¸»è¦æµè§ˆå™¨æµç•…è¿è¡Œäº†ï¼
总结
ä»¥ä¸Šå°±æ˜¯è¿™ç¯‡æ–‡ç« çš„å…¨éƒ¨å†…å®¹äº†ï¼Œå¸Œæœ›æœ¬æ–‡çš„å†…å®¹å¯¹å„ä½å¦ä¹ 或者使用CSS3能带æ¥ä¸€å®šçš„帮助,如果有疑问大家å¯ä»¥ç•™è¨€äº¤æµã€‚