tailwindcss 使用

tailwindcss 使用

      • 1、tailwind.config.js 配置参考
      • 2、tailwind.css 配置
      • 3、动态生成css类名
      • 4、配置了qiankun后,@layer不解析了

1、tailwind.config.js 配置参考

module.exports = {mode: "jit", // 3.0以上可不用配置,默认该模式,无法关闭// important: true, // 所有的样式加上important, 这个不建议,因为有时候外部修改内部样式时,应按照外部样式优先,使用 !, 如果加了这个,优先级就按照tailwind文档定义顺序来content: ["./src/**/*.tsx", // src 下面所有的tsx文件,下面component的不生效是写错路径了, /**/ 表示子所有后代// './src/pages/**/*.tsx',// './src/components/**/*.tsx',// './src/layouts/**/*.tsx',],theme: {extend: {// 这里定义的顺序不代表最后css文件class的顺序,看实际情况是按字母排序的,即 c1会在blue之后,同时存在的话会以c1为准colors: {c1: "#333333",c2: "#555555",c3: "#999999",blue: "#4078F6","blue-hover": "#75A5F2","blue-c1": "#75A5F2","blue-c2": "#DDE9FD","blue-c3": "#F1F4FC",red: "#F56E6E",green: "#08C6B9",gray: "#dddddd",green: "#08C6B9",yellow: "#FCA74B",},/*** 批量生成配置, 使用示例: w-card-auto3 、 !w-card-auto3*/width: [3, 4].reduce((obj, current) => {const calcStr = `calc((100% - ${16 * (current - 1)}px) / ${current})`;obj[`card-auto${current}`] = calcStr;return obj;}, {}),},},/* 解决tailwindcss与antd冲突,Button按钮透明 */corePlugins: {preflight: false,},
};

JIT:3.0可不用配置,默认就是该模式,无法关闭。 按需加载样式,定义在extend中的样式也一样,没被用到,不会加载。另外,如果在一个页面中,有动态计算的样式,会因为在编译阶段没有该样式导致不生效;

2、tailwind.css 配置

@tailwind base;
@tailwind components;
@tailwind utilities; /* 或者
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';
*/

3、动态生成css类名

这里的需求是:显示卡片个数根据页面宽度自适应,1600及以上显示4个,以下显示3个。
解决方法:

1、less 动态计算: each 或者 for 函数 —— (推荐方式)

/** each 示例: 均分卡片,局限: 每次多个一行显示数量就要新增range */
@range: 3,4;
each(@range,{.card-auto@{value}{width: calc(~'(100% - 16px * (@{value} - 1)) / @{value}') !important;/***用上面的转义形式,下面这种写法,偶尔100%取值有问题,取的不是父级宽度,导致整个页面被拉的很宽,但有时又是好的,没找到原因??width: calc((100% - 16px * (@value - 1)) / @value) !important; */}
});/** for 示例,生成4个,默认从3开始 */
.gen-range(4);
.gen-range(@n, @i: 3) when (@i =< @n) {.card-auto@{i}{width: calc(~'(100% - 16px * (@{i} - 1)) / @{i}') !important;}.gen-range(@n, (@i+1));
}
const cfgArr = [{ minWidth: 1920, num: 4 },{ minWidth: 1660, num: 3 },
],// 根据当前页面宽度,和上面的配置信息,生成当前卡片显示数量
const getShowCardNum = () => {const width = document.body.clientWidth;let num = 4;for (let i = 0; i < slideCfgArr.length; i++) {const item = slideCfgArr[i];if (width >= item.minWidth) {num = item.num;break;}// 最后一个没有匹配上就按最后一个来if (i === slideCfgArr.length - 1 && width < item.minWidth) {num = item.num;}}return num
}
// 卡片样式,均分宽度: 动态css,num 为显示数量,取值 3或者4
// 通过css module方式,不会造成全局污染,且num可任意变化,只要@range中有这个值
const cardClassName = styles[`card-auto${num}`];

2、媒体查询 @media, 通过css来计算宽度;

缺点:后续如果有新增,需要增加新的media规则。该实现样式,导致组件在哪里使用都是一样的规则,无法定制。

3、js动态计算css className,通过tailwindcss批量生成配置,从而获得对应css样式
。这个最大问题在于只能是非JIT模式, 在JIT模式下动态定义的样式不会解析出来。

JIT模式下,如果样式可预见,可以在某个页面处固定写死那些动态生成的classname, 触使它解析。

// cardClassName 添加 important 覆盖之前的定义
const cardClassName = `!calc((100%-16px*${num-1}/${num-1})`;
<div className={`w-[calc((100%-32px)/3)] w-[calc((100%-32px)/3)] ${cardClassName}`}></div>

4、配置了qiankun后,@layer不解析了

??

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新能源汽车的电驱热管理

前言 新能源汽车的电驱热管理是指维持电动汽车电池、电机和电控系统在适宜的工作温度范围内&#xff0c;保障车辆高效、安全、稳定运行的技术方案。随着新能源汽车的快速发展和普及&#xff0c;电驱热管理技术也日益成为关注焦点。本文将从电池、电机和电控系统三个方面介绍新…

cmake配置opencv与boost库

Cmake配置外部依赖库&#xff08;以Opencv和Boost为例&#xff09; Cmake对于外部依赖库&#xff0c;需要知道外部库的头文件路径&#xff0c;库文件路径以及库的名字。比如&#xff0c;对于要使用的Boost库&#xff0c;需要知道头文件的位置&#xff0c;库目录的位置以及库依…

牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具

1、背景 在当今快节奏的软件开发环境中&#xff0c;设计师与开发者之间的协同工作显得尤为重要。然而&#xff0c;理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本。为此&#xff0c;开源社区中出现了一个引人注目的项目——screenshot-to-code&#xff0c;它利用…

vue富文本层级高

在Vue中处理复杂的层级关系&#xff0c;通常可以使用组件和递归组件来构建富文本树形结构。以下是一个简单的例子&#xff0c;展示了如何使用Vue组件来构建一个树形控件 <template><div><tree-node v-for"node in treeData" :key"node.id&quo…

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,支持自然语言查询

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端&#xff0c;支持自然语言查询 The professional GUI, IDE and client for MongoDB 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t/&#xff0c;查看最新版。原创作品&#xff…

智能合作:多AI协同助力传统工作流

背景介绍 红杉资本2024 AI AGENT大会上吴恩达再次介绍了AI四大设计模式即&#xff1a; 反思&#xff08;Reflection)&#xff1b;工具使用&#xff08;Tool use&#xff09;&#xff1b;规划&#xff08;Planning)&#xff1b;多智能体协作(Multi-agent collaboration)&#…

基于深度学习和去卷积的盲源分离方法在旋转机械上的应用

关键词&#xff1a;预测性维护、盲源分离、振动分析、传递函数移除、二阶循环平稳性、轴承监测、机器学习 振动是旋转机械中主要的故障指示器&#xff0c;它们主要来源于两个方面&#xff1a;一个是与齿轮相关的振动&#xff08;主要源于齿轮啮合过程中的冲击和不平衡负载&…

【云原生--K8S】K8S python接口研究

文章目录 前言一、搭建ubuntu运行环境1.运行ubuntu容器2.拷贝kubeconfig文件二、python程序获取k8s信息1.获取node信息2.获取svc信息3.常用kubernetes API总结前言 在前面的文章中我们都是通过kubectl命令行来访问操作K8S,但是在实际应用中可能需要提供更方便操作的图形化界面…

(完全解决)Python字典dict如何由键key索引转化为点.dot索引

文章目录 背景解决方案基础版升级版 背景 For example, instead of writing mydict[‘val’], I’d like to write mydict.val. 解决方案 基础版 I’ve always kept this around in a util file. You can use it as a mixin on your own classes too. class dotdict(dict)…

Flutter 中的 StatusTransitionWidget 小部件:全面指南

Flutter 中的 StatusTransitionWidget 小部件&#xff1a;全面指南 在Flutter中&#xff0c;StatusTransitionWidget不是一个内置的组件&#xff0c;但它可以代表一种自定义小部件的概念&#xff0c;用于在不同的状态之间进行转换。例如&#xff0c;这可以是一个网络加载指示器…

浅析深度学习模型的鲁棒性

鲁棒性是指系统或者事物在面对各种不确定性、干扰、变化或攻击时能够保持稳定性和有效性的能力。在计算机科学领域&#xff0c;鲁棒性通常指的是软件、算法或系统在面对各种异常情况或者输入变化时能够正确地运行或者提供合理的输出的能力。 举个例子&#xff0c;一个鲁棒性强的…

LuatOS-Air二次开发学习

LuatOS简介 在介绍LuatOS-Air之前&#xff0c;先介绍下LuatOS。 LuatOS是合宙自研的嵌入式操作系统。覆盖各类物联网应用场景&#xff0c;可运行于4G Cat.1/MCU/NB-IoT/2G/Wi-Fi/蓝牙等等不同的物联网主控芯片。通过完善的嵌入式操作系统LuatOS&#xff0c;使得物联网主控CPU更…

【数据结构课程学习】二叉树_堆:Lesson2

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 1.二插树的概念和结构 &#x1f697;二叉树的概念&#xff1a; &#x1f697;特殊的二叉树&am…

c++ using 关键字

在C中&#xff0c;using 关键字有多种用途&#xff0c;但最常见的用途之一是在命名空间&#xff08;namespace&#xff09;中引入名称&#xff0c;以避免在代码中频繁使用命名空间前缀。此外&#xff0c;using 还可以用于类型别名&#xff08;typedef 的替代品&#xff09;和模…

Gitee的原理及应用详解(一)

本系列文章简介&#xff1a; Gitee是一款开源的代码托管平台&#xff0c;是国内最大的代码托管平台之一。它基于Git版本控制系统&#xff0c;提供了代码托管、项目管理、协作开发、代码审查等功能&#xff0c;方便团队协作和项目管理。Gitee的出现&#xff0c;在国内的开发者社…

LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制&#xff0c;帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述…

ssms用户登陆失败,服务器处于单用户模式。目前只有一位管理员能够连接。解决方案

文章目录 问题解决方案单用户模式什么是单用户模式&#xff1f;为什么使用单用户模式&#xff1f;实现步骤 问题 连接smss的时候发现无法连接&#xff0c;显示 服务器处于单用户模式。目前只有一位管理员能够连接 解决方案 打开SQL Server配置管理器 右键属性 在启动参数的最…

[集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类

接着[集群聊天服务器]----(六)业务模块之用户注册、登录、退出以及客户端异常退出函数中对于业务模块的用户注册、登录、退出以及客户端异常退出函数的剖析&#xff0c;现在我们对点对点聊天以及添加好友的实现进行剖析。 点对点聊天 当客户端输入msgidONE_CHAT_MSG时&#x…

Java集合框架提供了一系列用于存储和操作数据集合的接口和类

Java集合框架&#xff08;Java Collections Framework&#xff09;是Java标准库的一部分&#xff0c;它提供了一系列用于存储和操作数据集合的接口和类。这个框架的设计目标是提供一种统一的方式来处理不同类型的集合&#xff0c;使得集合的使用更加方便、灵活和高效。 Java集…

网络系统防护技术

文章目录 访问控制授权口令权限系统主要组成部分&#xff1a;工作流程&#xff1a;安全特性&#xff1a;口令系统与口令攻击Web服务器的口令系统安全口令 权限管理基础设施PMIPMI属性证书结构 防火墙技术防火墙简介包过滤防火墙应用网关防火墙代理服务防火墙状态检测防火墙 访问…