html - 如何防止从左到右下拉打开?

标签 html css

您好,我正在尝试开发下拉框列表。我能够开发它。当我点击下拉菜单时,所有选项将从左侧开始出现,如下所示

window.onload = function() {
  $(".btn-toggle").on("click", function() {

    $('.dropdown-menu').toggleClass('open');
  });
  $(".dropdown-menu li").on("click", function() {

    $('.btn-toggle').text($(this).text());
    $('.dropdown-menu').removeClass('open');
  });
}
.dropdown-header {
  background: #DCDCDC;
  margin-left: 124px;
  background: no-repeat;
  background-position: right top;
  width: 151px;
  background-image: url(https://softwareui.abb.com/DOWNLOADS/icons/svgControls/UI_ControlComponent_CaretDown_16.svg);
  -webkit-text-fill-color: black;
  background-color: lightgrey;
}

.dropdown-menu {
  font-family: ABBvoice;
  font-weight: normal;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  float: left;
  min-width: 150px;
  max-height: 600px;
  overflow-x: visible;
  overflow-y: visible;
  padding: 0;
  margin: 0;
  list-style: none;
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  background-color: #FFFFFF;
  border-radius: 0;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  color: #464646;
  transition: all .3s;
  transform: translate(-100%);
}

.checkbox-inline:active {
  background-color: #2E92FA;
}

.dropdown-menu.open {
  transform: translate(0%);
}

.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn-group">
  <button class="btn-toggle dropdown-header" type="button">Select User Role</button>
  <ul class="dropdown-menu" role="menu" style="width:100%; border:#000000">
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox17">Sensors</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox18">Actuators</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox19">Digital inputs</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">

        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox20">Outputs</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox21">Converters</label>
      </div>
    </li>
  </ul>
</div>

每当我点击下拉菜单时,所有选项都应立即在按钮下方打开。
有人可以帮我完成这项工作吗?任何帮助,将不胜感激。谢谢

最佳答案

问题是您在 css 中使用了 tranformtransition,不确定您期望什么,因为它按照描述执行转换。

您可以通过删除 .dropdown-menu 中的这两行来摆脱这些转换

transition: all .3s;
transform: translate(-100%);

并将.dropdown-menu.open改成这个

.dropdown-menu.open {
    display:none
}

更新被截断

window.onload = function() {
  $(".btn-toggle").on("click", function() {

    $('.dropdown-menu').toggleClass('open');
  });
  $(".dropdown-menu li").on("click", function() {

    $('.btn-toggle').text($(this).text());
    $('.dropdown-menu').removeClass('open');
  });
}
.dropdown-header {
  background: #DCDCDC;
  margin-left: 124px;
  background: no-repeat;
  background-position: right top;
  width: 151px;
  background-image: url(https://softwareui.abb.com/DOWNLOADS/icons/svgControls/UI_ControlComponent_CaretDown_16.svg);
  -webkit-text-fill-color: black;
  background-color: lightgrey;
}

.dropdown-menu {
  font-family: ABBvoice;
  font-weight: normal;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  float: left;
  min-width: 150px;
  max-height: 600px;
  overflow-x: visible;
  overflow-y: visible;
  padding: 0;
  margin: 0;
  list-style: none;
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  background-color: #FFFFFF;
  border-radius: 0;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  color: #464646;
}

.checkbox-inline:active {
  background-color: #2E92FA;
}

.dropdown-menu.open { 
  display: none
}

.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn-group">
  <button class="btn-toggle dropdown-header" type="button">Select User Role</button>
  <ul class="dropdown-menu" role="menu" style="width:100%; border:#000000">
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox17">Sensors</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox18">Actuators</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox19">Digital inputs</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">

        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox20">Outputs</label>
      </div>
    </li>
    <li>
      <div style="margin-left:3px">
        <label style="margin-left:2px; margin-right:30px;" class="checkbox-inline" for="inlineCheckbox21">Converters</label>
      </div>
    </li>
  </ul>
</div>

关于html - 如何防止从左到右下拉打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49381116/

相关文章:

php - 组合框人口

javascript - jQuery 上升一级和 .find()

javascript - javascript中的split函数将数据添加到表中

html - 使用 Microsoft Edge 中的 HTML 超链接打开映射的 Windows 资源管理器文件夹

javascript - 将 javascript 和 css 内联放在一个缩小的 html 文件中以提高性能?

html - 显示 : table-cell same space for all cells

css - React Native 中的椭圆边框半径

css - 自动调整导航菜单

css - 如何使用 css3 使文本流经 2 行 2 列?

css - border-left-image、border-right-image、border-top-image 和 border-bottom-image 是什么意思?