【发布时间】:2016-03-26 22:57:59
【问题描述】:
我有一个固定高度的ul,如果滚动条出现太多,它包含动态数量的li 元素。您可以通过单击选择li元素。
我想要的是li元素,如果在其上方滚动,则活动固定在顶部,如果在其下方滚动,则固定在底部,因此始终显示活动的li元素,而另一个@987654327 @ 元素只是滚动过去的活动元素。
我做了一个plunker。我正在使用 Angular,我不知道这是否可以仅使用 CSS 来解决,或者我是否需要一个指令等。
HTML:
div class="parent">
<div class="child1">
<input ng-model="vm.query" type="text" placeholder="Search" />
<ul >
<li ng-repeat="todo in todos" ng-class="{'active': todo.active}" ng-click="activeTodo($index)">
<a>{{todo.name}}</a>
</li>
</ul>
</div>
CSS:
.parent{
display: flex;
}
.child1{
background-color: #eeeeee;
height: 500px;
overflow:scroll;
}
.active{
background-color: red;
position:fixed;
}
提前致谢!
【问题讨论】:
-
这不能仅通过 CSS 实现。逻辑非常简单,真的:在父滚动检查活动元素的位置并确定它是否在视图中。如果不是,请将其位置更改为固定(顶部或底部)并(最终)在父级上设置顶部/底部填充。您希望我们为您编码吗?如果是,请说明理由。最好是一个好的。
标签: javascript html css angularjs angularjs-directive