Абсолют і Flexbox у React Native


95

Я хотів би поставити білу смужку, яка займала б всю ширину внизу екрана. Для цього я подумав про використання absoluteпозиціонування з успадкованими flexboxпараметрами.

За допомогою наступного коду він робить що - щось на зразок цього .

Ось мій код:

var NavigationBar = React.createClass({
  render: function() {
    return(
    <View style={navigationBarStyles.navigationBar}>
      //Icon 1, Icon 2...
    </View>
    );
  }
});

var Main = React.createClass({
  render: function() {
    return(
      <View style={mainStyles.container}>
          <NavigationBar />
      </View>
    );
  }
});

var mainStyles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#456783',
  }
});

var navigationBarStyles = StyleSheet.create({
  navigationBar: {
    backgroundColor: '#FFFFFF',
    height: 30,
    position: 'absolute', 
    flexDirection: 'row',
    bottom: 0,
    justifyContent: 'space-between'
  },
});

Я новачок у стилістиці в CSS, і не всі властивості доступні в React-Native. Тож будь-яка допомога буде вдячна, дякую :)

Відповіді:


158

Добре, вирішив мою проблему, якщо хтось проїжджає повз, ось відповідь:

Просто треба було додати left: 0,і top: 0,до стилів, і так, я втомився.

position: 'absolute',
left:     0,
top:      0,

10
Дякуємо, що розмістили це. І це також здається для висоти - замість height:100%, робіть top:0, bottom:0.
Премасагар

4
але якщо ви хочете помістити смужку внизу та на всю ширину, вам слід додати left:0, right:0, і не слід додавати top:0, якщо ви встановите top:0і bottom:0, вона відображатиметься на весь екран.
Спарк. Бао

1
Як я можу відцентрувати? Наприклад, я хочу показати блешню поверх мого компонента, і я хочу, щоб блешня була абсолютною та відцентрованою?
Мурат Озгул

1
Щоб заповнити весь простір вертикально дочірньою дитиною, додавши top:0та bottom:0працюючи як заміна `` висота: 100% '', перейдіть до @Premasagar
Нік Пінеда

1
Jus додати left, top, rightі bottonдо 0 і відмінно працює.
jose920405

64

Першим кроком було б додати

position: 'absolute',

тоді, якщо ви хочете, щоб елемент мав повну ширину, додайте

left: 0,
right: 0,

тоді, якщо ви хочете помістити елемент внизу, додайте

bottom: 0,
// don't need set top: 0

якщо ви хочете розташувати елемент вгорі, замініть bottom: 0наtop: 0


4

Це рішення спрацювало для мене:

tabBarOptions: {
      showIcon: true,
      showLabel: false,
      style: {
        backgroundColor: '#000',
        borderTopLeftRadius: 40,
        borderTopRightRadius: 40,
        position: 'relative',
        zIndex: 2,
        marginTop: -48
      }
  }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.