当前位置: 首页 > news >正文

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);
}

最佳实践建议 💡

  1. 组件设计

    • 独立封装
    • 自适应布局
    • 样式隔离
    • 可复用性
  2. 性能考虑

    • 查询层级
    • 渲染优化
    • 降级方案
    • 资源加载
  3. 开发建议

    • 模块化设计
    • 测试验证
    • 文档完善
    • 维护性考虑
  4. 响应策略

    • 断点设计
    • 布局切换
    • 内容适配
    • 交互优化

写在最后 🌟

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) 是近年来网络领域的一项新技术&#xff0c;“segment” 在这里 指代网络隔离技术&#xff0c;例如 MPLS。如果快速回顾网络设计在过去几十年的 发展&#xff0c;我们会发现 SR 也许是正在形成的第三代网络设计…...

【K8s】专题十五(6):Kubernetes 网络之 Pod 网络调试

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…...

CMake 构建项目并整理头文件和库文件

本文将介绍如何使用 CMake 构建项目、编译生成库文件&#xff0c;并将头文件和库文件整理到统一的目录中以便在其他项目中使用。 1. 项目结构 假设我们正在构建一个名为 rttr 的开源库&#xff0c;初始的项目结构如下&#xff1a; D:\WorkCode\Demo\rttr-master\|- src\ …...

Boost之log日志使用

不讲理论&#xff0c;直接上在程序中可用代码&#xff1a; 一、引入Boost模块 开发环境&#xff1a;Visual Studio 2017 Boost库版本&#xff1a;1.68.0 安装方式&#xff1a;Nuget 安装命令&#xff1a; #只安装下面几个即可 Install-package boost -version 1.68.0 Install…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...