css3中translate(-50%,-50%)對(duì) transform-origin的奇葩影響?
問(wèn)題描述
<style>#test{ width: 100px; height: 100px; background-color: red; transition: all 1s; position: absolute; left: 50%; top: 50%; margin-left: -50px; /*transform:translate(-50%,-50%);*/ transform-origin: 50% 50%;}#test:hover{ transform: scale(1.2, 1.2);} </style></head><body> <p id='test'></p></body>
當(dāng)我使用 margin-left為負(fù)值的方法來(lái)居中對(duì)齊,然后鼠標(biāo)hover的時(shí)候放大,中心點(diǎn)就是transform-origin設(shè)置的上下居中,沒(méi)有任何問(wèn)題:
可是當(dāng)我使用 transform:translate(-50%,-50%)的居中對(duì)齊時(shí):
<style>#test{ width: 100px; height: 100px; background-color: red; transition: all 1s; position: absolute; left: 50%; top: 50%; /*margin-left: -50px;*/ transform:translate(-50%,-50%); transform-origin: 50% 50%;}#test:hover{ transform: scale(1.2, 1.2);} </style></head><body> <p id='test'></p></body>
鼠標(biāo)hover上去,放大的中心點(diǎn)貌似就跑到了 左上角,即使我設(shè)置了 transform-orgin,但是仍然不起作用,
從控制臺(tái)來(lái)看,transform-origin 屬性是起了作用的。本人非常困惑為什么會(huì)這樣,請(qǐng)個(gè)人大佬指點(diǎn)迷津
問(wèn)題解答
回答1:很明顯的錯(cuò)誤,hover 的時(shí)候把原有的 translate 覆蓋掉了
正確寫法如下
#test:hover{ transform: scale(1.2, 1.2) translate(-50%,-50%);}
