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

“前端兼容——CSS篇”(进阶版)

“前端兼容——CSS篇”(进阶版)

上一篇文章写了css 兼容问题处理的基础篇 点击这里基础篇—传送门,这里想给粉丝分享一下css 更深一点的兼容场景,和处理方案

在这里插入图片描述

文章目录

  • “前端兼容——CSS篇”(进阶版)
    • 进阶CSS兼容性问题
      • 1. **CSS变量(Custom Properties)的兼容性**
      • 2. **CSS Grid布局中的子元素对齐问题**
      • 3. **CSS Shapes(形状)的兼容性**
      • 4. **CSS Scroll Snap(滚动捕捉)的兼容性**
      • 5. **CSS Aspect Ratio(宽高比)的兼容性**
      • 6. **CSS Container Queries(容器查询)的兼容性**
      • 7. **CSS Houdini的兼容性**
      • 8. **CSS Filters(滤镜)的兼容性**
      • 9. **CSS Variables in Media Queries(媒体查询中的CSS变量)**
      • 10. **CSS Grid与Flexbox的混合使用兼容性**

在这里插入图片描述

进阶CSS兼容性问题

1. CSS变量(Custom Properties)的兼容性

CSS变量是一个强大的功能,它允许开发者在CSS中定义可重用的值。然而,不同浏览器对CSS变量的支持情况存在差异,特别是旧版浏览器。

解决方案:使用PostCSS等工具将CSS变量转换为兼容的CSS代码,或者为不支持CSS变量的浏览器提供回退值。

:root {--main-color: #3498db;--padding: 16px;
}.button {background-color: var(--main-color, #007bff); /* 提供回退值 */padding: var(--padding, 16px);
}

2. CSS Grid布局中的子元素对齐问题

CSS Grid布局为开发者提供了强大的布局能力,但在某些浏览器中,子元素的对齐可能存在问题,特别是当使用align-itemsjustify-items属性时。

解决方案:确保使用最新的浏览器版本,并仔细检查对齐属性的使用。在必要时,可以使用marginflexbox作为回退方案。

.grid-container {display: grid;align-items: center; /* 可能在某些浏览器中不起作用 */justify-items: center;
}/* 回退方案 */
.grid-item {margin: auto;
}

3. CSS Shapes(形状)的兼容性

CSS Shapes允许开发者定义元素的形状,这对于创建复杂的布局和交互效果非常有用。然而,不是所有浏览器都支持CSS Shapes。

解决方案:在使用CSS Shapes之前,检查目标浏览器的支持情况。如果必要,可以使用SVG或JavaScript作为替代方案。

.element {shape-outside: circle(50%);clip-path: circle(50%);
}

4. CSS Scroll Snap(滚动捕捉)的兼容性

CSS Scroll Snap允许开发者控制滚动容器的滚动行为,使滚动更加平滑和可控。然而,这个特性在不同浏览器中的实现和支持情况有所不同。

解决方案:在使用CSS Scroll Snap之前,确保目标浏览器支持该特性。如果不支持,可以考虑使用JavaScript或自定义的滚动逻辑。

.scroll-container {scroll-snap-type: x mandatory;
}.scroll-item {scroll-snap-align: start;
}

5. CSS Aspect Ratio(宽高比)的兼容性

CSS Aspect Ratio允许开发者设置元素的宽高比,这对于保持图像和视频的纵横比非常有用。然而,这个特性在某些浏览器中可能还未得到广泛支持。

解决方案:使用padding-bottompadding-top技巧来模拟宽高比,或者等待浏览器对该特性的更广泛支持。

.aspect-ratio {width: 100%;padding-bottom: 56.25%; /* 16:9 的宽高比 */position: relative;
}.aspect-ratio-content {position: absolute;top: 0;left: 0;width: 100%;height: 100%;
}

6. CSS Container Queries(容器查询)的兼容性

CSS Container Queries允许开发者根据容器的尺寸和其他特性来应用样式,这对于创建响应式布局非常有用。然而,这个特性目前还处于实验阶段,并不是所有浏览器都支持。

解决方案:在使用CSS Container Queries之前,检查浏览器的支持情况。如果不支持,可以考虑使用媒体查询或JavaScript作为替代方案。

.container {container-type: inline-size;
}.item {container-name: item;
}@container item (min-width: 300px) {.item {/* 样式 */}
}

7. CSS Houdini的兼容性

CSS Houdini是一个实验性的技术,它允许开发者创建自定义的CSS属性和值,并在浏览器中使用它们。然而,这个技术目前还处于早期阶段,并不是所有浏览器都支持。

解决方案:在使用CSS Houdini之前,检查浏览器的支持情况。如果不支持,可以等待技术的成熟或寻找其他替代方案。

@houdini.paintWorklet.addModule('my-worklet.js');.element {--my-custom-property: paint(my-custom-paint);
}

8. CSS Filters(滤镜)的兼容性

CSS Filters允许开发者对元素应用各种滤镜效果,如模糊、灰度等。然而,不同浏览器对滤镜的支持情况可能有所不同,特别是对于一些高级的滤镜效果。

解决方案:在使用CSS Filters之前,检查目标浏览器的支持情况。如果必要,可以使用SVG滤镜或JavaScript作为替代方案。

.element {filter: blur(5px);
}

9. CSS Variables in Media Queries(媒体查询中的CSS变量)

在某些情况下,开发者可能希望在媒体查询中使用CSS变量。然而,并不是所有浏览器都支持在媒体查询中直接使用CSS变量。

解决方案:使用JavaScript来动态更新媒体查询中的样式,或者为不支持的浏览器提供回退样式。

:root {--breakpoint: 768px;
}@media (min-width: var(--breakpoint)) {.container {/* 样式 */}
}

10. CSS Grid与Flexbox的混合使用兼容性

在某些布局中,开发者可能需要同时使用CSS Grid和Flexbox。然而,这两种布局方式的混合使用可能在不同浏览器中表现不一致。

解决方案:仔细测试布局在不同浏览器中的表现,并根据需要调整样式。确保使用最新的浏览器版本,并关注浏览器对CSS Grid和Flexbox的支持情况。

.grid-container {display: grid;grid-template-columns: 1fr 1fr;
}.grid-item {display: flex;justify-content: center;align-items: center;
}

到这里的小伙伴,欢迎点赞、评论,收藏

如有前端相关疑问,博主会在第一时间解答,也同样欢迎添加博主好友,共同进步!!!

相关文章:

“前端兼容——CSS篇”(进阶版)

“前端兼容——CSS篇”(进阶版) 上一篇文章写了css 兼容问题处理的基础篇 点击这里基础篇—传送门,这里想给粉丝分享一下css 更深一点的兼容场景,和处理方案 文章目录 “前端兼容——CSS篇”(进阶版)进阶CS…...

使用Docker Compose简化微服务部署

文章目录 Docker Compose简介安装Docker Compose在Windows上安装Docker Compose在macOS上安装Docker Compose在Linux上安装Docker Compose 创建Docker Compose文件创建compose文件构建并运行服务 使用Docker Compose网络定义网络验证网络连接 使用Docker Compose卷定义卷使用卷…...

2025考研各省市网上确认时间汇总!

2025考研各省市网上确认时间汇总! 安徽:11月1日至5日 福建:11月1日-11月5日 山东:10月31日9:00至11月5日12:00 新疆:10月31日至11月4日17:00 湖南:11月1日9:00-4日12:00 广东:10月下旬至1…...

SSL/TLS 密码套件漏洞分析以及修复方法

1. 前言 在当今数字化时代,网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段,广泛应用于各类网络应用中。然而,如同任何技术一样,SSL/TLS 也并非绝对安全,存在着一些可能被攻击者利用的漏洞。本文将深入…...

[Vue warn]: Do not use built-in or reserved HTML elements as component id:

这个Vue警告信息表明不要将内置或保留的HTML元素名称用作组件的ID。在Vue中,组件的ID应该是唯一的,以确保没有冲突。很可能是一个保留字或者是一个内置的HTML元素名称,所以Vue拒绝了这样的用法。 解决方法: 更改组件的ID&#x…...

【大数据学习 | kafka】kafka的shell操作

1. topic的管理命令(kafka-topics.sh) 参数如下: 1.1 创建 # 创建 kafka-topics.sh --bootstrap-server nn1:9092 --create --topic topic_a --partitions 3 --replication-factor 2 # --bootstrap-server 指定集群地址,因为每…...

UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因

两个Gradle工程的现象 在出安卓aab包时,观察到存在以下两个Gradle工程: 1、Intermediate\Android\arm64\gradle (称为arm64的Gradle) 2、Intermediate\Android\gradle(称为根下的Gradle) 它们存在一些小…...

淘宝API接口( item_get- 淘宝商品详情查询)

淘宝商品详情查询 API(item_detail)主要用于获取淘宝商品的详细信息,以下是相关介绍: 请求参数: num_iid:必填参数,代表商品的唯一标识 ID。通过该 ID 可以准确地指定要查询的商品。例如&#…...

Soanrquber集成Gitlab 之 gitlab用户配置和身份验证

集成Gitlab : gitlab用户配置和身份验证 说明: 使得Sonarquber的用户登录与Gitlab的用户登录/认证模块同步 什么是 SonarQube? SonarQube 是一个开源的代码质量管理平台,用于持续检查和分析代码的质量和安全性。它提供了多种功…...

沪深A股上市公司数据报告分析

数据分析报 目录 数据分析报告 1.引言 1.1 背景介绍 1.2 报告目的 1.3 报告范围 1.4 关键术语定义 2. 数据收集与预处理 2.1 数据来源概述 2.2 数据收集过程 2.3 数据预处理步骤 3. 数据可视化 3.1分析地区对公司数量的影响 3.2分析行业分类是否影响公…...

Elasticsearch Search Template 搜索模板

Elasticsearch Search Template 所谓 search template 搜索模板其实就是: 预先定义好查询语句 DSL 的结构并预留参数搜索的时再传入参数值渲染出完整的 DSL ,最后进行搜索 使用搜索模板可以将 DSL 从应用程序中解耦出来,并且可以更加灵活的…...

2024年10月-2025年5月 Oracle 19c OCM 考试安排

2024年10月-2025年5月 Oracle 19c OCM 考试安排: 北京考场: 上海考场: 更新时间:2024年10月25日 Oracle 19c OCM往期学员成绩展示: Oracle 19c OCM认证证书(电子版)...

VMware虚拟机安装KailLinux系统

目录 简介 系统镜像下载 配置虚拟机 安装系统镜像 切换中文界面 后置内容 修改root密码 ssh服务 对互联网的热爱,尝试安装另一套Linux系统。 简介 Kali Linux是一个专为网络安全和渗透测试设计的Linux发行版,它包含了大量安全相关的工具和软件…...

G2 基于生成对抗网络(GAN)人脸图像生成

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 基于生成对抗网络(GAN)人脸图像生成 这周将构建并训练一个生成对抗网络(GAN)来生成人脸图像。 GAN 原理概述 …...

R学习笔记-单因素重复测量方差分析

R语言之重复测量方差分析——ezANOVA的使用与解析 - 知乎 单因素重复测量方差分析(One-Way Repeated Measures ANOVA)——R软件实现 - 梦特医数通 ### 清空environment rm(list ls()) ### 加载包 if (!require("tidyverse")) install.packages("tidyverse&quo…...

HTML练习题:彼岸的花(web)

展示效果: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彼岸の花</title><style…...

(蓝桥杯C/C++)——常用库函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…...

GPT-Sovits-2-微调模型

1. 大致步骤 上一步整理完数据集后&#xff0c;此步输入数据, 微调2个模型VITS和GPT&#xff0c;位置在 <<1-GPT-SoVITS-tts>>下的<<1B-微调训练>> 页面的两个按钮分别执行两个文件: <./GPT_SoVITS/s2_train.py> 这一步微调VITS的预训练模型…...

【数据结构 | PTA】懂蛇语

懂蛇语 在《一年一度喜剧大赛》第二季中有一部作品叫《警察和我之蛇我其谁》&#xff0c;其中“毒蛇帮”内部用了一种加密语言&#xff0c;称为“蛇语”。蛇语的规则是&#xff0c;在说一句话 A 时&#xff0c;首先提取 A 的每个字的首字母&#xff0c;然后把整句话替换为另一…...

Python——自动化发送邮件

在数字化时代&#xff0c;电子邮件是商务沟通和个人联络的重要工具。自动化邮件发送可以节省时间&#xff0c;提高效率。Python&#xff0c;作为一种强大且灵活的编程语言&#xff0c;提供了多种库来支持邮件的自动化发送。本文将详细介绍如何使用Python的smtplib和email库来编…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...