CSS如何覆盖在all选择器中设置的自定义字体系列?

ehxuflar  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(155)

我为我的网站下载了两种自定义字体,我试图让其中一种成为网站中几乎所有地方的默认字体,而另一种则是某些特定区域的默认字体。所以我的代码看起来像这样:

function App() {
  return (
    <div className="App">
      <nav>
        <ul className="Navbar">
          <li className="link1"><Link to="/">Home</Link></li>
          <li className="link2"><Link to="/AboutMe">AboutMe</Link></li>
        </ul>
      </nav>
      <Routes>
        <Route path="/" element={<Home />}/>
        <Route path="/AboutMe" element={<AboutMe />}/>
      </Routes>
    </div>
  );
}

CSS:

*{
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    line-height: 18px;
    font-family: 'Montserrat-VariableFont_wght';
}

@font-face {
    font-family: 'BowlbyOneSC-Regular';
    src: url('../fonts/BowlbyOneSC-Regular.ttf') format('truetype');   
    font-weight: bold;
}

@font-face {
    font-family: 'Montserrat-VariableFont_wght';
    src: url('../fonts/Montserrat-VariableFont_wght.ttf') format('truetype');
}

.link1{
    font-family: 'BowlbyOneSC-Regular';
}

link1和link2现在都是Montserrat-VariableFont_wght的字体,当我从 * 选择器中去掉font-family: 'Montserrat-VariableFont_wght';时,Link1就会变成BowlbyOneSC-Regular,link2就会变成浏览器随机提供的默认字体,这不是我想要的,那么,我该怎么做呢?

kkbh8khc

kkbh8khc1#

您可以使

.link1{
    font-family: 'BowlbyOneSC-Regular' !important;
}

注意! important这将覆盖link 1css,并且link 2将是定义的默认链路。
你可以用字体做一些类似于实用类的事情,我通常做.ff-roboto .ff-arial,并在那里实现字体家族。

.ff-BowlbyOneSC';{
   font-family: 'BowlbyOneSC-Regular';
}

现在您可以使用link 2作为off-BowlbyOneSC

<li className="link2 ff-BowlbyOneSC"><Link to="/AboutMe">AboutMe</Link></li>

* is not a good way of defining css property,因为它将该字体系列应用于所有html元素。

body{
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    line-height: 18px;
    font-family: 'Montserrat-VariableFont_wght';
}

你也可以看到我已经从名称中删除了regular。这意味着你也可以有字体粗细相关的实用函数,如.fw-300fw-boldfw-black,这就是你如何创建可重用的类。

相关问题