這次帶給大家實戰使用CSS技巧分享,實戰中使用CSS的注意事項有哪些,下面就是實戰案例,一起來看一下。
對於剪切動畫,使用clip-path代替width/height,避免DOM重排導致效能過低。
.animate { width: 200px; height: 200px; background: #000; animation: 1s clip; } @keyframes clip { 0% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(0 100% 100% 0); } }
clip-path也能用來進行其他規則/不規則圖形的剪切
.clip { clip-path: polygon(0 100%, 50% 0, 100% 100%, 0 30%, 100% 30%); /* 多边形 */ clip-path: circle(30px at 35px 35px); /* 圆形 */ clip-path: ellipse(30px 25px at 35px 35px); /* 椭圆 */ }
除了使用transform3d開啟gpu加速,還可以使用will-change強制gpu加速優化動畫效能
.animate { width: 200px; height: 200px; background: #000; animation: 1s clip; will-change: clip-path; } @keyframes clip { 0% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(0 100% 100% 0); } }
使用padding模擬,然後子元素使用絕對定位
/* 1:1 */ .container { width: 200px; } .container:after { display: block; content: ' '; padding-top: 100%; } /* 16:9 */ .container { width: 200px; } .container:after { display: block; content: ' '; padding-top: calc(100% * 9 / 16); }
我們常用的方式:
dislay: inline-block
top: 50% transform: tranlsateY(- 50%)
display: flex
#其餘還有padding上下撐高
、display: table
、<a href="http://www.php.cn/wiki/902.html" target="_blank">position</a> margin: auto
、絕對定位margin
等等,這些屬於不常用、特殊場景才能用、CSS3之前的hack方式,CSS3之後就不必使用這些來實現垂直居中,就不多說了。
其中display: flex
屬於萬金油,大多數場景可以直接用它,但還是有些特殊的場景不能用:
子元素需要文字截斷,為了相容4.X的Android瀏覽器,必須使用其他方式(一般是transform)
子元素需要多行佈局,4.x的Android不支援flex -wrap,不能多行佈局
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是實戰中使用CSS技巧分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!