Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录

[1. 现象:](#1. 现象:)

[2. 原因分析:](#2. 原因分析:)

[3. 解决方案:](#3. 解决方案:)

写法一:扩展Preflight

写法二:

[4. 禁用 Preflight](#4. 禁用 Preflight)


  1. 现象:

Antd Vue项目引入TailwindCss之后出现svg icon下移,不能对齐显示的情况,如下图所示

2. 原因分析:

我们需要事先了解TailwindCss的Preflight,这是一套武断的针对 Tailwind 项目预设的基础样式。基于 modern-normalize , Preflight 是一套针对 Tailwind 项目的基础样式,旨在消除跨浏览器的不一致性,并使您的工作更轻松地符合设计系统的约束。

当您在 CSS 中包含 @tailwind base 时,Tailwind 会自动注入以下样式:

css 复制代码
@tailwind base; /* Preflight will be injected here */

@tailwind components;

@tailwind utilities;

默认情况下,图片和其他可替换元素 (比如 svg, video, canvas 等) 是 vertical-align: middle;

tailwindcss生成的output.css文件对svg布局样式设置如下:

css 复制代码
// src/output.css

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  vertical-align: middle;
}

以上配置与Antd Vue的对于svg布局的配置不同,所以导致项目中的svg都下移,显示不对齐的情况发生。

3. 解决方案:

在你的 css 中添加css 覆盖掉tailwindcss默认的值,有两种写法。

写法一:扩展Preflight

在 Preflight 上添加自己的基本样式,只需在 @layer base 指令中添加你的 CSS

css 复制代码
// src/style/tailwindcss.css

@tailwind base;
@layer base {
    svg { 
        display: inline;
        vertical-align: baseline; 
    }
}
@tailwind components;
@tailwind utilities;

通过使用 @layer 指令,Tailwind 将自动将这些样式移到 @tailwind base 的同一位置,以避免出现一些意外问题。

使用 @layer 指令还能告诉 Tailwind 在清除基础样式时考虑这些样式。

写法二:

css 复制代码
// src/style/tailwindcss.css

@tailwind base;
@tailwind components;
@tailwind utilities;

/* 添加下面的代码 */
svg {
  vertical-align: baseline;
}

4. 禁用 Preflight

如果您想完全禁用 Preflight - 可能是因为您要将 Tailwind 集成到现有项目中,或者是因为您想提供自己的基本样式 - 您所需要做的就是在 tailwind.config.js 文件的 corePlugins 部分,设置 preflight 为 false:

javascript 复制代码
  // tailwind.config.js
  module.exports = {
    corePlugins: {
     preflight: false,
    }
  }
相关推荐
程序员大阳10 小时前
副队长JavaScript教程(49)-主动抛出异常与错误类型
javascript·异常处理·error·throw·错误类型
hhhjhl10 小时前
Protobuf.js 跨端三方库仓颉适配全流程
javascript·网络·udp
康小汪10 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南11 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥13 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt13 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn14 小时前
bundle优化
前端
slongzhang_14 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
北冥有鱼15 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚15 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端