使用algolia自动完成功能制作可扩展材质搜索栏

Lef*_*eff 5 html css algolia

我在我的应用程序中使用algolia自动完成功能.我想构建一个扩展的搜索栏,就像这个页面上的可扩展示例一样.我有一个带有标题栏的布局,其中包含更大屏幕的搜索输入.在小屏幕上我只有一个放大镜图标,点击切换另一个带有搜索栏的标题,我最初隐藏它.这是小提琴,我无法工作,但希望它仍然可以给你一些概述.这是布局:

<header class="mdc-toolbar mdc-toolbar--fixed toolbar--custom">
  <div class="mdc-toolbar__row">
    <section class="menu mdc-toolbar__section mdc-toolbar__section--align-start">
      <a href="#" class="material-icons mdc-toolbar__menu-icon">menu</a>
      <span class="mdc-toolbar__title">Title</span>
    </section>
    <section class="mdc-toolbar__section">
      <form action="/search" method="get" class="search-field-desktop">
        <div class="mdc-text-field mdc-text-field--box mdc-text-field--with-leading-icon autocomplete-search-field">
          <i class="material-icons mdc-text-field__icon" tabindex="0">search</i>
          <input name="q"
                 type="text"
                 class="mdc-text-field__input search-input-js aa-input-search"
                 placeholder="Search for players and videos ..."
                 aria-label="Full-Width Text Field">
        </div>
      </form>
    </section>
    <section class="mdc-toolbar__section mdc-toolbar__section--align-end" role="toolbar">
      <a href="#" id="search-input-open" class="material-icons mdc-toolbar__icon" aria-label="Search" alt="Search">search</a>
      <a href="#" class="material-icons mdc-toolbar__icon" aria-label="Login" alt="Login">more_vert</a>
    </section>
  </div>
</header>
<header class="search-field-phone mdc-toolbar mdc-toolbar--fixed toolbar--custom">
  <div class="mdc-toolbar__row">
    <a id="search-input-close" class="material-icons mdc-toolbar__menu-icon" tabindex="0">arrow_back</a>
    <form action="/search" method="get">
      <div class="mdc-text-field mdc-text-field--box autocomplete-search-field">
        <input name="q"
                type="text"
                class="mdc-text-field__input search-input-js aa-input-search"
                placeholder="Search for players and videos ..."
                aria-label="Full-Width Text Field"
                autofocus>
      </div>
    </form>
  </div>
</header>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,由于某种原因,在小屏幕上看不到下拉菜单,而是在更大的屏幕上.这是scss/css:

.algolia-autocomplete {
  display: flex!important;
  flex: auto!important;
  height: 100%;
}
.aa-dropdown-menu {
  position: relative;
  top: -6px;
  border-radius: 3px;
  margin: 6px 0 0;
  padding: 0;
  text-align: left;
  height: auto;
  position: relative;
  background: $white;
  border: 1px solid #ccc;
  width: 100%;
  left: 0 !important;
  box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1);
}

.aa-dropdown-menu .aa-suggestions {
  position: relative;
  z-index: 1000;
}

.aa-dropdown-menu [class^="aa-dataset-"] {
  position: relative;
  border: 0;
  border-radius: 3px;
  overflow: auto;
  padding: 0;
  color: #3c3e42;
  font-weight: 500;
}

.aa-dropdown-menu * {
  box-sizing: border-box;
}

.aa-suggestion {
  display: block;
  width: 100%;
  height: 72px;
  clear: both;

  .mdc-list-item {
    height: 72px;
  }
}
.aa-suggestion span {
  white-space: nowrap !important;
  text-overflow: ellipsis;
  overflow: hidden;
  display: block;
  float: left;
  line-height: 1em;
  width: calc(100% - 30px);
}
.aa-suggestion.aa-cursor {
  background-color: transparent;
}
.aa-suggestion em {
  color: #00bcd4;
  font-weight: 700;
}
.aa-suggestion img {
  float: left;
  height: 44px;
  width: 44px;
  margin-right: 6px;
}

.aa-suggestion a {
  color: #3c3e42;
}

.aa-suggestions-category {
  font-weight: 700;
  color: #3c3e42;
  border-bottom: 1px solid rgba(102, 105, 105, 0.17);
}

.powered-by-algolia {
  padding-left: 15px;
  border-top: 1px solid rgba(102, 105, 105, 0.17);
  display: flex;
  align-items: center;
  height: 30px;
}

.aa-input-container {
  display: inline-block;
  position: relative; }
.aa-input-search {
  width: 100%;
  height: 30px;
  padding: 12px 28px 12px 12px;
  box-sizing: border-box;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none; }
.aa-input-search::-webkit-search-decoration, 
.aa-input-search::-webkit-search-cancel-button, 
.aa-input-search::-webkit-search-results-button, 
.aa-input-search::-webkit-search-results-decoration {
  display: none;
}
.media {
  margin: 10px 0;
}
.media-body {
  p {
    margin: 0;
  }
}
.toolbar--custom {
  color: $white;

  .mdc-toolbar__row {
    min-height: 56px;
  }

  form, .autocomplete-search-field {
    width: 100%;
  }

  .mdc-text-field--box:not(.mdc-text-field--upgraded) {
    height: 36px;
  }
  .mdc-text-field--box {
    overflow: visible;
    margin: auto;

    .mdc-text-field__icon {
      bottom: 8px;
      font-size: 22px;
    }
  }

  .mdc-text-field--box:after,
  .mdc-text-field--box:before {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }

  #search-input-open {
    display: none;
  }

  @media only screen and (max-width: 782px) {
    #search-input-open {
      display: block;
    }
    .search-field-desktop {
      display: none;
    }
  }
}

.search-field-phone {
  clip-path: circle(0%);
  visibility: hidden;
  .mdc-text-field {
    clip-path: circle(0%);
  }
}

@mixin search-animated-open {
  -webkit-animation: open 0.3s forwards;
  animation: open 0.3s forwards;
  animation-timing-function: $mdc-animation-standard-curve-timing-function;
}

@mixin search-animated-close {
  -webkit-animation: close 0.3s forwards;
  animation: close 0.3s forwards;
  animation-timing-function: $mdc-animation-standard-curve-timing-function;
}

.search-field-phone-open,  {
  visibility: visible;
  @include search-animated-open;

  .mdc-text-field {
    @include search-animated-open;
  }
}

.search-field-phone-close,  {
  @include search-animated-close;

  .mdc-text-field {
    @include search-animated-close;
  }
}

@keyframes open {
  from {
    clip-path: circle(0 at calc(100% - 68px) 50%);
  }
  to {
    clip-path: circle(150% at calc(100% - 68px) 50%);
  }
}
@keyframes close {
  from {
    clip-path: circle(150% at calc(100% - 68px) 50%);
  }
  to {
    clip-path: circle(0 at calc(100% - 68px) 50%);
    visibility: hidden;
  }
}
Run Code Online (Sandbox Code Playgroud)

整个页面的布局如下所示:

<div id="app">
    @include('layouts.partials.sidebar')
    @include('layouts.partials.navigation')
    <div class="page-content">
        @yield('content')
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

导航部分是上面显示的标题文件.这是侧边栏的部分:

<aside class="mdc-drawer mdc-drawer--temporary mdc-typography">
  <nav class="mdc-drawer__drawer">
    <header class="mdc-drawer__header">
      <div class="mdc-drawer__header-content">
        Header here
      </div>
    </header>
    <nav id="icon-with-text-demo" class="mdc-drawer__content mdc-list">
      <a class="mdc-list-item mdc-list-item--activated" href="#">
        <i class="material-icons mdc-list-item__graphic" aria-hidden="true">inbox</i>Inbox
      </a>
      <a class="mdc-list-item" href="#">
        <i class="material-icons mdc-list-item__graphic" aria-hidden="true">star</i>Star
      </a>
    </nav>
  </nav>
</aside>
Run Code Online (Sandbox Code Playgroud)

这是页面的css:

body {
  margin: 0;
}
#app {
  display: flex;
}
.page-content {
  display: inline-flex;
  flex-direction: column;
  flex-grow: 1;
  height: 100%;
  box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

我不确定导致这种行为的原因是什么,为什么大屏幕的下拉菜单可见,而较小屏幕的下拉菜单不可用?

更新

我注意到当我在小屏幕上打开搜索输入时,如果我删除了search-field-phone-open那么下拉菜单是可见的,我不确定该类中的是什么导致下拉列表不可见?

.search-field-phone-open,  {
  visibility: visible;
  @include search-animated-open;

  .mdc-text-field {
    @include search-animated-open;
  }
}
Run Code Online (Sandbox Code Playgroud)