javascript - 下拉按钮列表。 Onmousover 在右侧显示按钮说明

标签 javascript html css dom-events mouseevent

我有一个按钮列表和带有下拉菜单的按钮。
当我将鼠标放在每个按钮上时,它会在列表底部显示按钮的简要说明(参见示例)。

现在它仅适用于一级按钮,不适用于下拉列表项。

总而言之,我想:

  1. 显示列表右侧每个元素的描述 (onmouseover),如图所示(不是在底部,就像现在这样)

  2. 显示描述 (onmouseover) 不仅适用于第一级按钮,也适用于下拉列表中的元素。

如果有可行的解决方案,我将不胜感激。

Please click to see the image for layout

.element-1,
.element-2,
.element-3 {
  display: none;
}

.a-1:hover~.element-1 {
  display: block;
}

.a-2:hover~.element-2 {
  display: block;
}

.a-3:hover~.element-3 {
  display: block;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<p>
  <font color="#909497">Drop-down Buttons list</font>
</p>
<div class="container" style="width: 350px; height: 22px;">
  <button title="Description 1" class="a-1" id="menu1" onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 68px;">Button 1</button>
  <div align="left" class="dropdown" style="width: 333px; height: 34px;">
    <button class="btn btn-default dropdown-toggle" id="menu1" aria-expanded="false" type="button" data-toggle="dropdown" style="width: 268px; height: 34px;">Drop-Down Button 1 
         <span class="caret"></span></button>
    <ul title="Drop-down item 1 description" class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li class="a-2" role="presentation">
        <a tabindex="-1" class="a-2" href="https://link2.com/" target="_blank">Drop-down item 1</a></li>
      <li title="Drop-down item 2 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="https://link3.com" target="_blank">Drop-down item 2</a></li>
    </ul>
  </div>
  <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" id="menu1" type="button" data-toggle="dropdown" style="width: 268px; height: 34px;">Drop-Down Button 3 
         <span class="caret"></span></button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li title="drop-down item 3 description" class="a-2" role="presentation">
        <a tabindex="-1" role="menuitem" href="http://link6.com" target="_blank">Drop-down item 3 </a></li>
      <li title="drop-down item 4 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 4 </a></li>
      <li title="drop-down item 5 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 5 </a></li>
      <li title="drop-down item 6 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="http://link.com" target="_blank">Drop-down item 6</a></li>
      <li title="Drop-down item 7 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 7</a></li>
    </ul>
  </div>
  <button title="Button 4 description" class="a-2" id="menu1" onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 34px;">Button 4</button><button title="Button 4 description" class="a-3" id="menu1"
    onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 34px;">Button 5 </button>&#160;&#160;&#160;&#160;&#160;&#160;
  <div class="element-1" style="width: 350px;">
    <img width="45" height="45" src="https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX2310920.jpg" data-themekey="#" alt="" />
    <br/>Button 1 description</div>
  <div class="element-2" style="width: 350px;">Button 4 description</div>
  <div class="element-3" style="width: 350px;">Button 5 description</div>
</div>

最佳答案

我已经将描述元素移到了它们的按钮之后。
然后,我添加了类 description 以轻松定位所有描述 div
另一个,descripted,可以轻松定位所有带有描述的按钮......

添加一些 CSS 就可以了:

.container {
  /* Added for visibility */
  background: #eee;
}

.description {
  display: none;
  /* The absolute positioning refers to the container. */
  position: absolute;
  transform: translate(100%, -100%);
}

.descripted:hover+.description {
  display: block;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<p>
  <font color="#909497">Drop-down Buttons list</font>
</p>
<div class="container" style="width: 350px; height: 22px;">
  <button title="Description 1" class="a-1 descripted" id="menu1" onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 68px;">Button 1</button>
  <div class="description" style="width: 350px;">
    <img width="45" height="45" src="https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX2310920.jpg" data-themekey="#" alt="" />
    <br/>Button 1 description
  </div>
  <div align="left" class="dropdown" style="width: 333px; height: 34px;">
    <button class="btn btn-default dropdown-toggle descripted" id="menu1" aria-expanded="false" type="button" data-toggle="dropdown" style="width: 268px; height: 34px;">Drop-Down Button 1<span class="caret"></span></button>
    <div class="description" style="width: 350px;">
      <img width="45" height="45" src="https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX2310920.jpg" data-themekey="#" alt="" />
      <br/>Drop-Down 1 description
    </div>

    <ul title="Drop-down item 1" class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li class="a-2 descripted" role="presentation">
        <a tabindex="-1" class="a-2" href="https://link2.com/" target="_blank">Drop-down item 1</a>
      </li>
      <div class="description" style="width: 350px;">
        <img width="45" height="45" src="https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX2310920.jpg" data-themekey="#" alt="" />
        <br/>Drop-Down item 1 description
      </div>
      <li class="descripted" title="Drop-down item 2" role="presentation">
        <a tabindex="-1" role="menuitem" href="https://link3.com" target="_blank">Drop-down item 2</a>
      </li>
      <div class="description" style="width: 350px;">
        <img width="45" height="45" src="https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX2310920.jpg" data-themekey="#" alt="" />
        <br/>Drop-Down item 2 description
      </div>
    </ul>
  </div>
  <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" id="menu1" type="button" data-toggle="dropdown" style="width: 268px; height: 34px;">Drop-Down Button 3<span class="caret"></span>
    </button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li title="drop-down item 3 description" class="a-2" role="presentation">
        <a tabindex="-1" role="menuitem" href="http://link6.com" target="_blank">Drop-down item 3 </a>
      </li>
      <li title="drop-down item 4 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 4 </a>
      </li>
      <li title="drop-down item 5 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 5 </a>
      </li>
      <li title="drop-down item 6 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="http://link.com" target="_blank">Drop-down item 6</a>
      </li>
      <li title="Drop-down item 7 description" role="presentation">
        <a tabindex="-1" role="menuitem" href="#">Drop-down item 7</a>
      </li>
    </ul>
  </div>
  <button title="Button 4 description" class="a-2" id="menu1" onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 34px;">Button 4</button><button title="Button 4 description" class="a-3" id="menu1"
    onclick="window.open(&#39;http://link.com&#39;, &#39;_blank&#39;)" type="button" style="width: 268px; height: 34px;">Button 5 </button>&#160;&#160;&#160;&#160;&#160;&#160;
</div>

我只在前 2 个按钮上完成了,但你明白了!
如果您需要一些修改,请随时发表评论。

希望对您有所帮助!

关于javascript - 下拉按钮列表。 Onmousover 在右侧显示按钮说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466802/

相关文章:

html - 在 IE11 中响应

html - 移动友好的图像 - 灯箱

jquery - Materialize - 更改表单中所选选项的颜色

javascript - 强调某些方法给出意想不到的结果

html - 以 SVG 作为数据 URL 的 CSS 背景在 Chrome 中不起作用

html - inline-block 不会将无序列表中的元素更改为水平显示

css - 如果是 CSS 中的伪元素和类,顺序很重要

javascript - 通过表单提交在 HTML5 canvas 上保存框的坐标

javascript - 标准事件操作完成后采取行动

javascript - 图表js数据抽取不起作用,解析问题