關(guān)于css中transform屬性中matrix的理解

<a href="#main">前面又一些對你可能不是特別重要的前言,你可以點擊我跳過。</a>

很久以前接了一個項目坷襟,里面需要用到一些字體小于12px的字,然后發(fā)現(xiàn)chrome不支持生年,當(dāng)時是一個個用transform:scale()改過來的婴程,并且判斷每個瀏覽器是不是chrome。然后在不久前準(zhǔn)備做一個小小的js庫來直接引用然后讓其效果和火狐這種支持小字體的瀏覽器一樣抱婉。十幾天前還不支持小字體的chrome在今天突然就支持了小字體档叔。wcnm。

然后項目就變成了 “如何讓使用transform:scale(0.5)獲得的小字體的顯示效果和直接使用了font-size:6px;的效果一樣蒸绩《灼眩”期間遇到了使用element.style.fontSize只能夠獲取寫在標(biāo)簽內(nèi)的樣式的問題,以及關(guān)于transform中的矩陣的問題侵贵。

通過正常的js代碼也就是element.style.fontSize這種是無法獲取到寫在style標(biāo)簽以及css文件里面的屬性的届搁,那么我們應(yīng)當(dāng)如何獲得呢?

可以使用window.getComputedStyle這個方法窍育。
example:

CSS文件中有:
.height_width_chrome{
    -webkit-transform:scale(0.5);
}
js文件中這么獲瓤馈:
var test2=document.getElementsByClassName('height_width_chrome');
var transform=window.getComputedStyle(test2[0],null).getPropertyValue("transform");

以字符串的形式返回,getPropertyValue里面直接寫css里面的屬性名就行了漱抓,感興趣的可以詳細(xì)了解這個方法表锻。

現(xiàn)在問題又來了,得到transform之后乞娄,console.log會在控制臺看到
matrix(0.5, 0, 0, 0.5, 0, 0)瞬逊,也就是這個值包含了所有的transform變換在里面显歧。那么這個是什么意思呢?

<a name=main>關(guān)于transform中的matrix</a>

對了确镊,你可能需要先看張鑫旭張大神的文章士骤,他解釋的比我好很多,我的這篇文章可能只是想講出我自己的想法蕾域。奉上鏈接...

首先拷肌,我們所有看到的東西都可以視為圖片,例如旨巷,我們對于一個有長寬的div進(jìn)行縮放巨缘,那么我們可以將這個div視為一張圖片,當(dāng)你縮小為0.5倍的時候采呐,那么面積就變?yōu)?/4倍若锁,并且這個縮放是有中心點的,中心點的聞之可以用transform-origin:100px 200px;來更改斧吐。

然后圖像是由一個個的像素點所構(gòu)成的拴清,那么偏移指的就是圖片中的每一個像素點按照指定的規(guī)則進(jìn)行偏移,假設(shè)原本的位置為(x,y)那么偏移后的位置則為(x+30,y+30)会通,這個可以認(rèn)同吧口予?

然后是縮放,由于縮放是有縮放算法的涕侈,可以去了解了解沪停。

但是縮放的話我們可以這么想象,一幅圖片寬高縮小為0.5倍裳涛,那么面積會變成1/4木张,這個在整體的情況下是可以很容易就想出來的,但是當(dāng)你去細(xì)究的時候端三,你會發(fā)現(xiàn)舷礼,無論怎么說,屏幕都是一個個像素點組成的郊闯,jpg妻献,png等圖片也是一個個的像素點組成的,然后像素點的寬高根據(jù)你的屏幕分辨率來說確定的团赁,也就是說沒有0.5px這種說法育拨,那么是怎么將寬度縮小為原來的一般的?是直接丟棄一些像素點欢摄?很明顯的不是熬丧,縮放是有特定的算法的,屬于圖像處理的部分怀挠。

但是關(guān)于transform:scale這個的縮放析蝴,我們可以直接從宏觀的方面考慮害捕,都學(xué)過坐標(biāo)吧?每個坐標(biāo)都擁有最小的單位長度闷畸,縮放呢尝盼,就只是將單位長度進(jìn)行縮放(也就是說我們允許用0.5px做為單位長度1,但是實際情況不是的腾啥。有興趣的同學(xué)可以去查查圖像處理里面的縮放。)冯吓,數(shù)值并不進(jìn)行改變倘待,這也就會使得你在用js獲取這個的寬高的時候會發(fā)現(xiàn),他們的寬高的數(shù)值并沒有改變组贺,但是在視覺上改變了凸舵。

關(guān)于旋轉(zhuǎn),我們可以用極坐標(biāo)的方式進(jìn)行計算失尖“⊙伲可以看圖:

F76EDBBD6C7FAF47A37F2C30165BAC29.jpg

好了,前面的一些解釋可以和下面的進(jìn)行印證掀潮。
話說我們獲得了matrix(0.5, 0, 0, 0.5, 0, 0)菇夸,這個代表了縮小為0.5倍。首先用字母替代(看了張大佬的文章仪吧,感覺這篇文章里面充斥了他的做法庄新。)matrix(a,b,c,d,e,f)。
那么a,d代表縮放薯鼠,分別為x&y軸上的縮放择诈,transform:scale(x,y),scale是支持x出皇,y方向不同縮放大小的羞芍。
e,f代表從原點的偏移,transform: translate(30px, 35px);像這樣郊艘,表示每一個像素x方向加30px荷科,y方向加35px;
a,b,c,d則可代表著旋轉(zhuǎn)。分別為cosθ,sinθ,-sinθ,cosθ纱注。transform:ratate(7deg)就是順時針旋轉(zhuǎn)7度步做。

抱歉,這篇文章由于隔了太長的時間了奈附,可能需要點時間自己去填坑全度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斥滤,隨后出現(xiàn)的幾起案子将鸵,更是在濱河造成了極大的恐慌勉盅,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顶掉,死亡現(xiàn)場離奇詭異草娜,居然都是意外死亡,警方通過查閱死者的電腦和手機痒筒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門宰闰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人簿透,你說我怎么就攤上這事移袍。” “怎么了老充?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵葡盗,是天一觀的道長。 經(jīng)常有香客問我啡浊,道長觅够,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任巷嚣,我火速辦了婚禮喘先,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘廷粒。我一直安慰自己苹祟,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布评雌。 她就那樣靜靜地躺著树枫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪景东。 梳的紋絲不亂的頭發(fā)上砂轻,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音斤吐,去河邊找鬼搔涝。 笑死,一個胖子當(dāng)著我的面吹牛和措,可吹牛的內(nèi)容都是我干的庄呈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼派阱,長吁一口氣:“原來是場噩夢啊……” “哼诬留!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤文兑,失蹤者是張志新(化名)和其女友劉穎盒刚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿贞,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡因块,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了籍铁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涡上。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拒名,靈堂內(nèi)的尸體忽然破棺而出吩愧,到底是詐尸還是另有隱情,我是刑警寧澤靡狞,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布耻警,位于F島的核電站隔嫡,受9級特大地震影響甸怕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腮恩,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一梢杭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秸滴,春花似錦武契、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至释液,卻和暖如春全释,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背误债。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工浸船, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寝蹈。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓李命,卻偏偏與公主長得像,于是被迫代替她去往敵國和親箫老。 傳聞我的和親對象是個殘疾皇子封字,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • Transform字面上就是變形,改變的意思。在CSS3中transform主要包括以下幾種:旋轉(zhuǎn)rotate周叮、扭...
    hzrWeber閱讀 22,132評論 0 19
  • 手勢圖片控件 PinchImageView 點擊圖片框架 photoView packagecom.example...
    Ztufu閱讀 723評論 0 1
  • CSS Transform(上:2D Transform) 前言及Transform 基本介紹 MDN官方文檔介紹...
    Cruyun閱讀 1,522評論 0 3
  • 分頁使用 自定義 manger 管理器 重構(gòu) 把 category_list 和 archive_list 放到了...
    v小飛俠v閱讀 345評論 0 0
  • 我叫柯禾辩撑,十七歲,女仿耽,生于故城北合冀,不過現(xiàn)在住在故城南。 我的生活本是美好無比项贺,可一切都在那場大雨里變了模樣君躺。那天夜...
    懷深閱讀 371評論 0 1