详解16个CSS新特性(2021最新版-下)

简介: 详解16个CSS新特性(2021最新版-下)

微信图片_20211112151422.gif

2021 CSS 的新特性和之前两年的相比有相似也有不同,本文就带大家继续看今年的 CSS 到底说了什么。

上篇指路:详解16个CSS新特性(2021最新版-上)



CSS 等比缩放


CSS 等比缩放一般指的是 “容器高度按比例根据宽度改变”,很多时候也称为宽高比或纵宽比。


众所周知,我们开发 Web 页面要面对的终端更复杂的了,而这些终端的宽高比都不一样。常见的比例有:

1.jpg

特别是在做媒体相关开发的同学,比如视频、图像等,这方面的需求会更多,比如 Facebook 上的图片,视频展示:2.jpg

CSS 在还没有 aspect-ratio 之前,常使用一些 Hacck 手段来实现实类似的效果,即使用padding-top padding-bottom 来实现:

<aspectratio-container> 
  <aspectratio-content></aspectratio-content> 
</aspectratio-container> 
<style>
  .aspectratio-container { 
    width: 50vmin; /* 用户根据自己需要设置相应的值 */ 
    /* 布局方案可以调整 */ 
    display: flex; 
    justify-content: center; 
    align-items: center; 
  } 
  /* 用来撑开aspectratio-container高度 */ 
  .aspectratio-container::after { 
      content: ""; 
      width: 1px; 
      padding-bottom: 56.25%; 
      /*元素的宽高比*/ 
      margin: -1px; 
      z-index: -1; 
  }
</style>  

有了 CSS 自定义属性之后,可以结合 calc() 函数来实现容器等比缩放的效果:

.container {
  --ratio: 16/9;
  height: calc(var(--width) * 1 / (var(--ratio)));
  width: 100%;
}

虽然比padding-top 这样的Hack 手段简单,但相比原生的aspect-ratio还是要复杂的多。即:

.container {
  width: 100%;
  aspect-ratio: 16 / 9;
}


下面这个示例演示了这三种不同方案实现宽比的效果:

Demo: https://codepen.io/airen/full/ExWjeZr


还可以通过 @media  让元素在不同的终端上按不同的比例进行缩放:

.transition-it {
  aspect-ratio: 1/1;
  transition: aspect-ratio .5s ease;
  @media (orientation: landscape) { & {
    aspect-ratio: 16/9;
  }}
}

CSS 滚动捕捉


在 Web 布局中,时常会碰到内容溢出容器的现状,如果 overflow 设置为 autoscroll 时容器会出现水平或垂直滚动条:3.jpg

为了给用户提供更好的滚动体验,CSS 提供了一些优化滚动体验的 CSS 特性,其中滚动捕捉就是其中之一。CSS 的滚动捕捉有点类似于 Flexbox 和 Grid 布局的特性,分类可用于滚动容器的属性和滚动项目的属性:4.jpg

有了滚动捕捉特性,我们要实现类似下图的效果就可以不需要依赖任何 JavaScript 库或脚本:

5.jpg

就是每次滚动时,图片的中心位置和容器中心位置对齐(想象一下 Swiper 的效果)。关键代码就下面这几行:

.container {
  scroll-behavior: smooth;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  scroll-padding: 20px;
}
img {
  scroll-snap-align: center;
  scroll-snap-stop: always;
}

Demo: https://codepen.io/airen/full/mdRpboo


Demo: https://codepen.io/airen/full/PoWQPvN


要是再利用一点点JavaScript脚本,还可以实现沉浸式讲故事的交互效果:

Demo: https://codepen.io/airen/full/qBRxNOo


CSS Gap(沟槽)


CSS 的 gap 属性的出现,帮助我们解决了以前一直比较麻烦的布局效果:

6.jpg

正如上图所示,设计师期望的一个效果是,紧邻容器边缘没有任何间距,但相邻项目之间(水平或垂直方向)都有一定的间距。在没有 gap 属性之前使用 margin 是很烦人的,特别是多行多列的时候更麻烦。有了 gap 仅需要一行代码即可。


CSS 的 gap 属性是一个简写属性,分为 row-gapcolumn-gap

7.jpg

该属性 gap 到目前为止只能运用于多列布局,Flexbox布局和网格布局的容器上:

// 多列布局 
.multi__column { 
  gap: 5ch 
} 
// Flexbox布局 
.flexbox { 
  display: flex; 
  gap: 20px 
} 
// Grid布局 
.grid { 
  display: grid; 
  gap: 10vh 20% 
}

gap 属性可以是一个值,也可以是两个值:

.gap { 
  gap: 10px; 
} 
// 等同于 
.gap { 
  row-gap: 10px; 
  column-gap: 10px 
} 
.gap { 
  gap: 20px 30px; 
} 
// 等同于 
.gap { 
  row-gap: 20px; 
  column-gap: 30px; 
}

如果 gap 仅有一个值时,表示 row-gapcolumn-gap 相同。


CSS 逻辑属性


国内大多数 Web 开发者面对的场景相对来说比较单一,这里所说的场景指的是书写模式或排版的阅读模式。一般都是 LTR (Left To Right)。但有开发过国际业务的,比如阿拉伯国家的业务,就会碰到 RTL (Right To Left) 的场景。比如你打开 Facebook ,查看中文和阿拉伯文两种语言下的 UI 效果:8.jpg

在没见有逻辑属性之前,一般都会在   上设置 dir 属性,中文是 ltr ,阿拉伯语是 rtl ,然后针对不同的场景运用不同的 CSS 样式:9.jpg

其实,阅读方式除了水平方向(ltrtrl)之外,还会有垂直方向的阅读方式:10.jpg

为了让 Web 开发者能更好的针对不同的阅读模式提供不同的排版效果,在CSS新增逻辑属性。有了逻辑属性之后,以前很多概念都有所变化了。比如我们以前熟悉的坐标轴,x 轴和 y 轴就变成了 inline 轴 和 block 轴,而且这两个轴也会随着书写模式做出调整:11.jpg

除此之外,我们熟悉的 CSS 盒模形也分物理盒模型和逻辑盒模型:12.jpg

你可能感知到了,只要是以前带有 top、right 、bottom 和 left 方向的物理属性都有了相应的 inline-start 、 inline-end 、block-start 和 block-end 的逻辑属性:

13.jpg

我根据 W3C 规范,把物理属性和逻辑属性映射关系整了一份更详细的表:14.jpg

回到实际生产中来:15.jpg

果不使用逻辑属性的话,要实现类似上图这样的效果,我们需要这样来编写 CSS:

.avatar {
  margin-right: 1rem;
}
html[dir="rtl"] .avatar {
  margin-right: 0;
  margin-left: 1rem;
}

有了 CSS 逻辑属性之后,仅一行 CSS 代码即可实现:

.avatar {
  margin-inline-end: 1rem;
}

简单多了吧,特别是有国际化需求的开发者,简直就是一种福音。


CSS 媒体查询

16.jpg

相关文章
|
11天前
|
前端开发 JavaScript 算法
《CSS 简易速速上手小册》第10章:未来的 CSS(2024 最新版)
《CSS 简易速速上手小册》第10章:未来的 CSS(2024 最新版)
37 1
|
11天前
|
前端开发 容器
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
24 2
|
2天前
|
机器学习/深度学习 移动开发 前端开发
CSS3 新特性
CSS3 新特性
20 0
|
11天前
|
前端开发 UED
【专栏:CSS 进阶篇】CSS3 新特性:过渡、动画与变形
【4月更文挑战第30天】CSS3的过渡、动画和变形三大特性为网页设计注入活力,创造生动丰富的用户体验。过渡提供平滑效果,常用于按钮点击等;动画实现复杂动态效果,适用于滚动字幕等;变形允许元素几何变换,如旋转和缩放。实际应用包括动态导航菜单、图片轮播和加载动画。然而,需注意浏览器兼容性、性能优化和设计平衡。掌握这些特性,将为网页设计带来更多创新可能。
|
11天前
|
前端开发 JavaScript 开发者
【Web 前端】css3的新特性有哪些?
【4月更文挑战第22天】【Web 前端】css3的新特性有哪些?
|
11天前
|
资源调度 前端开发 JavaScript
《CSS 简易速速上手小册》第9章:CSS 最佳实践(2024 最新版)
《CSS 简易速速上手小册》第9章:CSS 最佳实践(2024 最新版)
64 1
《CSS 简易速速上手小册》第9章:CSS 最佳实践(2024 最新版)
|
11天前
|
缓存 前端开发 JavaScript
《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)
《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)
32 0
|
11天前
|
存储 前端开发 JavaScript
《CSS 简易速速上手小册》第7章:CSS 预处理器与框架(2024 最新版)
《CSS 简易速速上手小册》第7章:CSS 预处理器与框架(2024 最新版)
37 2
|
11天前
|
前端开发 容器
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
25 0
|
11天前
|
前端开发 JavaScript UED
《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)
《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)
33 1