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

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

Я обновилизменения.Это сейчас в центре.

CSS Media Запросы min-width 768: Содержит enter image description here

CSS Обложка: enter image description here

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

фоновое изображение баннера: banner's background image

Оригинальный JSFiddle: https://jsfiddle.net/4enbjpyz/

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

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

Bootstrap 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;
        }
}

1 Ответ

0 голосов
/ 06 октября 2018

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

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

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

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

...