React JS、HTML、CSS、display:none 不起作用

React JS, HTML, CSS, display:none not working

提问人:BlackCult666 提问时间:11/17/2023 最后编辑:ZakBlackCult666 更新时间:11/17/2023 访问量:45

问:

晚上好,我是 React 的新手,我正在尝试克隆一个现有的模板(UI8 团队的展示)来练习。这是实际外观:enter image description here

我想做的是使用最大宽度:767px 的媒体查询,我想在其中删除右上角的“Let's Talk”按钮。我在 .nav-buttons:first-child(这是包装两个按钮的类,第一个子项代表“Let's Talk”按钮)中添加了“display: none”,但没有任何变化,按钮仍然出现。我应该错在哪里?

Navbar.jsx:

import './css/Navbar.css';
import RoundedButton from "./RoundedButton";
 
const Navbar = () => {
  const enableOverlay = () => {
    const overlay = document.querySelector('.overlay');
 
    overlay.classList.add('active');
  }
 
  return (
    <nav data-aos="fade-up" data-aos-duration="1000">
      <h2>showcasy.</h2>
 
      <div className="nav-buttons">
        <RoundedButton text="Let's Talk" icon="return-up-forward-outline" invert={false} />
        <RoundedButton func={() => enableOverlay()} text="" icon="menu-outline" invert={false}/>
      </div>
    </nav>
  );
};
 
export default Navbar;

导航栏.css:

nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 24px 60px;
}
 
.nav-buttons {
  display: flex;
  align-items: center;
}
 
@media (max-width: 767px) {
  .nav-buttons:first-child {
    display: none !important;
  }
}

RoundedButton.jsx:

import './css/RoundedButton.css';
 
const RoundedButton = ({func, text, icon, invert, whiteBorder}) => {
  return (
    <button
      style={whiteBorder && invert ? {border: "1px solid #fff"} : null}
      onClick={func != null ? func : null}
      className={`custom-btn ${invert ? "invert" : ""}`}
      type="button">{text} {icon !== "" ? <ion-icon name={icon}></ion-icon> : null}
    </button>
  )
}
 
export default RoundedButton;

RoundedButton.css:

.custom-btn {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  font-weight: 600;
  font-size: 16px;
  cursor: pointer;
  color: #030712;
  background: linear-gradient(to left, white 50%, black 50%) right;
  background-size: 200%;
  transition: .5s ease-in-out;
  border: 1px solid #030712;
  outline: none;
  padding: 12px 24px;
  margin: 0 8px;
  border-radius: 100px;
}
 
.custom-btn:hover {
  color: #ffffff;
  background-position: left;
}
 
.custom-btn.invert {
  color: #ffffff;
  background: linear-gradient(to left, #030712 50%, white 50%) right;
  background-size: 200%;
}
 
.custom-btn.invert:hover {
  color: #030712;
  border: 1px solid #030712;
  background-position: left;
}

我以为它可能是圆形按钮的显示弯曲(我用它来对齐文本和按钮的图标),但我试图删除它,但仍然不起作用。

HTML CSS 反应JS 网页

评论

0赞 Zak 11/17/2023
堆栈溢出代码格式化程序对我来说似乎有问题——奇怪的是,我从来没有遇到过使用它的问题。
0赞 Zak 11/17/2023
我已经编辑了您的问题,以包含您的PasteBin中的代码
0赞 Sharp Dev 11/17/2023
很棒的工作@Zak这正是 OP 应该做的。
0赞 BlackCult666 11/17/2023
谢谢,即使在我以前的讨论中,我也一直使用它,但我不知道为什么现在它给了我格式错误,而格式是正确的。这就是我使用 pastebin 的原因,感谢您编辑帖子
0赞 l3l_aze 11/17/2023
@BlackCult666 用空行包围,每行开头有 4 个空格也可以创建一个自然代码块。这可能有助于在您最初的尝试中产生问题。尽管它很棒,但仍然有麻烦的余地,哈哈。SO Help 的 Markdown 文档可以帮助一些人,但 MD 并不通用,因为一些网站喜欢调整解析器。

答:

1赞 Sharp Dev 11/17/2023 #1

这个问题实际上很简单,通过使用正确的css选择器来解决...您需要选择第一个子项的按钮。.nav-buttons 是容器,是的......但是,作为该容器的第一个子项,您需要附加该按钮,您可以通过执行以下操作来执行此操作。
我建议你更好地学习你的css选择器,你可以在这里做到这一点

.nav-buttons > button:first-child {
   display: none !important;
}

就解决你的 SO 代码问题而言,你需要在代码片段的开头和结尾使用“''”(无论如何对我来说最简单的方法),然后把你的代码放在下面和上面的行中(即你把这三个放在所有行的上方和下方)。

评论

0赞 BlackCult666 11/17/2023
谢谢你,明天我会努力的,我会让你知道的。关于格式设置,我已经使用了该表单,但我在上面添加了一个答案,解释了为什么我在这里没有使用“”样式。仍然感谢您的回答!