高度连接到 Y 滚动坐标的动态滚动条
Dynamic scrollbar with height connected to Y scroll coordinates
我创建了两个组件 'DynamicScrollBarContainer' 和 'DynamicScrollBar'。
我正在尝试使嵌套组件具有与页面的垂直滚动相关的动态高度,并且通过具有两种不同的背景颜色,当用户向上或向下滚动时,容器会被填充或清空页面。
import styled from 'styled-components';
export const DynamicScrollbarContainer = styled.div`
position: fixed;
right: 5%;
top: 35%;
width: 2px;
height: 300px;
background-color: rgba(255,255,255,0.5);
@media ${(props) => props.theme.breakpoints.xl} {
display: none;
}
`;
export const DynamicScrollbar = styled.div`
width: 100%;
height: 0%; // this is the value I'd need to get dynamic
background-color: #ffffff;
`
import React from 'react';
import { DynamicScrollbarContainer, DynamicScrollbar } from './ScrollbarStyles';
const ScrollBar = () => (
<DynamicScrollbarContainer>
<DynamicScrollbar />
</DynamicScrollbarContainer>
);
export default ScrollBar;
有人有什么想法吗?我一直在搞乱 window.scrollY 和其他东西,但似乎无法正确地做到这一点
那是 BAD idea。在工作中不得不花费数小时来解决此类问题。有的还站着。在做这样的事情之前,你真的应该考虑其他选择。
但是,如果您真的需要,像这样的东西应该可以帮助您入门。
const ScrollBar = () =>
const [a, s] = useState(0);
useEffect(() => {
const c = () => s(window.scroll /* I don't remember the prop, something like this */);
// remember to add the other scroll events
window.addEventListener('scroll',c)
return () => window.removeEventListener(c);
}, []);
<DynamicScrollbarContainer>
<DynamicScrollbar scroll={a} />
</DynamicScrollbarContainer>
);
我创建了两个组件 'DynamicScrollBarContainer' 和 'DynamicScrollBar'。
我正在尝试使嵌套组件具有与页面的垂直滚动相关的动态高度,并且通过具有两种不同的背景颜色,当用户向上或向下滚动时,容器会被填充或清空页面。
import styled from 'styled-components';
export const DynamicScrollbarContainer = styled.div`
position: fixed;
right: 5%;
top: 35%;
width: 2px;
height: 300px;
background-color: rgba(255,255,255,0.5);
@media ${(props) => props.theme.breakpoints.xl} {
display: none;
}
`;
export const DynamicScrollbar = styled.div`
width: 100%;
height: 0%; // this is the value I'd need to get dynamic
background-color: #ffffff;
`
import React from 'react';
import { DynamicScrollbarContainer, DynamicScrollbar } from './ScrollbarStyles';
const ScrollBar = () => (
<DynamicScrollbarContainer>
<DynamicScrollbar />
</DynamicScrollbarContainer>
);
export default ScrollBar;
有人有什么想法吗?我一直在搞乱 window.scrollY 和其他东西,但似乎无法正确地做到这一点
那是 BAD idea。在工作中不得不花费数小时来解决此类问题。有的还站着。在做这样的事情之前,你真的应该考虑其他选择。
但是,如果您真的需要,像这样的东西应该可以帮助您入门。
const ScrollBar = () =>
const [a, s] = useState(0);
useEffect(() => {
const c = () => s(window.scroll /* I don't remember the prop, something like this */);
// remember to add the other scroll events
window.addEventListener('scroll',c)
return () => window.removeEventListener(c);
}, []);
<DynamicScrollbarContainer>
<DynamicScrollbar scroll={a} />
</DynamicScrollbarContainer>
);