我同时使用RadixUi和TailwinCss,但在RadixUI组件上应用TailwinCss类或CSS类时,Style类不会重写RadixUi的样式.

<TextField.Input
    className="[&&]:h-[57px] [&]:rounded-[8px] text3 [&&]:border-1 [&&]:border-solid 
    [&&]:border-second_black"
    placeholder="Enter your email"
/>

我必须添加"[&amp;&amp;]:"才能使该类成为优先级?为什么会这样呢?我怎么才能让我的css或tawinCss突出,而不是RadixUi样式呢?

推荐答案

[&&]会增加class specificity,但您不应该依赖它,因为您永远不知道要与第三方组件的CSS竞争您需要的专用性有多高.它很难保持一致,在进行一些微小的更新后,它可能会随机中断.(不过,如果你真的想做的话,你可以做[&&&&&&&&&&&&&]这样的事……)

在tailwind 中,您通过在开头添加!来使实用程序变得重要,因此您应该这样做:

<TextField.Input
    className="!h-[57px] !rounded-[8px] !text-3 !border-solid !border-second_black"
    placeholder="Enter your email"
/>

然而,对于RadixUi Textfield,似乎即使省略了TextField.Root,它仍然会随子rt-TextFieldChrome div(由TextField.Input覆盖)一起生成.因此,InputTextFieldChrome上都需要应用边框样式.否则,在Input上添加边框半径后,覆盖的div将如下所示:(为了更好地演示,我已经使边框半径和 colored颜色 更有意义)

Not selecting both child

如果在TextField.Root下包含其他组件,则可以使用[&>*]同时 Select 这两个组件,或者同时指定[&>input][&>.rt-TextFieldChrome]:

<TextField.Root className="[&>*]:!rounded-[50px] [&>*]:!border-solid">
    <TextField.Input className="!h-[57px]" placeholder="Search the docs…"/>
</TextField.Root>

What is [&&] and why it works?

tailwind 中&的用法是arbitrary variants,其中&表示要修改的 Select 器.

首先,让我们以文档的示例[&:nth-child(3)]:underline来解释它是如何工作的.这里&将被当前 Select 符(类名[&:nth-child(3)]:underline带有一串转义字符\以避免保留的CSS关键字)and a dot in front替换,生成如下内容:

/* Selecting elements with class name "[&:nth-child(3)]:underline",
   but only when it’s the third child. */
.\[\&\:nth-child\(3\)\]\:underline:nth-child(3) {
  text-decoration-style: underline /*this is the style from :underline*/
}

现在看[&&]:h-[57px],每个&将被替换为一个点和当前 Select 器(类名[&&]:h-[57px]),因此生成的 Select 器将是.[&&]:h-[57px].[&&]:h-[57px],它 Select 所有类为[&&]:h-[57px][&&]:h-[57px]的元素.

虽然 Select 同一个类两次并不会对 Select 哪些元素产生影响,但因为现在这个css声明中包括了两个类 Select 器,所以它的类列的特殊性从1增加到2,这使得 Select 应用它的css更具竞争力.

Css相关问答推荐

如何在Bootstrap 5上使用移动设备居中内容?

SVG样式中的CSS类名是否是全局的?

混合网格自动布局与固定的行列位置

带插值的 Sass 数学函数

在 SVG 元素上方添加标签而不移动 SVG 元素

CSS 字符串变量的正确null值是多少?

我怎样才能将我的按钮向上移动,因为文本是

网格在行方向上的大小不正确

Blazor 组件未链接 css

如何为使用jsTreeR拖入层次 struct node 的元素添加顺序编号?

CSS 常量()用于什么?

我怎样才能让这个边框出现在按钮元素的上方?

为什么不能将特定于供应商的伪元素/类组合成一个规则集?

CSS3 变换:旋转;在 IE9 中

如何使多个 div 显示在一行中但仍保留宽度?

谷歌浏览器两种元素样式的区别

删除行内块元素中大文本上方和下方的空白

CSS 外边框

bootstrap 关闭响应菜单点击

如何实现最大字体大小?