首页 >web前端 >css教程 >如何使 HTML 选择框选项出现在悬停时?

如何使 HTML 选择框选项出现在悬停时?

Barbara Streisand
Barbara Streisand原创
2024-10-31 00:26:301094浏览

How to Make HTML Select Box Options Appear on Hover?

如何在悬停时显示 HTML 选择框选项

您提出的挑战涉及创建一个选择框,其中选项隐藏,直到用户悬停在它上面。下面是详细的解决方案:

实现:

提供的代码利用 jQuery 的悬停()事件来切换列表元素的可见性。未选择的 CSS 类用于设置当前未显示的列表项的样式。

HTML 标记:

<code class="html"><select name="size">
  <option value="small">Small</option>
  <option value="medium">Medium</option>
  <option value="large">Large</option>
</select></code>

CSS 样式:

<code class="css">select {
  opacity: 0.5;
}
ul {
  width: 8em;
  line-height: 2em;
}
li {
  cursor: pointer;
  display: list-item;
  width: 100%;
  height: 2em;
  border: 1px solid #ccc;
  border-top-width: 0;
  text-indent: 1em;
  background-color: #f90;
}
li:first-child {
  border-top-width: 1px;
}
li.unselected {
  display: none;
  background-color: #fff;
}
ul#selectUl:hover li.unselected {
  background-color: #fff;
}
ul#selectUl:hover li,
ul#selectUl:hover li.unselected {
  display: list-item;
}
ul#selectUl:hover li {
  background-color: #fc0;
}
ul#selectUl li:hover,
ul#selectUl li.unselected:hover {
  background-color: #f90;
}</code>

JavaScript 事件处理:

<code class="js">$('#selectUl li:not(":first")').addClass('unselected');

$('#selectUl').hover(
  function () {
    $(this).find('li').click(function () {
      $('.unselected').removeClass('unselected');
      $(this).siblings('li').addClass('unselected');
      var index = $(this).index();
      $('select option:selected').removeAttr('selected');
      $('select[name=size]')
        .find('option:eq(' + index + ')')
        .attr('selected', true);
    });
  },
  function () {}
);</code>

工作原理:

  1. 最初,通过添加未选择的类来隐藏 ul 中的所有选项元素。
  2. 当用户将鼠标悬停在 ul 上时,会触发 href() 事件,导致除第一个(即选定的选项显示)之外的所有列表项变得可见。
  3. 单击任何列表项都会切换未选定的列表项类,隐藏所有其他选项并显示选中的选项。
  4. index() 方法用于确定单击选项的索引,然后用于更新

以上是如何使 HTML 选择框选项出现在悬停时?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn