2D變形(css3)transform

轉(zhuǎn)換是CSS3中具有顛覆性的特征之一忿等,可以實(shí)現(xiàn)元素的位移栖忠、旋轉(zhuǎn)、變形贸街、縮放庵寞,甚至支持矩陣方式,配合過渡和即將學(xué)習(xí)的動(dòng)畫知識(shí)薛匪,可以取代大量之前只能靠Flash才可以實(shí)現(xiàn)的效果捐川。

變形轉(zhuǎn)換 transform :

移動(dòng) translate(x, y) translate(50px,50px);

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #ccc;
            /*transform: translate(x, y);x  y  可以是負(fù)值*/
            /*變形: 移動(dòng)*/
            transition: all 0.5s;/*當(dāng)點(diǎn)擊鼠標(biāo)時(shí),慢慢的移動(dòng)逸尖,松開鼠標(biāo)之后古沥,慢慢的回去*/
        }
        div:active { /*  a:active鼠標(biāo)點(diǎn)擊沒有松開的時(shí)候 觸發(fā)的狀態(tài)*/
            transform: translate(50px, 50px);/*當(dāng)點(diǎn)擊之后,移動(dòng)位置*/
            /*transform: translate(50px);只移動(dòng)x軸的情況這樣寫*/
            /*transform: translate(0,50px);只移動(dòng)y軸這樣寫*/
            /*transform: translateX(50px);也可以這樣寫娇跟,而且一般這樣寫*/
            /*transform: translateY(50px);也可以這樣寫*/
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

原本盒子在左上角:


image.png

當(dāng)鼠標(biāo)點(diǎn)擊沒有松開時(shí)岩齿,向右移動(dòng)50,向下移動(dòng)50:

image.png

案例:盒子水平垂直居中對(duì)齊的新寫法

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: #ccc;
            /*transform: translate(100px);水平移動(dòng)100*/
            /*transform: translate(50%);這樣寫的話苞俘,移動(dòng)的50%寬度是以他自身的寬度一半為準(zhǔn)的盹沈,也就是div的一半,200px/2=100px吃谣,而不是以父級(jí)或?yàn)g覽器的寬度的一半為準(zhǔn)*/
            /*以前我們定位的盒子居中對(duì)齊是先移動(dòng)父級(jí)的一半寬度乞封,再往回走自己寬度的一半,才能實(shí)現(xiàn)居中*/

            /*以前的居中是這樣寫的*/
             position: absolute;
             left: 50%; /* !*以父級(jí)寬度為準(zhǔn)*!*/
             top: 50%;
            /*margin-left: -100px;以前的居中是這樣寫的基协, 但是這樣寫的話就被寫死了歌亲,父級(jí)寬度如果改動(dòng)的話,這里也要改澜驮,他不會(huì)自動(dòng)變*/
           transform: translate(-50%, -50%); /*現(xiàn)在不需要再計(jì)算一半距離是多少陷揪,直接用50%就可以了*/
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>
image.png

縮放scale(x, y)

transform:scale(0.8, 1);這里如果括號(hào)里只寫一個(gè)數(shù)的話,就不像translate(x, y)一樣是默認(rèn)為x值了悍缠,scale()括號(hào)里如果只有一個(gè)值的話卦绣,是x y一起共同都是這個(gè)值

scale(X,Y)使元素水平方向和垂直方向同時(shí)縮放(也就是X軸和Y軸同時(shí)縮放)
scaleX(x)元素僅水平方向縮放(X軸縮放)
scaleY(y)元素僅垂直方向縮放(Y軸縮放)

scale()的取值默認(rèn)的值為1,當(dāng)值設(shè)置為0.01到0.99之間的任何值飞蚓,作用使一個(gè)元素縮新烁邸;而任何大于或等于1.01的值趴拧,作用是讓元素放大

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #ccc;
            margin: 100px auto;
            transition: all 0.5s;/* 漸變 x  y 軸都變 */
        }
        div:hover {
            transform: scale(1.2, 1.5); /* x 水平縮放 y垂直縮放 鼠標(biāo)經(jīng)過后放大溅漾,離開后復(fù)原,如果只有一個(gè)參數(shù)的話著榴,寬度添履、高度都縮放,可以做一些網(wǎng)站的鼠標(biāo)經(jīng)過后圖片放大的效果*/
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>
image.png
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        section {
            width: 632px;
            height: 340px;
            margin: 100px auto;
            border: 5px solid lightcoral;
            overflow: hidden;/*溢出隱藏脑又,變大的圖片超出邊框隱藏*/

        }
        section img {
            transition: all 0.2s;/*因?yàn)閳D片縮放了暮胧,是圖片做動(dòng)畫,所以過渡要加給img问麸,誰做動(dòng)畫往衷,誰加過渡,與section沒有關(guān)系*/
        }
        section:hover img {/*鼠標(biāo)經(jīng)過section之后严卖,他里面的img做以下動(dòng)作*/
            transform: scale(1.2);/*鼠標(biāo)經(jīng)過section后席舍,它里面的img放大1.2倍*/
        }
    </style>
</head>
<body>
<section>
    <img src="images/mi.jpg" alt="">
</section>
</body>
</html>

鼠標(biāo)經(jīng)過圖片后,圖片放大妄田,超出邊框的部分隱藏:

image.png

旋轉(zhuǎn) rotate(deg)

可以對(duì)元素進(jìn)行旋轉(zhuǎn)俺亮,正值為順時(shí)針,負(fù)值為逆時(shí)針疟呐;

<style>
        img {
            margin: 100px;
            transition: all 0.5s;
        }
        img:hover {
            transform: rotate(90deg);/*這里給 -90deg的話脚曾,就是逆時(shí)針旋轉(zhuǎn)*/
        }
    </style>
</head>
<body>
<section>
    <img src="images/chu.jpg" alt="">
</section>
</body>

鼠標(biāo)經(jīng)過后,圖片旋轉(zhuǎn)90度启具,并且是在0.5s的時(shí)間內(nèi)勻速旋轉(zhuǎn)

image.png

上面例子拓展:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {
            margin: 100px;
            transition: all 0.8s;/*過渡 所有條件都過渡*/
            border-radius: 50%; /*給圖片圓角*/
            border: 5px solid cadetblue;
        }
        img:hover {
            transform: rotate(360deg);/*旋轉(zhuǎn)的度數(shù)寫多少都可以本讥,720都行*/
        }
    </style>
</head>
<body>
<section>
    <img src="images/chu.jpg" alt="">
</section>
</body>
</html>

拓展練習(xí): 圖片變成圓角,加邊框鲁冯,并且順時(shí)針旋轉(zhuǎn)360度拷沸。

image.png

transform-origin 可以調(diào)整元素轉(zhuǎn)換變形的原點(diǎn),上面的圖片旋轉(zhuǎn)是圍繞中心點(diǎn)旋轉(zhuǎn)的薯演,也可以設(shè)置為圍繞其他點(diǎn)旋轉(zhuǎn)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {
            width: 200px;
            margin: 100px;
            transition: all 0.6s;
            transform-origin: top left;/*  origin:原點(diǎn)撞芍。transform-origin這個(gè)屬性默認(rèn)值是center  center 圍繞中心點(diǎn)旋轉(zhuǎn),修改成top  left之后跨扮,他就會(huì)圍繞左上角旋轉(zhuǎn) 如果要精確一些的話序无,可以寫成像素的:transform-origin: 20px 30px;*/
        }
        img:hover {
            transform: rotate(180deg);
        }
    </style>
</head>
<body>
<img src="images/pk1.png" alt="">
</body>
</html>
image.png

旋轉(zhuǎn)案例:


沿中心點(diǎn)旋轉(zhuǎn)效果
以上代碼不加transform-origin: top right;(圖片沿右上角旋轉(zhuǎn))的效果

image.png

代碼效果:沿右上角旋轉(zhuǎn)
加了transform-origin: top right;的效果

image.png


傾斜 skew(deg, deg)

通過skew方法把元素水平方向上傾斜30度验毡,處置方向保持不變。

可以使元素按一定的角度進(jìn)行傾斜帝嗡,可為負(fù)值晶通,第二個(gè)參數(shù)不寫默認(rèn)為0。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            font-size: 50px;
            font-weight: 700;
            margin: 100px;
            transition: all 0.7s;
        }
        div:hover {
            /*transform: skew(-30deg,0);*/
            transform: skew(0, -10deg);/*y軸這個(gè)值如果大了哟玷,他會(huì)跑掉狮辽,離開鼠標(biāo)能點(diǎn)到的地方又會(huì)跑回來*/
        }
    </style>
</head>
<body>
<div>
楚喬
</div>
</body>
</html>
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巢寡,隨后出現(xiàn)的幾起案子喉脖,更是在濱河造成了極大的恐慌,老刑警劉巖抑月,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件动看,死亡現(xiàn)場離奇詭異,居然都是意外死亡爪幻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門须误,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挨稿,“玉大人,你說我怎么就攤上這事京痢∧谈剩” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵祭椰,是天一觀的道長臭家。 經(jīng)常有香客問我,道長方淤,這世上最難降的妖魔是什么钉赁? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮携茂,結(jié)果婚禮上你踩,老公的妹妹穿的比我還像新娘。我一直安慰自己讳苦,他們只是感情好带膜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸳谜,像睡著了一般膝藕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咐扭,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天芭挽,我揣著相機(jī)與錄音滑废,去河邊找鬼。 笑死览绿,一個(gè)胖子當(dāng)著我的面吹牛策严,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饿敲,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼妻导,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了怀各?” 一聲冷哼從身側(cè)響起倔韭,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓢对,沒想到半個(gè)月后寿酌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硕蛹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年醇疼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片法焰。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秧荆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出埃仪,到底是詐尸還是另有隱情乙濒,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布卵蛉,位于F島的核電站颁股,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏傻丝。R本人自食惡果不足惜甘有,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葡缰。 院中可真熱鬧梧疲,春花似錦、人聲如沸运准。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胁澳。三九已至该互,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韭畸,已是汗流浹背宇智。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工蔓搞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人随橘。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓喂分,卻偏偏與公主長得像,于是被迫代替她去往敵國和親机蔗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒲祈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容