我最期待的 3 個即將推出的 CSS 特性!
大家好,我是零一,今天給大家總結(jié)分享一下 3 個很 ???? 的即將推出的 CSS 屬性,等你看完,每一個都要喊 絕了!
聲明一下:這些特性現(xiàn)在基本都不好使,就算有的高級瀏覽器支持了,也只是個例。可以期待一下以后 ~
一、@container
@container 是一個容器查詢方法,正如它的名字一樣,它是用來支持根據(jù)當(dāng)前元素所在容器的大小來進(jìn)行動態(tài)修改添加樣式的,這跟 @media 基于視口大小是不一樣的。
來舉個??
先創(chuàng)建一個側(cè)邊欄和一個主內(nèi)容
<body>
<aside class="sidebar">
<div class="card">
<h4>側(cè)邊欄</h4>
<p>
To the world you may be one person, but to one person you may be the world.
</p>
</div>
</aside>
<main class="content">
<div class="card">
<h4>主內(nèi)容</h4>
<p>
To the world you may be one person, but to one person you may be the world.
</p>
</div>
</main>
</body>
讓這兩個元素橫向布局,且側(cè)邊欄寬度占 30%,主內(nèi)容寬度占 70%
body {
display: flex;
color: white;
}
h4 {
color: black;
}
.sidebar {
width: 30%;
}
.content {
width: 70%;
background: #f0f5f9; /* 給個底色,與側(cè)邊欄區(qū)分 */
}
.card {
background: lightpink;
box-shadow: 3px 10px 20px rgba(0, 0, 0, 0.2);
border-radius: 8px;
}
目前為止是這樣的效果:
現(xiàn)在我們發(fā)現(xiàn)主內(nèi)容這塊兒空間很富余,便想改變一下標(biāo)題和內(nèi)容文字的布局,此時就可以用上 @container 了,直接讓主內(nèi)容在當(dāng)前容器寬度大于 400px 時變成橫向布局
@container (min-width: 400px) {
.content .card {
display: flex;
}
}
此時效果如下:
是不是很酷
基于這點,還想到了一個之前我做過的需求中很頭疼的需求,就是字體大小隨著容器寬高的改變而動態(tài)改變,如果支持了這個特性,那這個需求也就很簡單了
二、object-view-box
object-view-box 屬性就類似于 SVG 中的 viewBox 屬性。它允許您使用一行 CSS 來平移、縮放、裁剪 圖像。
我們就對這張圖來動動刀子
加一行代碼
.crop {
object-view-box: inset(10% 50% 35% 5%);
}
實現(xiàn)的效果就是這樣:
跟原圖對比一下就是這樣:
除了簡單的裁剪,我們還能基于它實現(xiàn)一些好玩的效果,例如:
三、animation-timeline
animation-timeline 相比前兩個就更好玩了!它允許我們基于容器滾動的進(jìn)度來對動畫進(jìn)行處理,簡而言之就是頁面滾動了百分之多少,動畫就執(zhí)行百分之多少。而且動畫也能根據(jù)頁面倒著滾動而倒著播放
.shoes {
animation-name: Rotate;
animation-duration: 1s;
animation-timeline: scrollTimeline;
}
@scroll-timeline scrollTimeline {
source: selector('#container');
orientation: "vertical";
}
@keyframes Rotate {
from {
transform: translate(-200px, -200px) rotate(0deg);
}
to {
transform: translate(100vw, 100vh) rotate(720deg);
}
}
使用起來很簡單,就是在本身的基礎(chǔ)動畫上,新增一個 animation-timeline 屬性即可,我們也可以對這個 timeline 定義是基于哪個容器,滾動方向是水平還是豎直
大致效果就是:
最后
這三個 CSS 新特性,你們最喜歡哪個?有沒有想到一些比較實用的場景,歡迎在評論區(qū)分享~
我是零一,分享技術(shù),不止前端!下期見~
作者:零一
歡迎關(guān)注微信公眾號 :前端印象