2023年你应该需要知道的CSS新特性-布局篇

简介: 前一段时间State of CSS发起了2022年的调查问卷,该文件的内容主要是CSS新特性、框架、工具库的使用情况,这里我将会用几篇文章整理一下这个问卷中涉及到的新特性
Hi~,我是 一碗周,一个在舒适区垂死挣扎的前端,如果写的文章有幸可以得到你的青睐,万分有幸~

🍎 写在前面

前一段时间State of CSS发起了2022年的调查问卷,该文件的内容主要是CSS新特性、框架、工具库的使用情况,这里我将会用几篇文章整理一下这个问卷中涉及到的新特性。

这篇文章介绍一下问卷中关于布局相关的内容,包括一些属性属性、属性值、媒体查询以及一些单位。

🍋 CSS 书写模式

这里的CSS书写模式指的是CSS中的writing-mode属性,该属性用于修改块流动方向,常用的值有三个:

  • horizontal-tb: 默认值,
  • vertical-lr: 将水平排放的文本修改为垂直排放,根据text-align属性来决定是顶部对齐还是底部对齐
  • vertical-rl: 将水平排放的文本修改为垂直排放,且书写方式修改为从左到右,根据text-align属性来决定是顶部对齐还是底部对齐

下面这个例子展示了vertical-lrvertical-rl的区别:

代码片段

writing-mode属性的浏览器兼容情况如下:

兼容性很好,可以放心食用;

🍌 CSS逻辑属性

这里所指的CSS逻辑属性指的是margin-block-startmargin-inline-startmargin-block-endmargin-inline-endpadding-blockpadding-inline-startborder-inline等等;

我们这里就拿padding-blockpadding-inline举例:

代码片段

padding-blockpadding-block-startpadding-block-end的简写形式;

两者的区别是padding-block是垂直方式的内边距,而padding-inline是水平方式的内边距,例如:

padding-inline-start: 32px;

上面这句的意思是正常流的情况下,水平方向的开始增加32px的内边距;

如果在正常流模式下,上面那句是与padding-left: 32px是等价的,但是如果我们使用writing-mode属性来修改块流动方向,此时如果使用padding-left就会出现问题:

我们想要设置的是文本前面和后面有内边距,但是使用padding-left设置的始终是侧边内边距,如果使用padding-inline就可以解决这个问题,例子如下:

浏览器兼容情况这里就拿padding-inline举例,如下图

浏览器的兼容情况还是非常不错的(IE:把我置于何地?),几乎已经可以用在生产环境了。

🍊 aspect-ratio属性

CSS中的aspect-ratio属性用于设置盒子的纵横比,这个纵横比可以用来计算自动尺寸以及为其他布局函数服务。

例子如下:

代码片段

该属性的浏览器兼容情况如下:

🍇 content-visibility属性

CSS的content-visibility属性于控制元素的内容是否显示,主要值就是hiddenvisible(默认值);

该属性如果设置为hidden浏览器就会跳过该元素内容的渲染,需要的时候在将其设置为 visible ,这样可以提高浏览器的渲染速度。

例子如下:

代码片段

该属性的浏览器兼容情况如下:

🍈 gap属性

CSS的gap属性现在已经支持flexBox中使用了,该属性用于设置元素之间的间距,浏览器兼容性如下:

🍉 CSS 容器查询

CSS容器查询说的是CSS container,其中存在一个@contianer规则,该规则可以实时匹配指定容器元素的大小,开发者可以根据不同的大小范围去编写不同的样式;

在使用@container规则之前需要先使用contienr属性建立容器元素,该属性是container-typecontainer-name的缩写:

  • container-type属性:容器类型,该属性有三个值,normal不建立容器元素、size水平和垂直都建立容器元素、inline-size水平建立容器元素;
  • contaienr-name属性:给容器命名,方便@container规则使用,多个容器时非常有用

@container语法如下:

@container [name] 查询条件{
  /* css 规则 */
}

例子如下:

代码片段

浏览器兼容性如下:

这里仅仅介绍了最简单的内容,其他的可以参考:

🍊 object-view-box属性

该CSS属性裁剪或调整<img>或者video,该属性目前在Chrome104中有所支持,在caniuse中目前还没有浏览器兼容情况,该属性的例子如下:

代码片段

更多资料可参考

🍋 媒体查询的语法优化

在媒体查询Level 4的规范中,允许我们使用如下这种写法

/* 媒体查询Level 4之前 */
@media (max-width: 30em) {
  /* … */
}

/* 媒体查询Level 4中 */
@media (width <= 30em) {
  /* … */
}

/* 媒体查询Level 4之前 */
@media (min-width: 30em) and (max-width: 50em) {
  /* … */
}

/* 媒体查询Level 4中 */
@media (30em <= width <= 50em) {
  /* … */
}

该特性的浏览器兼容性如下:

🍌 css 比较函数

CSS中的比较函数目前有三个,分别是min()max()clamp()

这三个函数中min()max()比较好理解,分别是从逗号分隔符表达式中选择一个最小/大值作为CSS的属性值,例子如下:

width: min(20vh, 200px);

clamp()函数可以说一下,该函数接受三个值,语法如下:

clamp(MIN, VAL, MAX)

这三个参数依次分别是最小值、首选值和最大值,这三个值的关系如下:

  • 当首选值比最小值要小时,则使用最小值;
  • 当首选值介于最小值和最大值之间时,用首选值;
  • 当首选值比最大值要大时,则使用最大值。

这个函数实际上就是max()min()函数的嵌套,如下:

max(MIN, min(VAL, MAX))

clamp()函数的例子如下:

代码片段

这三个函数的浏览器兼容性如下:

🍐 max-content、min-content和fit-content

max-contentmin-contentfit-content均可以作为width的属性值使用,他们的区别如下:

这里用 width属性解释,这三个属性值可以作为很多属性的值,例如 heightblock-size等。
  • max-content:内容有多宽,容器就有多宽,不会受父级的限制
  • min-content:宽度是最大内容的最小宽度
  • fit-content:在不超过父级大小的情况下将自己包裹的最大容器

示例如下:

代码片段

🍍 写在最后

如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~

目录
相关文章
|
6月前
|
前端开发 算法 Java
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
226 1
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
447 1
|
10月前
|
前端开发
用 CSS Grid 轻松构建复杂布局
用 CSS Grid 轻松构建复杂布局
396 83
|
9月前
|
Web App开发 前端开发 数据可视化
用 CSS Grid 实现高效布局的 3 个实战技巧
用 CSS Grid 实现高效布局的 3 个实战技巧
|
前端开发 JavaScript 开发者
探索Web设计新纪元:CSS3的革新特性如何重塑我们的网页视觉体验?
【8月更文挑战第26天】随着Web技术的发展,CSS3为前端开发带来了众多激动人心的新特性,极大提升了网页设计的视觉效果与创意空间。本文通过对比CSS3与CSS2,详细介绍了CSS3在选择器增强、圆角阴影处理、渐变背景应用、转换动画实现、文字效果优化、媒体查询支持及多列布局方面的显著改进,展示了CSS3如何助力开发者打造更具吸引力和互动性的网页体验。
221 1
|
前端开发 容器
使用 CSS Grid 布局实现响应式设计
【10月更文挑战第1天】使用 CSS Grid 布局实现响应式设计
561 99
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
534 91
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    449
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    350
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    335
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    226
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    447
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    621
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    924
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    238
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    756
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    417