反应波普尔。如何移动元素相对父级?

Posted

技术标签:

【中文标题】反应波普尔。如何移动元素相对父级?【英文标题】:React Popper. How to move element relatively parent? 【发布时间】:2019-06-08 22:59:45 【问题描述】:

我正在尝试移动父组件内的 Popper。我该怎么办?

我尝试在修饰符对象中使用偏移属性。 例如:

offset: 
  offset: 20,

但 offset 只会将 Popper 朝一个方向移动。如果展示位置='top' || 'bottom' => 如果placement='right' || 它会左右移动'left' => 它上下移动。

const Layer = (
  children,
  align,
  inner = true,
  parent,
  portal,
) => (
  <Manager>
    <Popper
      placement=align
      modifiers=
        inner: 
          enabled: inner,
        ,
      
      referenceElement=parent
    >
      ( ref, style, placement ) => (
        <div
          ref=ref
          data-placement=placement
          style=style
        >
          console.log(style)
          children
        </div>
      )
    </Popper>
  </Manager>
)

【问题讨论】:

【参考方案1】:

刚刚处理了这个:Place MaterialUI Tooltip "on top" of anchor element? (React)

PopperProps=
  popperOptions: 
    modifiers: 
      flip:  enabled: false ,
      offset: 
        enabled: true,
        offset: '20px 20px'
      
    
  

【讨论】:

【参考方案2】:

我就这样解决了。为 popper child 添加了 topOffsetleftOffset 道具并使用了传播语法。不要认为这是最干净的解决方案。

const Layer = (
  children,
  align,
  inner = true,
  parent,
  portal,
  topOffset,
  leftOffset,
) => (
  <Manager>
    <Popper
      placement=align
      modifiers=
        inner: 
          enabled: inner,
        ,
      
      referenceElement=parent
    >
      ( ref, style, placement ) => (
        <div
          ref=ref
          data-placement=placement
          style=
            ...style,
            top: style.top + topOffset,
            left: style.left  + leftOffset,
          
        >
          console.log(style)
          children
        </div>
      )
    </Popper>
  </Manager>
)

【讨论】:

以上是关于反应波普尔。如何移动元素相对父级?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 CSS 将绝对元素自动居中在相对父级内?

在 jQuery 中,如何设置元素的“top,left”属性,其位置值相对于父级而不是文档?

关于多子级元素充满父级元素高度的布局方式

Position定位知识点总结

input元素相对父级元素错位了?IE7

css实现块级元素水平垂直居中的方法?