你知道position定位有哪些值吗?常规static,绝对定位fixed、absolute,相对定位relative。好吧,这些是个前端都知道。今天要记录的是个不常见的、还在实验阶段的、兼容性不怎么完美的一个值。是的,正如标题提到的,它就是粘性定位sticky。你以前是否据说过呢?当我知道这个定位值后,我震惊了,卧槽,我是个假的前端吧,学前端一年多居然不知道定位还有个粘性定位。而后我就试了一下这个定位的效果,哇哦,真的很好用,遗憾的是兼容性不够完美,可是现代主流浏览器的较新版本都已经兼容了。css
// APP.jsx constructor(props) { super(props); this.state = { todo: { A: ["apple", "animal", "approve", "action", "active"], B: ["binary", "battle", "boss", "because", "become"], C: ["client", "cool", "call", "come", "cake", "case"], D: ["decomand", "disappoint", "disagree", "decide", "delay", "date"] } }; } render() { return ( <div> {Object.keys(this.state.todo).map(key => ( <div key={key}> <div className="letter-head">{key}</div> {this.state.todo[key].map(item => ( <p key={item}>{item}</p> ))} </div> ))} </div> ); }
/*APP.css*/ .letter-head{ width: 400px; background-color: darkorange; position: sticky; position: -webkit-sticky; top: 0px; }
这个示例是局部title的使用场景。它在ie下是彻底不能工做的,不过根据sticky定位的描述,实际上是能够经过js监听窗口滚动,动态调整元素的postion定位,一开始布局表现为static,滚动到阀值表现为fixed定位,到达父元素底部表现为相对于父元素的absolute,bottom为0的定位。然而我本身宾没有尝试去实现这样的模拟哈哈哈哈哈哈哈,能够看看stickybits库的实现,应该是比较相似的。前端