Beberapa ciri CSS baharu yang patut anda ketahui pada tahun 2022 (kumpul untuk belajar)

青灯夜游
Lepaskan: 2022-03-17 10:51:53
ke hadapan
3549 orang telah melayarinya

Artikel ini akan berkongsi dengan anda beberapa ciri baharu yang patut ditunggu-tunggu pada tahun 2022 dan tidak boleh dilepaskan CSS.

Beberapa ciri CSS baharu yang patut anda ketahui pada tahun 2022 (kumpul untuk belajar)

Untuk CSS, 2022 adalah tahun yang ditunggu-tunggu. Sebilangan besar ciri baharu akan muncul, ada yang sudah mula log masuk ke penyemak imbas, dan ada yang mungkin akan dilancarkan pada 2022 Dapatkan sokongan penyemak imbas yang luas. Mari lihat ciri CSS baharu yang patut ditunggu-tunggu pada tahun 2022! (Pembelajaran yang disyorkan: tutorial video css)

1. Pertanyaan kontena

1 Dapat menggayakan elemen berdasarkan saiz induknya, ia serupa dengan pertanyaan @media, kecuali ia mendasarkannya pada saiz bekas dan bukannya saiz port pandang. Ini sentiasa menjadi isu dengan reka bentuk responsif, kerana kadangkala kami mahu komponen menyesuaikan diri dengan konteksnya.

2. Kaedah penggunaan

Untuk pertanyaan bekas, anda perlu menggunakan atribut bekas (iaitu singkatan jenis bekas dan nama bekas) untuk menentukan elemen sebagai bekas. jenis bekas boleh menjadi lebar, tinggi, saiz sebaris, saiz blok. saiz sebaris dan saiz blok adalah sifat logik yang mungkin menghasilkan hasil yang berbeza bergantung pada mod penulisan dokumen.

@bekas boleh digunakan dengan cara yang serupa dengan pertanyaan media. Ambil perhatian bahawa terdapat perbezaan dalam cara peraturan dinyatakan dalam kurungan (saiz sebaris > 30em harus digunakan dan bukannya lebar min: 30em dalam pertanyaan kontena). Ini adalah sebahagian daripada spesifikasi Siasatan Media Tahap 4. Beralih kepada reka letak fleksibel apabila lebar bekas lebih besar daripada 30rem:

main, aside {
    container: inline-size;
}
Salin selepas log masuk

Spesifikasi Tahap 3 Penahanan CSS kini berada dalam draf yang berfungsi, yang bermaksud sintaks boleh berubah pada bila-bila masa.

@container (inline-size > 30em) {
    .card {
        display: flex;
    }
}
Salin selepas log masuk

3. Status semasa

Pada masa ini pertanyaan kontena tidak tersedia dalam pelayar arus perdana. Anda boleh menantikan pelaksanaan pertanyaan kontena dalam penyemak imbas.

Modul Pengekalan CSS Tahap 3 (spesifikasi rasmi): https://www.w3.org/TR/css-contain-3

2. )

1. Konsep Asas

Selalunya dipanggil "pemilih induk", kelas pseudo ini membolehkan kita memilih unsur berdasarkan keturunannya. Ia mempunyai beberapa kes penggunaan yang sangat menarik. Contohnya, anda boleh menggayakan imej secara berbeza dalam

bergantung pada sama ada ia mengandungi

. :has()<figcaption><figure>2. Penggunaan

Untuk menetapkan gaya elemen yang mengandungi

, anda boleh melakukan perkara berikut:

<h2><section> Apabila ibu bapa

section:has(h2) {
    background: lightgray;
}
Salin selepas log masuk
mengandungi

, tetapkan gaya <img>: <section><h2><img>

3 Status semasa
section:has(h2) img {
    border: 5px solid lime;
}
Salin selepas log masuk

Belum Sifat ini disokong oleh penyemak imbas utama, tetapi ia tersedia dalam Pratonton Teknikal Safari.

Pratonton Teknologi Safari: https://developer.apple.com/safari/technology-preview/

Pemilih CSS Tahap 4 (spesifikasi rasmi): https://www . w3.org/TR/selectors-4/

3. @bila/@else

1 /@else ialah peraturan bersyarat dalam CSS, serupa dengan logik if/else dalam bahasa pengaturcaraan lain. Ia boleh membuat penulisan pertanyaan media yang kompleks lebih logik. Saya memilih untuk menggunakan @when dan bukannya @if di sini untuk mengelakkan konflik dengan Sass.

2. Cara menggunakan

Anda boleh menanyakan berbilang keadaan media atau fungsi yang disokong, seperti sama ada port pandangan pengguna melebihi lebar tertentu dan sama ada penyemak imbas pengguna menyokong subgrid .

3. Status semasa

Atribut yang berubah pada masa ini tidak disokong dalam penyemak imbas. Masih awal dan masih dalam perbincangan. Ia tidak dijangka akan disokong secara meluas oleh penyemak imbas tahun ini, tetapi ia sememangnya harta yang sangat berguna yang patut diberi perhatian.
@when media(min-width: 30em) and supports(display: subgrid) {
    
} @else {
    
}
Salin selepas log masuk

Modul Peraturan Bersyarat CSS Tahap 5 (spesifikasi rasmi): https://www.w3.org/TR/css-conditional-5

4. warna

1. Konsep Asas

Atribut skema warna membenarkan elemen untuk menunjukkan skema warna yang boleh diberikan dengan mudah. Pilihan biasa untuk skema warna sistem pengendalian ialah "cerah" dan "gelap", atau "mod siang" dan "mod malam." Apabila pengguna memilih salah satu skema warna, sistem pengendalian melaraskan antara muka pengguna. Ini termasuk nilai penggunaan untuk kawalan borang, bar skrol dan warna sistem CSS.

2. Penggunaan

Penggunaan sangat mudah, dan harta ini boleh diwarisi. Jadi ia boleh ditetapkan pada tahap akar untuk menerapkannya di mana-mana:

:root {
    accent-color: lime;
}
Salin selepas log masuk

可以在单个元素上使用:

form {
    accent-color: lime;
}

input[type="checkbox"] {
    accent-color: hotpink;
}
Salin selepas log masuk

3. 当前状态

目前,accent-color 在 Chrome、Edge、Firefox 和 Safari 技术预览版中已经得到了支持。不支持该属性的的浏览器会直接使用默认颜色,并且输入是完全可用的。

CSS Basic User Interface Module Level 4(官方规范):https://www.w3.org/TR/css-ui-4/

五、颜色函数

1. 基本概念

我们可能已经很熟悉 Hex、RGB 和 HSL 颜色格式。CSS Color Module Levels 4 和 5 中包括一整套新的颜色函数,使我们能够以前所未有的方式在 CSS 中指定和操作颜色。它们包括:

  • hwb():色相、白度、黑度。
  • lab():亮度以及决定色调的 a和b值。
  • lch():亮度、色度、色调。
  • color-mix():将两种颜色混合在一起。
  • color-contrast():从颜色列表中,输出与第一个参数相比对比度最高的颜色。
  • color():指定不同颜色空间中的颜色(例如display-p3)。

2. 使用方法

hwb(), lab() 和 lch() 的使用方式与我 rgb() 和 hsl() 函数基本相同,都有一个可选的alpha 参数:

.my-element {
  background-color: lch(80% 100 50); 
}

.my-element {
  background-color: lch(80% 100 50 / 0.5); 
}
Salin selepas log masuk

color-mix() 将其他两种颜色混合后输出一种颜色。我们需要指定颜色插值方法作为第一个参数:

.my-element {
  background-color: color-mix(in lch, blue, lime);
}
Salin selepas log masuk

color-contrast() 需要一个基色来比较其他颜色。它将输出对比度最高的颜色,或者在提供额外关键字的情况下,输出列表中符合相应对比度的第一种颜色:

/*  输出对比度最高的颜色 */
.my-element {
    color: white;
    background-color: color-contrast(white vs, lightblue, lime, blue);
}

/* 输出符合AA对比度的第一种颜色 */
.my-element {
    color: white;
    background-color: color-contrast(white vs, lightblue, lime, blue to AA);
}
Salin selepas log masuk

3. 当前状态

Safari 目前在浏览器支持方面处于领先地位,从版本 15 就开始支持hwb()、 lch()、lab()、color(),color-mix() 和 color-contrast() 可以通过 flag 启用。Firefox 支持 hwb(),并且还标记了对 color-mix() 和 color-contrast() 的支持。令人惊讶的是,Chrome 现在还不支持这些函数。

在代码中提供样式兼容并不难:给定两种颜色规则,如果浏览器不支持第二种颜色规则,它将忽略第二种颜色规则:

.my-element {
    background-color: rgb(84.08% 0% 77.36%);
    background-color: lch(50% 100 331);
}
Salin selepas log masuk

这样,当浏览器支持该函数时,就可以直接使用了。

CSS Color Module Level 4(官方规范):https://www.w3.org/TR/css-color-4/

CSS Color Module Level 5(官方规范):https://www.w3.org/TR/css-color-5

六、层叠层

1. 基本概念

层叠层让我们有更多的能力来管理CSS的“层叠”部分。目前,有几个因素决定了 CSS 代码中将应用哪些样式,包括选择器群众和出现的顺序。层叠层允许我们有效地将CSS分组(或者“分层”)。顺序较低的层中的代码将优先于较高层中的代码,即使较高层中的选择器具有更高的权重。

2. 使用方法

下面来看看层叠层的基本使用:

/* 按顺序创建图层 */
@layer reset, base, theme;

/* 将CSS添加到每个层 */
@layer reset {
  
}

@layer base {
  h1.title {
      font-size: 5rem;
  }
}

@layer theme {
  h1 {
      font-size: 3rem;
  }
}
Salin selepas log masuk

theme 层中的CSS字体大小声明将覆盖base层中的字体大小声明,尽管后者选择器具有更高的权重。

3. 当前状态

最新版本的 Firefox 已经支持了层叠层,并且可以在 Chrome 和 Edge 中使用 flag 启用(Chrome 99 版本将全面支持层叠层)。看起来所有主流浏览器都在使用这个规范,所以希望尽快能得到更广泛的支持。

CSS Cascading and Inheritance Level 5(官方规范):https://www.w3.org/TR/css-cascade-5/

七、subgrid

1. 基本概念

作为 CSS Grid Layout Module 2 规范的一部分,subgrid 允许元素在行轴或列轴上继承其父元素的网格。subgrid 对于解决各种用户界面挑战非常有用。

例如,以下面这个带有标题的图像为例。标题的长度各不相同,使用 subgrid 可以直接让它们对齐,而无需设置固定的高度。

2. 使用方法

首先将父元素设置为grid布局,将子元素的“grid-template-columns”或“grid-template-rows”属性设置为 subgrid:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, auto);
}

.grid > figure {
    display: grid;
    grid-template-rows: subgrid;
}

.grid figcaption {
    grid-row: 2;
}
Salin selepas log masuk

实现效果:

完整代码:

html:

<div class="grid">
  <figure>
    <img src=&#39;https://images.unsplash.com/photo-1633083018029-bd1d4d52cb19?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0NTE5NTYyMw&ixlib=rb-1.2.1&q=80&w=400&#39; alt=&#39;Bluetit&#39;>
    <figcaption>A colourful mix of blue, yellow, white and green makes the blue tit one of our most attractive and most recognisable garden visitors.</figcaption>
  </figure>
  <figure>
    <img src=&#39;https://images.unsplash.com/photo-1619976302135-5efbc2a7785a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0NTE5NTY4NA&ixlib=rb-1.2.1&q=80&w=400&#39; alt=&#39;Robin&#39;>
    <figcaption>Robins sing nearly all year round and despite their cute appearance, they are aggressively territorial and are quick to drive away intruders.</figcaption>
  </figure>
  <figure>
    <img src=&#39;https://images.unsplash.com/photo-1623627733740-4724cb1fe84e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0NTE5NTc4NQ&ixlib=rb-1.2.1&q=80&w=400&#39; alt=&#39;Chaffinch&#39;>
    <figcaption>The chaffinch is one of the most widespread and abundant bird in Britian and Ireland.</figcaption>
  </figure>
</div>
Salin selepas log masuk

CSS:

* {
  box-sizing: border-box;
}

body {
  font-family: "Open Sans", sans-serif;
  margin: 0;
  padding: max(1rem, 3vw);
}

figure {
  margin: 0;
  display: grid;
/*  grid-template-rows: subgrid; */
/*  grid-row: 1 / 3; */
}

img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  grid-row: 1 / 3;
  grid-column: 1;
}

figcaption {
  padding: 1rem;
  grid-column: 1;
  grid-row: 2;
  background: hsl(0 0% 0% / 0.6);
  color: white;
}

.grid {
  display: grid;
  max-width: 80rem;
  margin: 0 auto;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 1.5rem;
}

@media (min-width: 62em) {
  .grid {
    grid-template-rows: 1fr auto;
  }
  
  figure {
    grid-template-rows: subgrid;
    grid-row: 1 / 3;
  }
}
Salin selepas log masuk

演示demo:https://codepen.io/michellebarker/pen/YzERyor

3. 当前状态

值得注意的是,自 2019 年以来,Firefox 已经支持了 subgrid,但近三年后还没有其他浏览器跟进。有迹象表明 Chromium 团队已经开始着手实现它,所以可能有幸在今年看到它登陆 Chrome 和 Edge。

CSS Grid Layout Module Level 2(官方规范):https://www.w3.org/TR/css-grid-2/

八、@scroll-timeline

1. 基本概念

@scroll-timeline 属性定义了一个AnimationTimeline,其时间值由滚动容器中的滚动进度决定(而不是时间决定)。一旦指定,@scroll-timeline 将通过使用animation-timeline 属性与CSS Animation相关联。

2. 使用方法

这里来看一个简单的例子:

/* 设置关键帧动画 */
@keyframes slide {
    to { transform: translateX(calc(100vw - 2rem)); }
}

/* 配置scroll timeline,这里将它命名为了slide-timeline */
@scroll-timeline slide-timeline {
  source: auto;
  orientation: vertical; 
  scroll-offsets: 0%, 100%; 

/*  指定关键帧动画和 scroll-timeline */
.animated-element {
  animation: 1s linear forwards slide slide-timeline;
}
Salin selepas log masuk

我们也可以对scroll-offsets属性使用基于元素的偏移量,以在特定元素滚动到视图中时触发 timeline:

@scroll-timeline slide-timeline {
    scroll-offsets: selector(#element) end 0, selector(#element) start 1;
}
Salin selepas log masuk

3. 当前状态

如果对 @scroll-timeline 感兴趣,可以在 Chrome 中使用 flag 来启用它。当我们遇到一个复杂的动画时,可能需要使用 JavaScript 动画库来实现,但是对于相对简单的动画,使用该属性就可以减少不必要的import。

Scroll-linked Animations(官方规范):https://drafts.csswg.org/scroll-animations-1/

九、嵌套

1. 基本概念

如果你熟悉 Sass,就会知道嵌套选择器的便利性。本质上,就是在父级中编写子级规则。嵌套可以使编写CSS代码更加方便,现在嵌套终于来到了原生 CSS!

2. 使用方法

从语法上讲,它与 Sass 相似。下面来给 class 为 card 中的 h2 子元素定义样式规则:

.card {
    color: red;

    & h2 {
        color: blue;
    }
}
Salin selepas log masuk

可以将其用于伪类和伪元素:

.link {
    color: red;

    &:hover,
    &:focus {
        color: blue;
    }
}
Salin selepas log masuk

这些就等价于下列 CSS 代码:

.link {
    color: red;
}

.link:hover,
.link:focus {
    color: blue;
}
Salin selepas log masuk

3. 当前状态

目前还没有浏览器支持嵌套。如果你使用PostCSS,可以通过预置的 postcss-preset-env 插件来尝试嵌套。

CSS Nesting Module(官方规范):https://www.w3.org/TR/css-nesting-1/

十、总结

现在正处于 CSS 蓬勃发展的时代。在写这篇文章时,我注意到这些新功能有一些共同点,它们都是为了帮助我们编写更好、更干净、更高效的代码。随着时间的推移,预处理工具(如 Sass)可能会变得不再重要。让我们一起期待更多新的 CSS 功能出现吧!

英文原文:https://www.smashingmagazine.com/2022/03/new-css-features-2022/

作者:Michelle Barker

译者:CUGGZ

(学习视频分享:web前端

Atas ialah kandungan terperinci Beberapa ciri CSS baharu yang patut anda ketahui pada tahun 2022 (kumpul untuk belajar). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!