#css
#css
Вопрос:
Я новичок в CSS. Я только что запустил свой первый веб-сайт и почти закончил с целевой страницей. Тем не менее, есть две проблемы, которые меня поразили, и я до сих пор не понял, в чем основная причина. Я создал ссылку на plukr http://plnkr.co/edit/aH8LfC?p=preview.
- Появляется горизонтальная полоса прокрутки, и с левой стороны есть пробел, хотя ширина установлена на 100%.
- Третье поле под баннером выше двух других, даже если все они имеют одинаковые
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;
}
Это означает, что (с 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>
элемент более высоким, чтобы соответствовать тексту, а также новой строке и пробелу в конце.