目前,下拉菜单与父项目文本左对齐.如果菜单栏从屏幕的左侧开始,这是很好的.但是,我的菜单栏从右侧开始,所以文本会从屏幕上消失.如何使下拉菜单与父项的右侧对齐并展开其左侧?

It should drop down like this:

    itemA    itemB
---------
|       |
---------

.nav-section {
  margin-left: auto;
  margin-right: auto;
  max-width: 1440px;
}

.nav {
  display: flex;
  height: 100%;
  position: static;
  width: 100%;
  z-index: 9999;
}

.nav-item {
  padding-left: 4px;
  padding-right: 4px;
  position: static;
  text-align: right;
  width: auto;
}

.button-item {
  padding-bottom: 2rem;
  padding-top: 2rem;
}

.dropdown {
  display: none;
}

.nav-item:hover .dropdown {
  display: block;
}

.dropdown-menu {
  border: solid 1px red;
  padding: 2px;
  position: absolute;
}
<div class="nav-section">
  <div class="nav">
    <div class="nav-item">
      <button class="button-item">Item A</button>
      <div class="dropdown">
        <div class="dropdown-menu">
          <div class="dropdown-item">Item A1</div>
          <div class="dropdown-item">Item A2</div>
        </div>
      </div>
    </div>
    <div class="nav-item">
      <button class="button-item">Item B</button>
      <div class="dropdown">
        <div class="dropdown-menu">
          <div class="dropdown-item">Item B1</div>
          <div class="dropdown-item">Item B2</div>
        </div>
      </div>
    </div>
  </div>
</div>

推荐答案

您需要做的就是为导航元素添加direction:

rtl表示从右到左

.nav {
  direction:rtl;
}

然后,如果内容是从左到右的书面语言,则将子项的方向重置为从左到右ltr:


.dropdown-menu {
  direction:ltr;
}

.nav-section {
  margin-left: auto;
  margin-right: auto;
  max-width: 1440px;
}

.nav {
  display: flex;
  height: 100%;
  position: static;
  width: 100%;
  z-index: 9999;
  direction:rtl;
}

.nav-item {
  padding-left: 4px;
  padding-right: 4px;
  position: static;
  text-align: right;
  width: auto;
}

.button-item {
  padding-bottom: 2rem;
  padding-top: 2rem;
}

.dropdown {
  display: none;
}

.nav-item:hover .dropdown {
  display: block;
}

.dropdown-menu {
    direction:ltr;
  border: solid 1px red;
  padding: 2px;
  position: absolute;
}
<div class="nav-section">
  <div class="nav">
    <div class="nav-item">
      <button class="button-item">Item A</button>
      <div class="dropdown">
        <div class="dropdown-menu">
          <div class="dropdown-item">Item A1 ...</div>
          <div class="dropdown-item">Item A2 ...</div>
        </div>
      </div>
    </div>
    <div class="nav-item">
      <button class="button-item">Item B</button>
      <div class="dropdown">
        <div class="dropdown-menu">
          <div class="dropdown-item">Item B1 ...</div>
          <div class="dropdown-item">Item B2 ...</div>
        </div>
      </div>
    </div>
  </div>
</div>

Html相关问答推荐

无法使xpath为HTML代码块工作

电话号码验证器(Angular )

<;img>;和具有负边距的元素的堆叠顺序

动态FormControl值在Angular 上绑定错误的问题

将表格背景图像置于行背景 colored颜色 之上

如何保持嵌套进度条的背景色?

Django HTML标记-Merge for Loop with Conditional语句

如何使链接组件内的内容不重新路由Next.js13

布局更改时的转换

如何从通过 find-each 方法(在 Rails 应用程序中)生成的列表创建下拉菜单?

为什么 Flexbox 中相邻元素上的 flex:1 会影响另一个元素的固定宽度?

当我将有序列表居中时,数字会跑到列表的另一行

表单中如何分别禁用/启用多个提交按钮?

如何截断一些文本并用双引号引起来?

为什么图像会影响我的

Primeng浮动标签溢出管理

如何在没有 JS 的情况下创建带搜索的 Select 菜单

在中心而不是边界处填充 svg 的背景

HTML 标记未在页面上展开

如何向上移动图像并溢出图像的一部分而另一部分不溢出