Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера?

Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера на адаптивном веб-сайте?
Буду признателен за любые предложения.

Обновил изменения. Теперь он по центру.

CSS Media Queries min-width 768: содержат Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера?

Обложка CSS: Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера?

CSS содержат: Я предпочитаю этот фон, потому что отображается все изображение. Однако я не могу заставить этот метод работать, потому что я не могу расположить поле шрифтов по центру между желтой нижней границей навигации и нижней частью изображения баннера. Также, если я увеличу размер браузера, фоновое изображение не будет занимать ширину браузера. Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера?

фоновое изображение баннера: Как центрировать текстовое поле по горизонтали и вертикали от нижней границы меню навигации до конца изображения баннера?

Исходный JSFiddle: https://jsfiddle.net/4enbjpyz/

Обновите JSFiddle: https://jsfiddle.net/me37hnvs/

Вот что у меня есть:

Загрузочный HTML:

<div class = "container-fluid">
    <div class = "bannerHeader">
        <nav class = "navbar navbar-expand-md navbar-dark" id = "myNavmenu">
            <a class = "navbar-brand d-md-none ml-auto" href = "#" id = "menu">Menu</a>
            <button class = "navbar-toggler" type = "button" id = "TEST" data-toggle = "collapse" data-target = "#navbarSupportedContent" aria-controls = "navbarSupportedContent" aria-expanded = "false" aria-label = "Toggle navigation">
            <span class = "navbar-toggler-icon"></span>
            </button>
            <div class = "collapse navbar-collapse" id = "navbarSupportedContent">
                <ul class = "navbar-nav ml-auto">
                    <li class = "nav-item pr-3"><a class = "nav-link active" href = "#">Nav 1</a></li>
                    <li class = "nav-item"><a class = "nav-link" href = "payment.html">Nav 2</a></li>
                </ul>
           </div>
        </nav>  

        <div class = "d-flex">
            <div class = "container justify-content-center fontBox pl-4 pr-4 pt-3">
                <h3>Heading</h3>      
                <p>Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile-first projects on the web.</p>
            </div>
        </div>
    </div>
 </div>

 <div class = "container bg-white">
    <p>This is some text.</p>      
    <p>This is another text.</p>      
 </div>

CSS:

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */

a {
    text-decoration: none;
}

body { 
    background: #fff;
}

.container-fluid {
    padding:0;
}

.bannerHeader { 
    /* background-color: I normally use a different color, however I used a red background to show there is no negative space (red) */  
    background-color: #fe0808;
    background-image: url("../images/banner.jpg");
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    height: 450px;
}

#myNavmenu {
    background-color: rgba(0,0,0,.1);
    border: 1px solid yellow;
}

/* Center Horizontal and Vertically */
.fontBox { 
    background-color: rgba(255,255,255,.3);
    color: #fff;;
    letter-spacing: 1px;
    margin: 0;
    position: absolute;
    top: 58%; 
    left: 50%;
    transform: translate(-50%, -58%);
    width: 90%;
} 

p {
    font-size: 16px;
}

/* Medium devices (tablets, 768px and up)*/
@media (min-width: 768px) { 
    .bannerHeader { 
        background-position: center top;
        background-size: contain;
        background-repeat: no-repeat;
        height: 0;
        padding: 0;
        /* aspect ratios: divide the height of the original image by it's own width, and multiply by 100 to get the percentage value */
        padding-bottom: 52.33%; 
        position: relative;
        }
}

Вы решили это?

Anuresh VP 06.10.2018 07:35

Вы забыли поместить изображение баннера в jsFiddle.

Soheil 06.10.2018 08:13
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
2
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Тег <img> имеет некоторые особенности поведения по сравнению с другими тегами. В вашем случае я предлагаю вам использовать тег div (или, возможно, figure) и прикрепить баннер в качестве фонового изображения, а затем установить любой атрибут CSS для управления поведением изображения. Затем вы можете использовать css flex box для центрирования поля. Также вы можете использовать метод CSS calc(), если высота навигации и поля шрифта исправлены. Пример sudo может быть таким:

top: calc(100% - ({navigationHeight} + {fontBoxHeight}));

НЕ забудьте поместить поле шрифта внутри тега figure, если вы будете использовать этот подход.

Надеюсь, это поможет.

Я обновил изменения, и текстовое поле центрировано. Однако фоновое изображение обрезается, когда я увеличиваю размер браузера. Я использовал размер фона: обложка. Как мне решить эту проблему? @Soheil

Re S 06.10.2018 21:56

Это поведение Cover. Установить размер фона: содержать; background-position: center и посмотрите, как это работает.

Soheil 07.10.2018 04:56

Я использовал контейнер для мультимедиа (min-width: 768 пикселей) и обложку для запросов без мультимедиа, и это работает. @Soheil

Re S 07.10.2018 06:27

Отличный пробег! :-).

Soheil 07.10.2018 07:01

Хотя жаль, что я не могу уместить все фоновое изображение в более мелкие медиа-запросы без центрирования поля шрифтов между границей и концом изображения баннера. Я думаю, что это лучшее решение - обрезать изображение, используя размер фона: обложка, не жертвуя компоновкой поля шрифтов. @ Soheil.

Re S 07.10.2018 07:39

да. Это именно то, что делает значение Cover.

Soheil 07.10.2018 08:04

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