Тело реакции, похоже, не получает 100% высоты

#javascript #html #css #reactjs #jsx

#javascript #HTML #css #reactjs #jsx

Вопрос:

Я хотел найти решение этой особенности. Я пытаюсь установить градиентный фон в теле моего приложения, но кажется, что мое тело не достигает 100% экрана, и это вызывает дублирование фона. Я никогда раньше не видел ничего подобного, кто-нибудь знает, почему?

app.js:

 import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

serviceWorker.unregister();
  

App.js:

 import React, { useState, useEffect } from 'react';
import { ClipLoader } from 'halogenium';
import {useSpring, animated} from 'react-spring'
import ComponentCentral from './components/componentCentral/ComponentCentral'
import './App.css';
import NavBar from './components/navbar/NavBar'
import Footer from './components/footer/Footer'

function App() {
    const estilo = useSpring({opacity: 1, from: {opacity: 0}})
    const [conteudoPage, setConteudoPage] = useState(<animated.div style={estilo}><ClipLoader className="loaderCircle" color="#26A65B" size="200px"/></animated.div>);
    const [usuario, setUsuario] = useState("");
    
    return (
        <div className="App">
            <NavBar usuario={usuario}></NavBar>
            {conteudoPage}
            <Footer></Footer>
        </div>
    );
}

export default App;
  

Индексировать css:

 html, body {
    padding: 0;
    margin : 0;
    width  : 100%;
    height: 100%;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
        'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
        sans-serif;
    -webkit-font-smoothing : antialiased;
    -moz-osx-font-smoothing: grayscale;

    background       : linear-gradient(-45deg, #85FFBD 0%, #FFFB7D 100%);
    /* background-size: 200%; */
}

#root{
    height: 100%;
}

code {
    font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
        monospace;
}

hr {
    border          : 0;
    height          : 1px;
    background      : #333;
    background-image: linear-gradient(to right, #ccc, #333, #ccc);
    margin-top      : 25px
}

a.envelopeOK:link,
a.envelopeOK:visited {
    background-color: #84F0B9;
    color           : #135D36;
    padding         : 14px 25px;
    text-align      : center;
    text-decoration : none;
    display         : inline-block;
    border-radius   : 5px;
}

a.envelopeOK:hover,
a.envelopeOK:active {
    background-color: #41f397;
}
  

Я отправлю изображения того, что произошло

ограничение изображения тела

изображение, показывающее повторяющийся градиент

Знаете ли вы, как оставить тело на 100%, чтобы градиент не повторялся?

Редактировать:

Спасибо всем, кто помог мне, я объединил некоторые решения и сумел решить свою проблему. Поскольку я работаю с react, я в конечном итоге размещаю много вложенных divs, где я только устанавливаю размеры тела и не позволяю другим моим divs расти сами по себе. Мое решение: поместите в тело только настройки заполнения по умолчанию и margin 0, а всю расширенную часть высоты и фона я поместил в дочерний div тела: #root. При этом тело увеличивается с корневым div и увеличивается при создании содержимого.

 body {
padding: 0;
margin: 0;
}

#root {
min-height: 100vh;

font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;

background: linear-gradient (-45deg, # 85FFBD 0%, # FFFB7D 100%);
}
  

Комментарии:

1. у вас есть прокрутка, поэтому ваше тело ограничено размером экрана. Вам нужно избавиться от высоты: 100% не использовать его

2. Не уверен в ваших намерениях, но вы должны как минимум использовать 100vh высоту и 100vw ширину.

3. Примените высоту: 100vh; на самом деле тело занимает 100% экрана, но, похоже, моя проблема возникает, когда я обновляю содержимое страницы с помощью React; Если вы видите на этом изображении: i.imgur.com/lFqwlTg.png Содержание страницы росло, но за ней не следовало тело. В качестве компенсации содержимое страницы увеличилось за пределы размера тела: i.imgur.com/denWhKC.png

Ответ №1:

Я проверил ваш код, все выглядит нормально! Для чего нужен этот код??

 hr {
border          : 0;
height          : 1px;
background      : #333;
background-image: linear-gradient(to right, #ccc, #333, #ccc);
margin-top      : 25px
}
  

попробуйте удалить это и посмотреть, что произойдет.

Комментарии:

1. После обработки данных макет меняется, и я ставлю час между данными: i.imgur.com/o677234.png

Ответ №2:

Поскольку я закончил решение путем слияния и тестирования частей css of the staff, я оставлю его в отредактированном виде, поскольку он был решен, спасибо всем!

Ответ №3:

Добавьте контейнер в тело:

 .container {
   height:100vh
}