проблема с горизонтальной полосой прокрутки в css

#css

#css

Вопрос:

Я новичок в CSS. Я только что запустил свой первый веб-сайт и почти закончил с целевой страницей. Тем не менее, есть две проблемы, которые меня поразили, и я до сих пор не понял, в чем основная причина. Я создал ссылку на plukr http://plnkr.co/edit/aH8LfC?p=preview.

  1. Появляется горизонтальная полоса прокрутки, и с левой стороны есть пробел, хотя ширина установлена на 100%.
  2. Третье поле под баннером выше двух других, даже если все они имеют одинаковые CSS классы.

Код для трех полей div:

     <div class="container info-box clearfix">
        <div class="col3">
          <h3>Investment Planning</h3>
          <p>Money Plant Services is one of the premier Investment advisory Firm known for making taxation amp; investing simpler and more understandable and profitable for the clients. Currently serving more than 5000 Individual customers with corporate tie ups.</p>
        </div>
        <div class="col3">
            <h3>Wealth Management</h3>
            <p>Money Plant Services is one of the premier Investment advisory Firm known for making taxation amp; investing simpler and more understandable and profitable for the clients. Currently serving more than 5000 Individual customers with corporate tie ups.</p>
        </div>
        <div class="col3">
            <h3>Risk Management</h3>
            <p>Money Plant Services is one of the premier Investment advisory Firm known for making taxation amp; investing simpler and more understandable and profitable for the clients. Currently serving more than 5000 Individual customers with corporate tie ups.
            </p>
        </div>
    </div>
  

CSS:

  .info-box{
   width:100%;
   margin-top: 20px;
 }

.col3{
  width: 30%;
  float: left;
  margin: 10px;
  padding: 5px 10px;
  background-color: #FCFCFC;
  border-radius: 2px;
  box-shadow: 0 0 4px #DDDDDD;
}
  

Кто-нибудь может помочь мне понять, где я ошибаюсь. Я не использую фреймворки Bootstrap / Foundation, потому что мне нужно освоиться с чистым CSS.

Примечание: веб-страница должна быть загружена в полном окне, чтобы увидеть проблему.

С уважением, Прадип

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

1. Пожалуйста, укажите свой код в своем вопросе

Ответ №1:

Это переполнение вызвано вашими левыми / правыми отступами, которые не включены в ширину, если вы не добавите этот CSS :

 * {
    box-sizing: border-box;
}
  

Обновлен Plunker

Это означает, что (с 100px шириной) размер вашего элемента будет 100px от левой границы до правой. Если вы установите 15px отступ, у вас будет :

  • Отступ слева: 15 пикселей
  • Правое заполнение: 15 пикселей
  • Содержание: (100 — 2 * 15 ) = 70 пикселей
  • Итого: (70 2 * 15 ) = 100 пикселей

Если вы сохраните значение по умолчанию для box-sizing , у вас будет :

  • Отступ слева: 15 пикселей
  • Правое заполнение: 15 пикселей
  • Содержимое: 100 пикселей
  • Итого: (100 2 * 15 ) = 130px

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

1. Привет. Неравномерность высоты третьего окна все еще присутствует. Как сделать их одинаковой высоты. Все они имеют один и тот же класс стиля.

2. @Pradeep ваша неравномерность по высоте вызвана лишними пробелами в вашем последнем поле .. либо избавьтесь от пробелов, либо дайте им фиксированную высоту (в вашем коде вставьте последний </p> в текст выше, как в первых двух полях ..)

3. 1. box-sizing здесь правильное решение, а не отрицательный запас. Bootstrap также использует border-box для устранения этой же проблемы. Для дополнительного чтения здесь есть дополнительное объяснение: paulirish.com/2012/box-sizing-border-box-ftw

Ответ №2:

Полоса прокрутки вызвана заполнением контейнера и нижнего колонтитула. Заполнение выталкивает содержимое с холста. CSS для блоков не имеет определенной высоты, поэтому высота зависит от объема содержимого внутри.

Я думаю, вам нужно что-то между контейнером и столбцами, чтобы компенсировать заполнение (обычно для этого используется отрицательное поле).

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

1. Каков наилучший способ решить проблему, я имею в виду для нижнего колонтитула. Также в чем основная причина второй проблемы

2. Поместите что-нибудь между контейнером и столбцами с отрицательным полем слева и справа, чтобы компенсировать заполнение. Bootstrap использует строки. Шаблон HTML5 использует сетку. Для столбцов вам просто нужно установить высоту или использовать код, чтобы сделать их равными по высоте. В вашем примере закрывающий тег абзаца необходимо переместить вверх. Есть некоторое пустое пространство, вызывающее дополнительную высоту.

3. Не могли бы вы, пожалуйста, ответить с вашим идентификатором электронной почты или отправить тестовое письмо на pradeep.kumar44@gmail.com . Я хочу пообщаться с вами, чтобы понять больше об этом. Заранее спасибо.

4. @Pradeep Использование отрицательного поля слишком много и не обязательно, смотрите Мой ответ.

5. @Aibrean Я неправильно использую шаблонный код? Где я ошибаюсь. Я впервые пишу html и CSS .

Ответ №3:

Дополнительная высота в вашем последнем поле связана с тем, что вы установили:

 white-space: pre-wrap;
  

pre-wrap Свойство указано как:

Последовательности пробелов сохранены. Строки прерываются символами новой строки, <br> и по мере необходимости для заполнения полей строк.

В вашем HTML только в последнем поле есть новая строка:

 <p>Money Plant Services ...
</p>
  

Таким образом, новая строка и пробелы сохраняются из-за white-space: pre-wrap , что делает этот <p> элемент более высоким, чтобы соответствовать тексту, а также новой строке и пробелу в конце.