【发布时间】:2020-12-08 18:37:29
【问题描述】:
如果 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")};
}
【问题讨论】:
-
这样写,样式会被应用到作为nav子标签的body标签上,但事实并非如此。
-
只在组件中,使用DOM API
-
我能想到的一种方法是传入 props 以维护 globalStyles 组件中的状态,该组件使用样式化组件中的
createGlobalStyleAPI,并根据传递给 nav 的 prop 更新状态,这将更新身体标签的位置。另一种方法是使用 DOM API 直接更新位置,但这是最后的手段。
标签: javascript css reactjs styled-components