javascript - 如果存在 prop,如何将 CSS 应用于 body 元素?

标签 javascript css reactjs styled-components

如果 open prop 值为 true 我想对 body 元素应用位置修复,我如何使用样式化组件来实现?

export const Navbar = styled.nav`
  box-sizing: border-box;
  overflow-y: scroll;
  justify-content: center;
  background: ${() => "#ffffff"};
  height: 100vh;
  text-align: left;
  padding: 5rem 4rem 2rem;
  top: 0;
  left: 0;
  transition: transform 0.3s ease-in-out;

  transform: ${({ open }) => (open ? "translateX(0)" : "translateX(-110%)")};
 

  body {
    position: ${({ open }) => (open ? "fixed" : "absolute")};
  }

最佳答案

我不熟悉 react 样式的组件,但我怀疑嵌套 body 的语法标签是正确的。
您可以使用 useEffect卡在您的导航栏组件中:

useEffect(() => {
  document.body.style.position = open ? 'fixed' : 'absolute';
}, [open]);
这将首先调用箭头函数,每当 open Prop 变化。

关于javascript - 如果存在 prop,如何将 CSS 应用于 body 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204853/

相关文章:

html - 带跨度的下划线分隔符有填充或边距

javascript - 在使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及对图像使用 sprite 是否仍然提供性能优势?

javascript - Meteor-React 使用提交模式删除帖子(帖子未定义)

javascript - 了解 React-Redux 和 mapStateToProps()

javascript - 从类到函数的重构——函数增强的方法

javascript - 如何获取可视屏幕的高度

javascript - 正则表达式 Javascript 数字逗号分隔 | > | >= <=

javascript - 设置 cookie 后 Ember 模板未重新加载

javascript - js弹出窗口不显示html标签

css - 使用 CSS : problems with display:block, paddings 和 <li/>s 做一个按钮栏