проблемы с позицией выпадающего контента - PullRequest
0 голосов
/ 22 апреля 2020

Я создал раскрывающееся меню, используя это руководство по W3 :

    <nav>
        <div class="nav_container">
            <a href="#" class="logo"></a>
            <ul>
                <li class="dropdown">
                    <a href="">About Us <i class="fas fa-caret-down"></i></a>
                    <div class="dropdown-content">
                        <a href="">Benefits</a>
                        <a href="">Team</a>
                        <a href="">Partners</a>
                    </div>
                </li>
                <li><a href="">Solutions</a></li>
                <li><a href="">Products</a></li>
                <li><a href="">How to Buy</a></li>
                <li class="dropdown">
                    <a href="">Expertise <i class="fas fa-caret-down"></i></a>
                    <div class="dropdown-content">
                        <a href="">Case Studies</a>
                        <a href="">Videos</a>
                    </div>
                </li>
                <li class="dropdown">
                    <a href="">Support <i class="fas fa-caret-down"></i></a>
                    <div class="dropdown-content">
                        <a href="">Resources</a>
                        <a href="">FAQ</a>
                        <a href="">Downloads</a>
                        <a href="">License Actication</a>
                    </div>
                </li>
                <li><a href="">News</a></li>
                <li><a href="" id="special">Contact Us</a></li>
            </ul>
        </div>
    </nav>

<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/js/all.min.js"
        integrity="sha256-KzZiKy0DWYsnwMF+X1DvQngQ2/FxF7MF3Ff72XcpuPs=" crossorigin="anonymous"></script>
/* START - Footer */
@import url("https://fonts.googleapis.com/css2?family=Montserrat&display=swap");

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Montserrat", sans-serif;
}

html {
  background-color: rgba(0, 0, 0, .5);
}

a,
a:hover,
a:visited,
a:focus,
a:active {
    text-decoration: none;
    color: #ffffff;
}

/* START - Navigation Bar */
nav {
    width: 100vw;
    max-width: 100%;
    left: 0;
    top: 0;
    position: fixed;
    font-size: 1em;
    transition: font-size 0.25s ease, top 0.5s ease;
    background-color: rgba(47, 50, 56, 0.6);
    z-index: 1000;
}

nav .nav_container {
    width: 90%;
    margin: 0 auto;
    display: flex;
    align-items: center;
    padding: 0.5em 0;
}

nav .logo {
    display: block;
    width: 250px;
    height: 4.2em;
    background-image: url("../img/logo-white.png");
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
}

nav ul {
    margin-left: auto;
    display: flex;
    flex-wrap: nowrap;
    justify-content: space-evenly;
    list-style-type: none;
    transition: display 0.25s linear;
}

nav ul li {
    white-space: nowrap;
    transition: padding 0.25s ease;
    color: #fffaff;
}

nav ul li a {
    padding: 1em;
    display: block;
    transition: color 0.25s ease, text-shadow 0.25s ease;
    text-shadow: 3px 0px 7px rgba(0, 0, 0, 0.4), -3px 0px 7px rgba(0, 0, 0, 0.4), 0px 4px 7px rgba(0, 0, 0, 0.4);
    font-weight: bold;
}
nav ul li a:hover {
    color: red;
    text-shadow: 2px 0px 8px rgba(0, 0, 0, 0.6),
    -2px 0px 8px rgba(0, 0, 0, 0.6),
    0px 3px 8px rgba(0, 0, 0, 0.6);
}

nav ul #special {
    color: #fffaff;
    background-color: #e00024;
    transition: background-color 0.25s ease;
    border-radius: 5px;
    text-shadow: none;
}

nav ul #special:hover {
    background-color: #901418;
    text-shadow: none;
}

nav .dropdown {
    position: relative;
}

nav .dropdown-content {
    display: none;
    position: absolute;
    background-color: rgba(47, 50, 56, 0.6);
    /* min-width: 140px; */
    box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
    z-index: 1;
}

nav .dropdown-content::before {
    content: "";
    position: absolute;
    /* right: 100%; */
    top: -0.5em;
    left: 50%;
    transform: translate(-50%, 0);
    width: 0;
    height: 0;
    border-left: 0.5em solid transparent;
    border-bottom: 0.5em solid #757c8c;
    border-right: 0.5em solid transparent;
}

nav .dropdown-content a:hover {
    background-color: rgba(47, 50, 56, 0.8);
}

nav .dropdown:hover .dropdown-content {
    display: block;
}
/* END - Navigation Bar */

Вот кодовая ручка: https://codepen.io/bleah1/pen/dyYpeYr

Я добавил стрелку поверх dropdown-content:

nav .dropdown-content::before {
    content: "";
    position: absolute;
    /* right: 100%; */
    top: -0.5em;
    left: 50%;
    transform: translate(-50%, 0);
    width: 0;
    height: 0;
    border-left: 0.5em solid transparent;
    border-bottom: 0.5em solid #757c8c;
    border-right: 0.5em solid transparent;
}

Элемент dropdown-content в настоящее время начинается в той же точке, что и dropdown. Мне бы хотелось, чтобы каждая dropdown-content и стрелка (dropdown-content::before) были центрированы относительно текста dropdown.
Кажется, я не могу понять это правильно.

Что вы думаете

1 Ответ

0 голосов
/ 22 апреля 2020

Вы должны добавить их к своему CSS:

nav .dropdown-content {
    left:50%;
    top: 100%;
    transform:translate(-50%,0);
}
nav ul li a {
    position:relative;
}

, это исправит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...