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:在不超过父级大小的情况下将自己包裹的最大容器

示例如下:

代码片段

🍍 写在最后

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

目录
相关文章
|
14天前
|
前端开发 开发者 UED
解锁网页布局的秘密武器:探索 CSS Grid 布局的神奇魔力
解锁网页布局的秘密武器:探索 CSS Grid 布局的神奇魔力
20 3
|
21天前
|
前端开发 容器
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
20 2
|
13天前
|
UED 开发者 容器
【专栏】Flexbox是CSS3的全新布局模式,提供灵活响应式的页面设计
【4月更文挑战第27天】Flexbox是CSS3的全新布局模式,提供灵活响应式的页面设计。其特点包括灵活性、响应式和易理解,通过主轴和交叉轴控制元素排列对齐。核心概念有容器和项目,常用于导航栏、卡片布局、响应式设计、表格和表单布局。关键属性如flex-direction定义主轴方向,justify-content和align-items控制对齐,flex属性调整项目伸缩,order改变排序。在实践中,要关注响应式、代码维护和浏览器兼容性,以优化布局和用户体验。
|
10天前
|
前端开发 UED
【专栏:HTML与CSS实战项目篇】创建一个具有复杂布局的电商详情页
【4月更文挑战第30天】构建复杂布局的电商详情页涉及页面结构规划、样式设计和交互效果实现。首先规划顶部导航栏、商品图片展示区、商品信息区、用户评价区和相关商品推荐区。在样式设计上,注重色彩搭配、字体选择、布局与间距及图片处理。交互效果包括图片放大、添加到购物车按钮、滚动监听和评论互动,以提升用户体验。实际开发中需考虑跨设备兼容性和用户体验优化。
|
10天前
|
编解码 缓存 前端开发
【专栏:HTML与CSS移动端开发篇】移动端网页布局与适配
【4月更文挑战第30天】本文探讨了如何使用HTML和CSS优化移动端网页布局与适配,强调响应式设计、灵活布局和媒体查询的重要性。针对移动设备的屏幕尺寸、操作方式、网络速度和性能差异,提出了断点选择、触摸优化、图像和性能优化等最佳实践。测试和调试、框架工具的应用也是关键步骤,以确保在多设备上提供优秀用户体验。开发者需持续学习新趋势和工具,以适应移动端发展。
|
10天前
|
前端开发 UED 容器
【专栏:CSS进阶篇】CSS Grid布局:构建复杂的二维布局
【4月更文挑战第30天】CSS Grid布局是二维布局系统,适用于复杂页面结构,如页眉、主体和侧边栏。通过定义网格线和单元格,能轻松创建行和列。基本语法包括设置容器为grid容器,定义`grid-template-rows`和`grid-template-columns`。高级特性包括命名网格线、网格区域、网格间隙、重复网格线和自动填充。在实际应用中,CSS Grid能有效提升开发效率和用户体验,尤其在响应式设计和复杂布局场景下。
|
10天前
|
前端开发 开发者 容器
【专栏:CSS进阶篇】CSS Flexbox布局:实现灵活的响应式设计
【4月更文挑战第30天】CSS Flexbox是现代网页设计中创建响应式布局的关键工具,它提供了一种一维布局模型,使元素能灵活适应各种屏幕尺寸。通过设置容器的`display`属性为`flex`,开发者可以利用主轴和交叉轴调整元素排列和对齐方式。核心概念包括弹性项、伸缩性、空间分配和对齐。通过实例,如导航栏、卡片布局、图片画廊和响应式表单,展示了Flexbox在实现响应式设计中的应用。尽管需要注意浏览器兼容性,但掌握Flexbox能帮助开发者构建出功能强大且适应性强的界面。
|
10天前
|
前端开发 UED
【专栏:CSS 进阶篇】CSS3 新特性:过渡、动画与变形
【4月更文挑战第30天】CSS3的过渡、动画和变形三大特性为网页设计注入活力,创造生动丰富的用户体验。过渡提供平滑效果,常用于按钮点击等;动画实现复杂动态效果,适用于滚动字幕等;变形允许元素几何变换,如旋转和缩放。实际应用包括动态导航菜单、图片轮播和加载动画。然而,需注意浏览器兼容性、性能优化和设计平衡。掌握这些特性,将为网页设计带来更多创新可能。
|
10天前
|
前端开发 开发者 容器
【专栏:CSS基础篇】CSS定位与布局:从静态到浮动、定位
【4月更文挑战第30天】本文介绍了CSS定位与布局的基础,包括静态、相对、绝对、固定定位以及浮动。静态定位遵循HTML顺序,相对定位可在正常位置基础上偏移,不占用额外空间。绝对定位基于最近已定位祖先元素定位,脱离文档流。固定定位相对于浏览器窗口定位,无视页面滚动。浮动用于文字环绕图片等,可能导致父元素高度塌陷。Flexbox布局提供更灵活的元素排列和对齐方式,适配各种复杂布局需求。理解并掌握这些布局技术能提升网页设计的灵活性和响应性。
|
10天前
|
前端开发
【专栏:CSS基础篇】CSS盒模型:理解网页布局的核心
【4月更文挑战第30天】CSS盒模型是网页布局关键,将HTML元素视为内容、内边距、边框和外边距的矩形。内容决定元素大小,padding增加内部空间,border设置线条样式,margin控制元素间距。理解盒模型及其计算方式(内容+padding+border+margin)有助于布局设计。通过调整相关属性,实现浮动、Flexbox或定位布局,创建响应式网页。