Заставить HTML <body> заполнить все вертикальное пространство с помощью Bootstrap и Rails?

Я пытаюсь заполнить фон моей веб-страницы рельсов градиентом, который выглядит следующим образом:

.gradient {
  background: #43cea2;
  background: -webkit-linear-gradient(to right, #185a9d, #43cea2);
  background: linear-gradient(to right, #185a9d, #43cea2);
}

Градиент работает отлично, однако содержимое тела не заполняет все вертикальное пространство экрана, поэтому фон градиента обрезается на полпути вниз по странице.

Я уже ссылался на другие сообщения о переполнении стека, такие как Вот этот, но ни один из этих ответов, похоже, не помог.

Добавление этих строк в мой application.scss, похоже, вообще не имеет никакого эффекта:

html {
   margin: 0px;
   height: 100%;
   width: 100%;
}

body {
   margin: 0px;
   min-height: 100%;
   width: 100%;
}

Любая помощь будет принята с благодарностью!

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
934
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Установите для тела высота значение 100%, а не min-height, а затем установите для вашего элемента .gradient высоту 100%.

См. ниже

html {
height: 100%;
}

body {
height: 100%;
}

.gradient {
  height: 100%; /*If you're placeing this class on the body then remove this as it is redundent*/
  background: #43cea2;
  background: -webkit-linear-gradient(to right, #185a9d, #43cea2);
  background: linear-gradient(to right, #185a9d, #43cea2);
}
<div class = "gradient"></div>

Однако более простым методом было бы установить для элемента, в который вы помещаете класс градиента, значение 100vh:

.gradient {
...
height: 100vh
}

Это установит его на 100 высоты окна просмотра (браузера). Вот некоторая информация о единицах просмотра

Спасибо! Это именно то, что я искал!

Austin Larson 17.04.2018 20:57

Похоже, вы на правильном пути.

Вы также можете рассмотреть возможность использования измерений vw и vh, а не измерений %, которые будут плавными для области просмотра, и вам также не нужно явно устанавливать высоту HTML на 100% (что может вызвать проблемы с переполнением в будущем).

Вот некоторая информация об измерениях vh и vw:

https://css-tricks.com/fun-viewport-units/

body {
    min-height: 100vh; /* min-height vh can have problems in older IE browsers! */
    background: #43cea2;
    background: -webkit-linear-gradient(to right, #185a9d, #43cea2);
    background: linear-gradient(to right, #185a9d, #43cea2);
}

Чтобы получить простой и немедленный ответ, вы можете обратиться к этому:

Вот рабочий пример, на которую стоит взглянуть и с которой можно повозиться:

https://fiddle.jshell.net/pfk9yvz9/11/

Вот рабочий код:

<!-- HTML -->
<!DOCTYPE html>
<html lang = "en">
  <head>
    <meta charset = "utf-8">
    <title>Demo</title>
    <link rel = "stylesheet" href = "style.css">
  </head>
  <body class = "gradient">
    <p>
      <span>Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. </span>
      <span>Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. </span>
      <span>Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. Lorem Ipsum. </span>
    </p>
  </body>
</html>

style.css (ссылка на <head>)

html {
  margin: 0px;
  height: 100%;
  width: 100%;
}

body {
  margin: 0px;
  min-height: 100%;
  width: 100%;
}

.gradient {
  background: #43cea2;
  background: -webkit-linear-gradient(to right, #185a9d, #43cea2);
  background: linear-gradient(to right, #185a9d, #43cea2);
}

p {
  padding: 25px;
  margin: 0;
}

p span {
  display: block;
  margin: 15px 0;
}

Другие вопросы по теме