You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React导航栏按钮@media display:none不生效,求排查问题原因

问题:React导航栏按钮无法应用@media的display:none属性

我正在使用React开发导航栏,尝试理解其运行机制。目前遇到一个问题:无法为按钮应用@media规则中的display:none属性。

样式代码

export const NavBtn = styled.nav`
  display:flex;
  align-items: center;
  background:red;
  margin-left:-20%;

  @media screen and(max-width:768px){
      display:none;
  }
`

export const NavBtnLink = styled(LinkR)`
  border-radius:50px;
  background:black;
  white-space:nowrap;
  padding: 10px 22px;
  color:white;
  font-size:16px;
  outline:none;
  border:none;
  transition: all 0.2s ease-in-out;
  text-decoration:none;

  &:hover{
      transition: all 0.2s ease-in-out;
      background:white;
      color:green;
  }

  @media screen and(max-width:768px){
      display:none;
  }
`

结构代码

<...>
</NavMenu>
<NavBtn>
    <NavBtnLink to="/book">
        Book a session
    </NavBtnLink>
</NavBtn>
</NavbarContainer>

解决方案

问题出在媒体查询的语法错误:and与后面的条件括号之间缺少空格,导致浏览器无法识别该媒体查询规则。

CSS规范要求,@media规则里and和后续的(max-width:768px)之间必须有空格,否则整个媒体查询会被判定为无效。

修正后的样式代码

export const NavBtn = styled.nav`
  display:flex;
  align-items: center;
  background:red;
  margin-left:-20%;

  // and后添加空格,修复媒体查询语法
  @media screen and (max-width:768px){
      display:none;
  }
`

export const NavBtnLink = styled(LinkR)`
  border-radius:50px;
  background:black;
  white-space:nowrap;
  padding: 10px 22px;
  color:white;
  font-size:16px;
  outline:none;
  border:none;
  transition: all 0.2s ease-in-out;
  text-decoration:none;

  &:hover{
      transition: all 0.2s ease-in-out;
      background:white;
      color:green;
  }

  // and后添加空格,修复媒体查询语法
  @media screen and (max-width:768px){
      display:none;
  }
`

修改后,当屏幕宽度≤768px时,按钮会正常隐藏。


内容的提问来源于stack exchange,提问作者Arauslukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:45:45