Tailwind CSS 的颜色 类 在附加时不起作用
Color classes of Tailwind CSS not working when appended
有一个使用 Tailwind CSS v3 构建的登录页面,所有样式都很好。但是在登录页面上,我希望在出现任何错误时显示计时器警报,例如无效电子邮件,电子邮件已经在使用中。
做了什么:
所以我在提交按钮上方的登录页面中创建了一个 <div id="su-error-container">
,默认情况下该按钮为空,每当发生错误时,js 都会创建一个元素并将其附加到 Tailwind [=29] 中出现的 div =] 类 在里面。
但问题是,类 padding, margin, text size 等都可以正常工作,但是 text-color, bg-color 类 不工作。
代码:-
parentElement = document.querySelector("#su-error-container");
alertMainDiv = document.createElement("div");
alertSpan = document.createElement("span");
alertMainDiv.className = "mb-10 bg-red-500";
alertSpan.className = "font-medium";
titleTextNode = document.createTextNode(title);
messageTextNode = document.createTextNode(message);
alertSpan.appendChild(titleTextNode);
alertMainDiv.appendChild(alertSpan);
alertMainDiv.appendChild(messageTextNode);
parentElement.appendChild(alertMainDiv);
从 Dev Tools 复制的元素 Chrome:
<div class="mb-10 bg-red-500"><span>Sign Up Error: </span>Invalid Email Address</div>
其他 类 有效,但颜色 类,如果需要任何额外信息,请评论!
tailwind.config.js
module.exports = {
content: ["./*.html", "./assets/**/*.js"],
theme: {
screens: {
sm: "540px",
// => @media (min-width: 576px) { ... }
md: "720px",
// => @media (min-width: 768px) { ... }
lg: "960px",
// => @media (min-width: 992px) { ... }
xl: "1140px",
// => @media (min-width: 1200px) { ... }
"2xl": "1320px",
// => @media (min-width: 1400px) { ... }
},
container: {
center: true,
padding: "16px",
},
extend: {
colors: {
black: "#212b36",
dark: "#090E34",
"dark-700": "#090e34b3",
primary: "#3056D3",
secondary: "#13C296",
"body-color": "#637381",
warning: "#FBBF24",
},
boxShadow: {
input: "0px 7px 20px rgba(0, 0, 0, 0.03)",
pricing: "0px 39px 23px -27px rgba(0, 0, 0, 0.04)",
"switch-1": "0px 0px 5px rgba(0, 0, 0, 0.15)",
testimonial: "0px 60px 120px -20px #EBEFFD",
},
},
},
variants: {
extend: {},
},
plugins: [],
};
你在这里混淆了一些东西。首先,关于这一行:
alertMainDiv.className += "mb-10 bg-red-500";
知道您刚刚创建了元素,您应该使用 =
运算符 分配 className,而不是附加运算符 +=
.
那么,关于这一行:
alertSpan.class = "font-medium";
正如您在 docs 中看到的那样,您应该使用 className
DOM 属性 代替(您已经在上面的一行中使用过):
Note: The class is an HTML Attribute, while the className is a DOM Property.
正确分配
alertMainDiv.className = "mb-10 bg-red-500";
alertSpan.className = "font-medium";
所以我弄清楚了问题出在哪里。
所以从 tailwind 的工作原理开始。
当我们在 tailwind 中使用任何 classes 时,并不是所有的 tailwind classes 都被加载。
Tailwind 扫描文件并仅加载文件中使用过的 classes。
在我的场景中,我在警报后附加了 class,例如 bg-red-300
或 text-red-500
,它们在整个项目的任何地方都没有使用。
所以这意味着 Tailwind CSS 没有在 CSS 文件中加载这个 classes,因此颜色 classes 没有用。
解决方案:
我在 index.html 中创建了一个隐藏的 div,其中包含一个 div,其中使用了这些 classes,因为这个 div 具有 class hidden 它在扫描文件时对用户和 Tailwind 不可见,将此 classes 添加到要提供的 CSS 文件中,因此现在在注册页面中附加警报时,它工作得很好!
有一个使用 Tailwind CSS v3 构建的登录页面,所有样式都很好。但是在登录页面上,我希望在出现任何错误时显示计时器警报,例如无效电子邮件,电子邮件已经在使用中。
做了什么:
所以我在提交按钮上方的登录页面中创建了一个 <div id="su-error-container">
,默认情况下该按钮为空,每当发生错误时,js 都会创建一个元素并将其附加到 Tailwind [=29] 中出现的 div =] 类 在里面。
但问题是,类 padding, margin, text size 等都可以正常工作,但是 text-color, bg-color 类 不工作。 代码:-
parentElement = document.querySelector("#su-error-container");
alertMainDiv = document.createElement("div");
alertSpan = document.createElement("span");
alertMainDiv.className = "mb-10 bg-red-500";
alertSpan.className = "font-medium";
titleTextNode = document.createTextNode(title);
messageTextNode = document.createTextNode(message);
alertSpan.appendChild(titleTextNode);
alertMainDiv.appendChild(alertSpan);
alertMainDiv.appendChild(messageTextNode);
parentElement.appendChild(alertMainDiv);
从 Dev Tools 复制的元素 Chrome:
<div class="mb-10 bg-red-500"><span>Sign Up Error: </span>Invalid Email Address</div>
其他 类 有效,但颜色 类,如果需要任何额外信息,请评论!
tailwind.config.js
module.exports = {
content: ["./*.html", "./assets/**/*.js"],
theme: {
screens: {
sm: "540px",
// => @media (min-width: 576px) { ... }
md: "720px",
// => @media (min-width: 768px) { ... }
lg: "960px",
// => @media (min-width: 992px) { ... }
xl: "1140px",
// => @media (min-width: 1200px) { ... }
"2xl": "1320px",
// => @media (min-width: 1400px) { ... }
},
container: {
center: true,
padding: "16px",
},
extend: {
colors: {
black: "#212b36",
dark: "#090E34",
"dark-700": "#090e34b3",
primary: "#3056D3",
secondary: "#13C296",
"body-color": "#637381",
warning: "#FBBF24",
},
boxShadow: {
input: "0px 7px 20px rgba(0, 0, 0, 0.03)",
pricing: "0px 39px 23px -27px rgba(0, 0, 0, 0.04)",
"switch-1": "0px 0px 5px rgba(0, 0, 0, 0.15)",
testimonial: "0px 60px 120px -20px #EBEFFD",
},
},
},
variants: {
extend: {},
},
plugins: [],
};
你在这里混淆了一些东西。首先,关于这一行:
alertMainDiv.className += "mb-10 bg-red-500";
知道您刚刚创建了元素,您应该使用 =
运算符 分配 className,而不是附加运算符 +=
.
那么,关于这一行:
alertSpan.class = "font-medium";
正如您在 docs 中看到的那样,您应该使用 className
DOM 属性 代替(您已经在上面的一行中使用过):
Note: The class is an HTML Attribute, while the className is a DOM Property.
正确分配
alertMainDiv.className = "mb-10 bg-red-500";
alertSpan.className = "font-medium";
所以我弄清楚了问题出在哪里。 所以从 tailwind 的工作原理开始。
当我们在 tailwind 中使用任何 classes 时,并不是所有的 tailwind classes 都被加载。 Tailwind 扫描文件并仅加载文件中使用过的 classes。
在我的场景中,我在警报后附加了 class,例如 bg-red-300
或 text-red-500
,它们在整个项目的任何地方都没有使用。
所以这意味着 Tailwind CSS 没有在 CSS 文件中加载这个 classes,因此颜色 classes 没有用。
解决方案:
我在 index.html 中创建了一个隐藏的 div,其中包含一个 div,其中使用了这些 classes,因为这个 div 具有 class hidden 它在扫描文件时对用户和 Tailwind 不可见,将此 classes 添加到要提供的 CSS 文件中,因此现在在注册页面中附加警报时,它工作得很好!