【问题标题】:React Native: 'top' property behaving as expected, but 'bottom' isn'tReact Native:'top' 属性表现如预期,但 'bottom' 不是
【发布时间】:2020-01-06 16:27:54
【问题描述】:

我的 React Native 应用程序中有以下代码:

<View
  style={{
    width: 50,
    height: 50,
    borderWidth: 1,
  }}
>
  <View style={{
    width: 5,
    height: 5,
    backgroundColor: 'red',
    top: 10,
    left: 10
  }}></View>
</View>

正如预期的那样,这会导致:

但是,如果我将 top 换成 bottom,我会得到:

如果我将子元素更改为position: absolute,它会按预期工作:

我想知道的:

1) 为什么第二张图片中的红点会出现在黑色方块的上方?

2) 既然红点是黑色方块的唯一孩子,为什么添加position: absolute会改变什么?

3) 为什么top 在所有三个图像中的行为都符合预期,而bottom 只有在第三个图像中的行为符合预期?

【问题讨论】:

    标签: html css reactjs react-native css-position


    【解决方案1】:

    在 React-Native 中,每个布局元素默认都是相对定位的,所以距离初始位置的底部相对 10px 距离容器布局,这是正确的行为。

    如果您想将点定位在容器的边界上,请将孩子的位置设置为绝对位置。

        <View
          style={{
            width: 50,
            height: 50,
            borderWidth: 1,
            position: 'relative' // by default anyway
          }}
        >
          <View
            style={{
              width: 5,
              height: 5,
              backgroundColor: "red",
              bottom: 10,
              left: 10,
              position: 'absolute'
            }}
          />
        </View>
    

    【讨论】:

    • 嗨 Mateusz,关于“从初始位置的底部”:你的意思是 React Native 查看红点的初始位置,并将其向上移动 10,而如果我设置它的位置绝对,它计算相对于父容器的最终位置而不是子元素本身的初始位置?
    • 完全正确 :) @gkeenley
    • 好的,谢谢,尽管它是您指出的默认值,但在这种情况下,在父元素上有 position: relative 有什么区别?
    • 没关系,反正我已经标明它默认是相对的,所以你可以删除这个“位置:相对”,它会以同样的方式工作。
    【解决方案2】:

    1) 因为没有指定position: absolute,所有位置命令都是相对于元素最初所在的位置。

    2) 它改变了位置命令(上、左、右、下)相对于父元素的解释方式

    3) 因为top 指的是同一个地方,而不管position 设置为什么,但buttom 可以指不同的地方,具体取决于您将position 设置为相对还是绝对

    【讨论】:

    • 嗨特拉维斯,这是有道理的,谢谢!另一个人也有很好的答案,并且首先得到了它,所以我必须批准他的答案,但仍然给你竖起大拇指。
    • 别担心!很高兴我能提供帮助!要回答您在另一个答案的 cmets 中提出的问题,将 position: 'relative' 添加到父级不会有任何区别,因为这是所有元素的默认设置。
    • 好酷。但总的来说,在父级上将位置设置为绝对或相对对子级有任何直接影响吗?
    • 不,如果您在父元素上设置 position: 'absolute' 然后更改该元素的位置,它将移动元素及其内部的所有内容,但不会更改父元素中的子元素。
    猜你喜欢
    • 2011-03-04
    • 2015-05-11
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2015-01-13
    • 2021-06-18
    相关资源
    最近更新 更多