如何在顺风CSS中的条件上添加样式

Posted

技术标签:

【中文标题】如何在顺风CSS中的条件上添加样式【英文标题】:How to add a style on a condition in tailwind css 【发布时间】:2021-07-26 17:40:06 【问题描述】:

我正在使用Tailwind CSS在反应中进行侧面,我必须在选择特定链接时添加边界红色。所以我正在使用这种方法但这不起作用任何人都可以在这里帮助我

<li className="flex items-center space-x-2 px-4 py-5 transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-110 border-l-4 border-white" + (window.location.pathname === '/' ? 'border-red-200' : '')>
              <NavLink to="/">
                <div className="sidebar">
                  <div className="float-left">
                    <svg
                      xmlns="http://www.w3.org/2000/svg"
                      className="h-8 w-6 text-red-400"
                      fill="none"
                      viewBox="0 0 24 24"
                      stroke="currentColor"
                    >
                      <path
                        strokeLinecap="round"
                        strokeLinejoin="round"
                        strokeWidth=2
                        d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
                      />
                    </svg>
                  </div>
                  <span className="text-2xl float-right pl-5">
                    Home
                  </span>
                </div>
              </NavLink>
            </li>

【问题讨论】:

我不确定情况。见reactrouter.com/web/api/NavLink/activeclassname-string。或者,尝试使用空格:' border-red-200' 感谢它的工作,但现在当我更改为另一个链接时,边框颜色仍然存在,它不会自行更新。我有 5 个其他列表元素,条件正常。当我刷新页面时它工作正常。 试试activeClassName或useLocation钩子。 【参考方案1】:

使用模板文字,或使用 npm 库classnames。

使用模板文字
<... className=`flex items-center space-x-2 px-4 py-5 transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-110 border-l-4 border-white $window.location.pathname === '/' ? 'border-red-200' : ''`>

使用类名
import classNames from 'classnames';

<... className=classNames('flex items-center space-x-2 px-4 py-5 transition duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-110 border-l-4 border-white',
     
        'border-red-200': window.location.pathname === '/' 
    
)>

【讨论】:

【参考方案2】:
className=yourItem === value ? 'your-class' : 'or-default-to'

` /* 如果您的设置条件为真,则应用类。下面的例子*/

className=active === value ? 'text-green' : 'text-white'

class=active === value ? 'text-green' : 'text-white'

【讨论】:

【参考方案3】:

对于 NavLink 组件,您可以使用 activeStyle 属性在链接处于活动状态时应用样式。

<NavLink
   to="/"
   activeStyle=
   border-bottom: "2px solid red"; 
      
    >
     Link Name
</NavLink>

【讨论】:

以上是关于如何在顺风CSS中的条件上添加样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在顺风中禁用继承?

如何在 Next.js 中使用带有顺风 css 的 React Suite?

如何使用顺风 css 进行页面转换并做出反应?

顺风 css flex-col-reverse 不起作用

使用顺风 css 在大屏幕中设置半径

在反应中使用顺风 css 为范围滑块添加自定义工具提示