【问题标题】:How to select a ReactJS component in CSS如何在 CSS 中选择 ReactJS 组件
【发布时间】:2020-06-20 18:28:28
【问题描述】:

我正在尝试为一些 ReactJS 组件设置一些 CSS 值。

有没有办法通过组件来访问组件?

想象一下这个 ReactJS 组件:

import './assets/css/custom.css'

<Navbar collapseOnSelect expand="lg" bg="dark" variant="dark" sticky="top" className="navbar-custom-main">
      <Navbar.Toggle aria-controls="responsive-navbar-nav" />
      <Navbar.Collapse id="responsive-navbar-nav">
        <Nav className="mx-auto justify-content-center ">
          <Nav.Link href="#features" clas>Home</Nav.Link>
          <Nav.Link href="#pricing">Little Do you Know</Nav.Link>
          <Nav.Link href="#pricing">My Work</Nav.Link>
          <Nav.Link href="#pricing">Resume</Nav.Link>
        </Nav>
      </Navbar.Collapse>
    </Navbar>

如何使用 CSS 设置 Nav.Link 部分的字体颜色?

我在我的custom.css 中试过这个:

Nav Nav.Link {
color: "red"  !important;
}

而且它不起作用。有什么办法可以做到吗?

【问题讨论】:

  • 你已经有了 className 然后使用它。例如 .navbar-custom-main {} 或者你可以检查元素来检查 dom 节点。
  • @HarishSharma,没有这个类被分配给Navbar,并且怀疑它不适用于它下面的标签。但是,如果我向每个链接添加类,它就可以工作。我不想在每个 Nav.Link 中复制粘贴类
  • 对于导航链接,您可以使用.navbar-custom-main .nav-link {}
  • @HarishSharma 你是怎么猜到/找到这个.nav-link 名字的?
  • @JananthBanuka:它在我的答案中链接的文档页面的源代码中列出了.nav-link 的类,react-bootstrap.github.io/components/navs/#nav-link-props 请参阅:&lt;a href="/home" data-rb-event-key="/home" class="nav-link active"&gt;Active&lt;/a&gt; 这不是一个长期的解决方案。您不知道该包是否会更改其类,或者您团队中是否有人添加了类似名称的类。

标签: html css reactjs


【解决方案1】:

给组件idclass,然后将css 添加到id/class


例子:

&lt;Nav.Link className={'active'} href="#features" clas&gt;Home&lt;/Nav.Link&gt;

.active: {color: red;}

【讨论】:

    【解决方案2】:

    &lt;Nav.Link&gt; 组件实际上是作为&lt;div/&gt;&lt;a class="nav-link"/&gt; 元素的组合呈现的,您可以判断是否检查了元素。所以,NavNav.Link CSS 选择器肯定不会命中这些组件。

    理想情况下,给您的组件一个 id 或一个类并设置 CSS...

    <Nav.Link href="#pricing" id="orange">Resume</Nav.Link>
    #orange { color: "orange" };
    

    或者:

    <Nav.Link href="#pricing" className="orange">Resume</Nav.Link>
    .orange { color: "orange" };
    

    或者,如果这不起作用,你可以用蛮力的方式来做......

    style = { color: "orange" };
    <Nav.Link href="#pricing" style="{style}">Resume</Nav.Link>
    

    建议使用第一种方法,因为它具有可扩展性且更易于开发。

    【讨论】:

    • 但是如果我有更多导航链接,我必须对每个 Nav.Link 执行此操作。
    • @JananathBanuka:如果您将所有想要影响的元素都放在同一个类中,那应该可以减少问题。那么你的新导航链接每次都只是复制/粘贴相同的旧类? &lt;Nav.Link className="orangeclass"&gt;,对吧?
    【解决方案3】:

    您需要检查元素以找到要应用 css 的类名。

    在您的情况下,React-bootstrap 组件具有 nav-link 类:

    .navbar-custom-main .nav-link {
     ...
    } 
    

    【讨论】:

      【解决方案4】:

      Nav.Link 是你写的组件吗?

      如果您编写了组件,请编辑组件的代码,而不是使用类和嵌套的 CSS 选择器从外部对其进行样式设置。

      如果组件是从库中导入的并且您想要编辑它(不编辑 node_modules 文件),您可以检查 Nav.Link 组件正在呈现的 HTML 元素。它可能有 CSS 类,您可以使用自定义 CSS 进行修改。

      我在 Ant Design 库中使用的其他选项(样式可能有点棘手)是 Styled Components,它制作了一个自定义组件,该组件用 styled-components div 包装库组件,根据需要设置样式并导入我的自定义组件而不是库之一。

      【讨论】:

        【解决方案5】:

        您也可以使用 Ctrl F... 找到导航链接... 替换 Nav.Link className="orange"...

        您可以轻松找到所有实例并替换它们。希望这会有所帮助:)

        【讨论】:

        • 嗨,斯蒂芬!欢迎来到 SO!你从哪里得到className="orange"?我真的把它作为我的答案的一个例子。
        • 我在回复之前通读了所有答案。我打算写和你一样的东西,但后来我想有时最好的解决方案是最简单的。 - 欢呼-
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2022-11-12
        相关资源
        最近更新 更多