CSS tranform和fixed的恩怨情仇

發(fā)現(xiàn)這個問題是在寫代碼的時候發(fā)現(xiàn),輪播組件里被輪播組件包裹的position:fixed定位失效了。

<el-carousel
  ref="carousel"
>
  <el-carousel-item name="0">
    <img :src="src1">
    <play-control
      :visible="true"
    />
  </el-carousel-item>
  <el-carousel-item name="1">
    <img :src="src2">
  </el-carousel-item>
</el-carousel>

其中,<play-control>公用組件就是position:fixed,相對于瀏覽器窗口的絕對定位,但是在這個輪播圖中,它卻變成了變成了相對于父元素的絕對定位。查了一下,是受父元素輪播項transform:translateX()的影響,所有的CSS3 transform變換,無論是scale還是translate,都會讓position:fixed相對定位對象變成父元素,就像absolut
這是css本身的特性(或者缺陷?)無法改變,只能從另一角度去找解決方案。那就是在當(dāng)前組件另寫樣式去控制<play-control>的絕對定位值,例如把原本的top:20px改成top:0之類的。

后來看了鑫大神的博客CSS3 transform對普通元素的N多渲染影響才知道,transform對元素渲染的影響可不止這么一點(diǎn),真的是又漲見識了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容