国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

css3 - 為什么運行動畫后,原本居中的位置卻發生了偏移?

瀏覽:116日期:2023-06-23 15:07:21

問題描述

為什么運行動畫后,原本居中的位置卻發生了偏移?

<!DOCTYPE html><html> <head><meta charset='utf-8'><title></title><style type='text/css'>*{padding: 0px;margin: 0px; } .box1{width: 600px;height: 200px;background: orange;position: relative; } .box1 span{position: absolute;border: 8px solid #fff;border-top: 8px solid transparent;border-radius: 999px;top: 50%;left: 50%;transform: translate(-50%,-50%); } .box1 span:nth-child(1){width: 80px;height: 80px;/*animation: span1 2s linear infinite ;*/ } .box1 span:nth-child(2){width: 40px;height: 40px;/*animation: span2 1s linear infinite ;*/ }@-webkit-keyframes span1{0%{transform: rotate(360deg); opacity: 1;}50%{transform: rotate(180deg); opacity: .5;}100%{transform: rotate(0deg); opacity: 0;} } @-webkit-keyframes span2{0%{transform: rotate(0deg); opacity: .5;}50%{transform: rotate(180deg); opacity: 1;}100%{transform: rotate(360deg); opacity: .5;} } </style> </head> <body><p class='box1'> <span></span> <span></span></p></body>

</html>css3 - 為什么運行動畫后,原本居中的位置卻發生了偏移?

css3 - 為什么運行動畫后,原本居中的位置卻發生了偏移?

問題解答

回答1:

.box1 span:nth-child(1){ width: 80px; height: 80px; animation: span1 2s linear infinite ; margin: -40px 0 0 -40px;}.box1 span:nth-child(2){ width: 40px; height: 40px; animation: span2 1s linear infinite ; margin: -20px 0 0 -20px;}回答2:

這個坑我碰到過,你的定位轉換別用transfrom,改成margin-left:-50%width;用了transfrom他會把初始位置定位到left:50%的地方。

回答3:

transform-origin: center;回答4:

.box1 span{

position: absolute;border: 8px solid #fff;border-top: 8px solid transparent;border-radius: 999px;top: 50%;left: 50%;transform: translate(-50%,-50%);**transform-origin: 0 0;**

}@-webkit-keyframes span1{

0%{transform: rotate(360deg) **translate(-50%,-50%);** opacity: 1;}50%{transform: rotate(180deg) **translate(-50%,-50%);** opacity: .5;}100%{transform: rotate(0deg) **translate(-50%,-50%);** opacity: 0;}

}@-webkit-keyframes span2{

0%{transform: rotate(0deg) **translate(-50%,-50%);** opacity: .5;}50%{transform: rotate(180deg) **translate(-50%,-50%);** opacity: 1;}100%{transform: rotate(360deg) **translate(-50%,-50%);** opacity: .5;}

}

回答5:

原因是樓上說的,因為用了css3動畫,所上面設置偏移的時候不要用transfrom,順手把具體的代碼寫出來:

<!DOCTYPE html><html><head> <meta charset='utf-8'> <title></title> <style type='text/css'>* { padding: 0px; margin: 0px;}.box1 { width: 600px; height: 200px; background: orange; position: relative;}.box1 span { position: absolute; border: 8px solid #fff; border-top: 8px solid transparent; border-radius: 999px; top: 50%; left: 50%; /*移除這里定位*/}.box1 span:nth-child(1) { width: 80px; height: 80px; /*新增*/ margin-left: -40px; margin-top: -40px; animation: span1 2s linear infinite ;}.box1 span:nth-child(2) { width: 40px; height: 40px; /*新增*/ margin-left: -20px; margin-top: -20px; animation: span2 1s linear infinite ;}@keyframes span1 { 0% {transform: rotate(360deg);opacity: 1; } 50% {transform: rotate(180deg);opacity: .5; } 100% {transform: rotate(0deg);opacity: 0; }}@-webkit-keyframes span1 { 0% {transform: rotate(360deg);opacity: 1; } 50% {transform: rotate(180deg);opacity: .5; } 100% {transform: rotate(0deg);opacity: 0; }}@-webkit-keyframes span2 { 0% {transform: rotate(0deg);opacity: .5; } 50% {transform: rotate(180deg);opacity: 1; } 100% {transform: rotate(360deg);opacity: .5; }} </style></head><body> <p class='box1'><span></span><span></span> </p></body></html>回答6:

你需要用絕對定位將要旋轉的元素的初始點定位到元素的中心,正常的初始點是在左上用left:50%;top:50%;margin-left:-20px/元素的二分之一/;margin-top:-20px/元素的二分之一/;這樣元素的旋轉就不會出現交錯了。

標簽: CSS
主站蜘蛛池模板: 肃南| 武山县| 崇阳县| 平阴县| 吴江市| 正阳县| 宣化县| 南平市| 交城县| 呼伦贝尔市| 新乡市| 许昌市| 拜泉县| 阿克陶县| 永春县| 凯里市| 杭锦后旗| 克山县| 沅江市| 汉源县| 伊宁市| 和龙市| 文山县| 比如县| 高尔夫| 灌云县| 乐平市| 齐齐哈尔市| 宜良县| 遂溪县| 永泰县| 汤阴县| 永吉县| 华阴市| 宾川县| 宣化县| 洪泽县| 开江县| 应城市| 札达县| 柯坪县|