【问题标题】:how to add a drop up list to floating button如何将下拉列表添加到浮动按钮
【发布时间】:2018-08-17 15:37:57
【问题描述】:

我的 html 页面中有一个浮动按钮

.float{
  position:fixed;
  width:60px;
  height:60px;
  bottom:40px;
  right:40px;
  background-color:#0C9;
  color:#FFF;
  border-radius:50px;
  text-align:center;
  box-shadow: 2px 2px 3px #999;
}

.my-float{
  margin-top:22px;
}


.label-container{
  position:fixed;
  bottom:48px;
  right:105px;
  display:table;
  visibility: hidden;
}

.label-text{
  color:#FFF;
  background:rgba(51,51,51,0.5);
  display:table-cell;
  vertical-align:middle;
  padding:10px;
  border-radius:3px;
}

.label-arrow{
  display:table-cell;
  vertical-align:middle;
  color:#333;
  opacity:0.5;
}

.my-float{
  font-size:24px;
  margin-top:18px;
}

a.float + div.label-container {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s, opacity 0.5s ease;
}

a.float:hover + div.label-container{
  visibility: visible;
  opacity: 1;
}

a.float:hover .user-req-list {
  visibility: collapse;
}


.float{
  position:fixed;
  width:60px;
  height:60px;
  bottom:40px;
  right:40px;
  background-color:#0C9;
  color:#FFF;
  border-radius:50px;
  text-align:center;
  box-shadow: 2px 2px 3px #999;
}

.my-float{
  margin-top:22px;
}


.label-container{
  position:fixed;
  bottom:48px;
  right:105px;
  display:table;
  visibility: hidden;
}

.label-text{
  color:#FFF;
  background:rgba(51,51,51,0.5);
  display:table-cell;
  vertical-align:middle;
  padding:10px;
  border-radius:3px;
}

.label-arrow{
  display:table-cell;
  vertical-align:middle;
  color:#333;
  opacity:0.5;
}

.my-float{
  font-size:24px;
  margin-top:18px;
}

a.float + div.label-container {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s, opacity 0.5s ease;
}

a.float:hover + div.label-container{
  visibility: visible;
  opacity: 1;
}

a.float:hover .user-req-list {
  visibility: collapse;
}
<body>
  <a class="float">
    <i class="fa fa-plus my-float"></i>
  </a>
  <div class="label-container">
    <div class="label-text">User Join Requests</div>
    <i class="fa fa-play label-arrow"></i>
  </div>
</body>

我想在这个按钮上添加一个下拉列表,这样当我按下/悬停在它上面时,列表就会出现并且用户将能够与之交互。 我尝试从引导程序中添加一个下拉列表,就像我在here 中看到的那样,但是列表没有显示,如您在此处看到的那样

.float{
  position:fixed;
  width:60px;
  height:60px;
  bottom:40px;
  right:40px;
  background-color:#0C9;
  color:#FFF;
  border-radius:50px;
  text-align:center;
  box-shadow: 2px 2px 3px #999;
}

.my-float{
  margin-top:22px;
}


.label-container{
  position:fixed;
  bottom:48px;
  right:105px;
  display:table;
  visibility: hidden;
}

.label-text{
  color:#FFF;
  background:rgba(51,51,51,0.5);
  display:table-cell;
  vertical-align:middle;
  padding:10px;
  border-radius:3px;
}

.label-arrow{
  display:table-cell;
  vertical-align:middle;
  color:#333;
  opacity:0.5;
}

.my-float{
  font-size:24px;
  margin-top:18px;
}

a.float + div.label-container {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s, opacity 0.5s ease;
}

a.float:hover + div.label-container{
  visibility: visible;
  opacity: 1;
}

a.float:hover .user-req-list {
  visibility: collapse;
}

.user-req-list {
  visibility: hidden;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="dropdown">
    <a class="float dropdown-toggle"  role="button" id="dropdownMenuLink" data-toggle="dropdown"
       aria-haspopup="true" aria-expanded="false">
      <i class="fa fa-plus my-float"></i>
    </a>
    <div class="label-container">
      <div class="label-text">User Join Requests</div>
      <i class="fa fa-play label-arrow"></i>
    </div>
    <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
      <a class="dropdown-item" href="#">Action</a>
      <a class="dropdown-item" href="#">Another action</a>
      <a class="dropdown-item" href="#">Something else here</a>
    </div>
  </div>

您可以看到它不起作用,当我将鼠标悬停在按钮上时,列表不会显示。有什么办法可以做我想做的事吗? 另请注意,我的项目是 Angular 6,所以任何 javascript 大部分都在图片之外。

【问题讨论】:

    标签: html css dropdown floating-action-button


    【解决方案1】:

    实际上,您的代码正在运行。您只是没有为下拉菜单添加 JS 要求。 See documentation.

    下拉菜单基于第三方库 Popper.js 构建,该库提供动态定位和视口检测。请务必在 Bootstrap 的 JavaScript 之前包含 popper.min.js 或使用包含 Popper.js 的 bootstrap.bundle.min.js / bootstrap.bundle.js。尽管不需要动态定位,但 Popper.js 不用于在导航栏中定位下拉菜单。

    但是,请注意,将鼠标悬停在您的按钮上时将无法访问下拉菜单。根据documentation,这是an intentional design decision.

    .float{
      position:fixed;
      width:60px;
      height:60px;
      bottom:40px;
      right:40px;
      background-color:#0C9;
      color:#FFF;
      border-radius:50px;
      text-align:center;
      box-shadow: 2px 2px 3px #999;
    }
    
    .my-float{
      margin-top:22px;
    }
    
    
    .label-container{
      position:fixed;
      bottom:48px;
      right:105px;
      display:table;
      visibility: hidden;
    }
    
    .label-text{
      color:#FFF;
      background:rgba(51,51,51,0.5);
      display:table-cell;
      vertical-align:middle;
      padding:10px;
      border-radius:3px;
    }
    
    .label-arrow{
      display:table-cell;
      vertical-align:middle;
      color:#333;
      opacity:0.5;
    }
    
    .my-float{
      font-size:24px;
      margin-top:18px;
    }
    
    a.float + div.label-container {
      visibility: hidden;
      opacity: 0;
      transition: visibility 0s, opacity 0.5s ease;
    }
    
    a.float:hover + div.label-container{
      visibility: visible;
      opacity: 1;
    }
    
    a.float:hover .user-req-list {
      visibility: collapse;
    }
    
    .user-req-list {
      visibility: hidden;
    }
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    
    
    <div class="dropdown">
      <a class="float dropdown-toggle"  role="button" id="dropdownMenuButton" data-toggle="dropdown"
         aria-haspopup="true" aria-expanded="false">
        <i class="fa fa-plus my-float"></i>
      </a>
      <div class="label-container">
        <div class="label-text">User Join Requests</div>
        <i class="fa fa-play label-arrow"></i>
      </div>
      <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
        <a class="dropdown-item" href="#">Action</a>
        <a class="dropdown-item" href="#">Another action</a>
        <a class="dropdown-item" href="#">Something else here</a>
      </div>
    </div>

    【讨论】:

    • 好吧,我使用 npm i popper.js 添加了 popper.js,然后我在 angular.json 文件中添加了一个脚本“node_modules/popper.js/dist/umd/popper.js”,dorpdown确实显示,但它不像您的示例那样粘在按钮上,而是在页面末尾,我错过了什么?
    • 将此添加到我的网站,下拉菜单有效,但是当我添加引导 cssmaxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384- Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">我能做些什么来避免覆盖样式?
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多