CSS系列(40)-- Container Queries详解
前端技术探索系列:CSS Container Queries详解 📦
致读者:探索组件响应式的艺术 👋
前端开发者们,
今天我们将深入探讨 CSS Container Queries,这个强大的组件级响应式特性。
基础概念 🚀
容器定义
/* 容器设置 */
.container {container-type: inline-size;/* 或 */container-type: size;/* 或 */container-type: normal;
}/* 容器命名 */
.named-container {container-name: sidebar;container-type: inline-size;
}/* 简写语法 */
.shorthand {container: sidebar / inline-size;
}
查询语法
/* 基础查询 */
@container (min-width: 400px) {.component {display: grid;grid-template-columns: repeat(2, 1fr);}
}/* 命名容器查询 */
@container sidebar (max-width: 300px) {.sidebar-component {flex-direction: column;}
}/* 样式查询 */
@container (aspect-ratio > 1) {.card {flex-direction: row;}
}
高级特性 🎯
组件自适应
/* 卡片组件 */
.card-container {container-type: inline-size;
}.card {display: grid;gap: 1rem;
}@container (min-width: 300px) {.card {grid-template-columns: auto 1fr;}.card-image {aspect-ratio: 1;}
}@container (min-width: 500px) {.card {grid-template-columns: auto 1fr auto;}.card-actions {justify-self: end;}
}
布局控制
/* 布局切换 */
.layout-container {container-type: size;
}.flex-grid {display: flex;flex-wrap: wrap;gap: 1rem;
}@container (min-width: 600px) {.flex-grid {display: grid;grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));}
}/* 嵌套容器 */
.nested-container {container-type: inline-size;
}@container (min-width: 400px) {.nested-content {container-type: inline-size;}@container (min-width: 300px) {.nested-item {display: grid;grid-template-columns: 1fr 1fr;}}
}
实际应用 💫
导航组件
/* 响应式导航 */
.nav-container {container-type: inline-size;
}.nav {display: flex;flex-direction: column;
}@container (min-width: 500px) {.nav {flex-direction: row;justify-content: space-between;}.nav-menu {display: flex;gap: 1rem;}
}@container (min-width: 800px) {.nav-menu {gap: 2rem;}.nav-item {position: relative;}.dropdown {position: absolute;}
}
表单布局
/* 自适应表单 */
.form-container {container-type: inline-size;
}.form-group {display: flex;flex-direction: column;
}@container (min-width: 400px) {.form-group {flex-direction: row;align-items: center;}.form-label {flex: 0 0 150px;}.form-input {flex: 1;}
}@container (min-width: 600px) {.form-actions {margin-left: 150px;}
}
性能优化 ⚡
查询优化
/* 性能考虑 */
.optimized-container {container-type: inline-size;contain: layout style;
}/* 条件加载 */
@supports (container-type: inline-size) {.container-query {/* 容器查询样式 */}
}/* 回退方案 */
.component {/* 基础样式 */
}@media (min-width: 768px) {.component {/* 媒体查询回退 */}
}@container (min-width: 400px) {.component {/* 容器查询增强 */}
}
布局优化
/* 布局包含 */
.contained-layout {container-type: inline-size;contain: layout;content-visibility: auto;
}/* 渲染优化 */
.render-optimized {container-type: inline-size;will-change: transform;transform: translateZ(0);
}
最佳实践建议 💡
-
组件设计
- 独立封装
- 自适应布局
- 样式隔离
- 可复用性
-
性能考虑
- 查询层级
- 渲染优化
- 降级方案
- 资源加载
-
开发建议
- 模块化设计
- 测试验证
- 文档完善
- 维护性考虑
-
响应策略
- 断点设计
- 布局切换
- 内容适配
- 交互优化
写在最后 🌟
CSS Container Queries为我们提供了创建真正模块化和自适应组件的强大能力,通过合理运用这一特性,我们可以构建出更加灵活和可维护的前端应用。
进一步学习资源 📚
- 容器查询规范
- 组件设计模式
- 性能优化指南
- 实战案例分析
如果你觉得这篇文章有帮助,欢迎点赞收藏,也期待在评论区看到你的想法和建议!👇
终身学习,共同成长。
咱们下一期见
💻
相关文章:
CSS系列(40)-- Container Queries详解
前端技术探索系列:CSS Container Queries详解 📦 致读者:探索组件响应式的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Container Queries,这个强大的组件级响应式特性。 基础概念 🚀 容…...
工作生活做事慢效率低原因及解决方案
时间和效率管理具体版(初阶)(一) 工作&生活做事慢效率低原因及解决方案 一、效率慢的原因(动物解析法(编者自创)) 打败你的可能是生活的小事 1.无头苍蝇无流程 做事之前没有想…...
各种数据库类型介绍
在软件开发和数据处理领域,数据库扮演着至关重要的角色。它们用于存储、检索和管理大量数据,是信息系统不可或缺的基础。以下是几种常用的数据库类型及其简要介绍: 1.关系型数据库(Relational Databases) 关系型数据库…...
了解智能运维
智能运维 (一)运维工作的转变 随着技术发展,运维工作从基础的搬机器、插网线、装系统等体力活儿,逐渐转变为更侧重服务器管理、代码管理、日志分析、监控告警、流量管理及故障排查等的脑力劳动。如今,运维人员拿到的…...
js实现仿windows文件名称排序
引言: 在JavaScript中,数组排序是一个常见的操作,但默认的Array.sort()方法只能进行简单的字符串比较。在处理复杂数据时,我们需要自定义排序函数来满足特定的需求。本文将通过一个具体的代码示例,解释如何实现一个仿w…...
基于Oauth2的SSO单点登录---前端
Vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统框架,提供了丰富的组件和功能,可以帮助开发者快速搭建现代化的后台管理系统。 一、基本知识 (一)Vue-element-admin 的主要文件和目录 vue-element-admin/ |--…...
springboot 使用注解设置缓存时效
springboot 使用注解设置缓存时效 import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.cache.RedisCache; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCach…...
QGIS二次开发(地图符号库操作)
实习三 地图符号库操作 3.1 任务要求 基于QGIS,实现地图符号的设计/存储与显示;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…...
线性代数行列式
目录 二阶与三阶行列式 二元线性方程组与二阶行列式 三阶行列式 全排列和对换 排列及其逆序数 对换 n阶行列式的定义 行列式的性质 二阶与三阶行列式 二元线性方程组与二阶行列式 若是采用消元法解x1、x2的话则得到以下式子 有二阶行列式的规律可得:分…...
Vision Transformer (ViT) 论文的第二句话
Vision Transformer (ViT) 论文的第二句话 flyfish 原句: “In vision, attention is either applied in conjunction with convolutional networks, or used to replace certain components of convolutional networks while keeping their overall structure in…...
Github 2024-12-27 Java开源项目日报Top10
根据Github Trendings的统计,今日(2024-12-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Kotlin项目1C#项目1非开发语言项目1C++项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型:Ot…...
气相色谱-质谱联用分析方法中的常用部件,分流平板更换
分流平板,是气相色谱-质谱联用分析方法中的一个常用部件,它可以实现气相色谱柱流与MS检测器流的分离和分流。常见的气质联用仪分流平板有很多种,如单层T型分流平板、双层T型分流平板、螺旋分流平板等等。 操作视频http://www.spcctech.com/v…...
centos7 免安装mysql5.7及配置(支持多个mysql)
一) 下载免安装包: mysql下载地址: https://dev.mysql.com/downloads/mysql/下载时,选择以前5.7版本: image 下载第一个TAR压缩包: image 二) 定义安装路径并解压安装包 1、假设需要把MySQL放到 /usr/local…...
Python的Pandas--Series的创建和实现
1.Series函数的格式: pandas.Series(data,index,dtype,name,copy) data:一组数据(ndarray类型、list、dict等类)或标量值 index:数据索引标签。如果不指定,默认为整数,从0开始 dtype&#x…...
OCR实践-问卷表格统计
前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上,欢迎参考使用,Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明:对手动拍照的问卷图片进行统计分数(对应分数…...
uniapp中的条件编译
在script中 // #ifdef APP-PLUS console.log("11"); // #endif// #ifdef MP-WEIXIN console.log("22"); // #endif 在template中 <!-- #ifdef APP-PLUS --><view>哈哈哈</view> <!-- #endif --><!-- #ifdef MP-WEIXIN -->…...
Segment Routing Overview
大家觉得有意义和帮助记得及时关注和点赞!!! Segment Routing (SR) 是近年来网络领域的一项新技术,“segment” 在这里 指代网络隔离技术,例如 MPLS。如果快速回顾网络设计在过去几十年的 发展,我们会发现 SR 也许是正在形成的第三代网络设计…...
【K8s】专题十五(6):Kubernetes 网络之 Pod 网络调试
本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…...
CMake 构建项目并整理头文件和库文件
本文将介绍如何使用 CMake 构建项目、编译生成库文件,并将头文件和库文件整理到统一的目录中以便在其他项目中使用。 1. 项目结构 假设我们正在构建一个名为 rttr 的开源库,初始的项目结构如下: D:\WorkCode\Demo\rttr-master\|- src\ …...
Boost之log日志使用
不讲理论,直接上在程序中可用代码: 一、引入Boost模块 开发环境:Visual Studio 2017 Boost库版本:1.68.0 安装方式:Nuget 安装命令: #只安装下面几个即可 Install-package boost -version 1.68.0 Install…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
