交叉口观察者不能仅增加最高根

时间:2019-10-30 13:58:42

标签: javascript intersection-observer

我正在尝试仅将rootMargin的最高值增加50px。我用于该选项的代码是var refreshControl = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() [...] refreshControl.tintColor = .gray refreshControl.backgroundColor = .white refreshControl.addTarget(self, action: #selector(refreshContents), for: .valueChanged) eventCollectionView.refreshControl = refreshControl eventCollectionView.register(EventHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: toolbarId) } @objc func refreshContents() { self.perform(#selector(finishedRefreshing), with: nil, afterDelay: 1.5) } @objc func finishedRefreshing() { refreshControl.endRefreshing() } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { return .init(width: screenWidth, height: 50) } 。那是行不通的。

尽管使用rootMargin: '50px 0px 0px 0px'可以解决我的问题,但我并不希望增加底值。

下面列出了完整的测试代码。我没有在jsFiddle上创建演示,因为jsFiddle将结果包装在iframe中,该iframe是root。我无法将该iframe设置为jsFiddle的根目录,因此该演示无法正常工作。

rootMargin: '50px 0px'

1 个答案:

答案 0 :(得分:1)

虽然这是一个较旧的问题,但我认为以下内容可能对遇到类似问题的用户有所帮助。

  1. 您可以在 JSFiddle 中运行演示 - 只需更改要用作触发器的根目录即可。请参阅下面的演示以突出显示这一点。

  2. 我认为您可能混淆了 rootMargin 属性。从您的问题来看,听起来您希望观察到的元素在 出现之前触发 50 像素。如果是这种情况,那么您想增加根 bottom 边距:0px 0px 50px 0px 如果您只想在根内达到 50px 时触发元素,则使用:{{1 }}。您可以省略最后一个值,例如:0px 0px -50px 0px,即 0px 0px 50px

请看下面的演示:

JSFiddle