Раскрывающееся меню начальной загрузки исчезает после нажатия кнопки-переключателя - PullRequest
0 голосов
/ 23 октября 2019

Я скопировал и вставил навигационную панель из начальной загрузки: https://getbootstrap.com/docs/4.3/components/navbar/

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

Мой код:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <img id="navbarLogo" src="img/Home/Crunchsoft.techSignature.png">
    <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbar"
        aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="navbar-collapse collapse" id="navbar">
        <div id="navbar-items" class="navbar-nav">
            <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
            <a class="nav-item nav-link" href="#">Services</a>
            <a class="nav-item nav-link" href="#">Contact</a>
            <a class="nav-item nav-link" href="#">About</a>
        </div>
    </div>
</nav>

Мой _Host.cshtml:

@page "/"
@namespace Crunchsoft.techWebsite.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Crunchsoft.techWebsite</title>
    <base href="~/" />

    @*custom css*@
    <link href="css/index.css" rel="stylesheet" />

    <!-- bootstrap css -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    @*Animation*@
    <link href="assets/animate.css" rel="stylesheet" />


</head>
<body>
    <app>
        @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
    </app>
    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
    <script src="_framework/blazor.server.js"></script>
</body>
</html>

У меня естьпопытался поместить сценарии внизу страницы и поместить загрузчик в разные места в моем теге head, но безрезультатно.

Я уже рассмотрел множество других решений для работы со стеком:

Bootstrapраскрывающийся список исчезает после нажатия на него

Bootstrap 4 Toggle Checkbox в раскрывающемся меню

Держите раскрывающийся список Bootstrap открытым при нажатии

И не смог вытащить из этого ответ, который работал для меня.

На более расстраивающей ноте, когда я создаю свою навигационную панель в скрипке, она работает.

https://jsfiddle.net/MaxTaylor/6rftaw3o/1/

Редактировать: я пытался закомментировать все мои таблицы стилей, кроме начальной загрузки, и у меня все еще есть эта проблема. Я использую Blazor .AspNetCore. Я попробовал то же самое с помощью кода Visual Studio, и это сработало, но все еще не работает в моем проекте Blazor.

Ответы [ 2 ]

1 голос
/ 23 октября 2019

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

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

0 голосов
/ 29 октября 2019

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

Так что я написал свой собственный navbar внутри компонента Razor

<nav class="navbar navbar-expand-lg navbar-light bg-light">
        <img id="navbarLogoWords" src="/img/home/Crunchsoft.techSignature.png"/>

        <button onclick="toggleNavBar()" class="navbar-toggler" type="button"
                aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="navbar-collapse collapse" id="navbar">
            <div id="navbar-items" class="navbar-nav">
                <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
                <a class="nav-item nav-link" href="Services">Services</a>
                <a class="nav-item nav-link" href="#">Contact</a>
                <a class="nav-item nav-link" href="#">About</a>
            </div>
        </div>
</nav>

, а затем написал свой собственныйФайл JavaScript для него:

function toggleNavBar() {
    var x = document.getElementById("navbar");
    if (x.style.display === "block") {
        x.style.display = "none";
    } else {
        x.style.display = "block";
    }
}

И добавил ссылку в моем _Host.cshtml

<script src="/javaScript/scripts.js"></script>

Я думаю, потому что я использую Blazor, возможно, имеет больше смысла использовать C # втот же компонент, а не использовать JS в отдельном файле, но я не смог понять, как сделать C #.

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