为了账号安全,请及时绑定邮箱和手机立即绑定

更改悬停效果以单击显示下拉列表

更改悬停效果以单击显示下拉列表

千万里不及你 2023-11-13 11:02:06
好的,我有一个“悬停时”显示的下拉列表,有没有办法将其更改为“单击时”显示。理想情况下,仅限 CSS,但也对 JS 选项开放。如果我可以把船推得更远,我还希望在右上角有一个十字来关闭下拉列表。我在这里做了一个小提琴,以便您可以看到我当前的“悬停”设置当前CSSul {padding: 15px;list-style: none;text-align: center;}.navigationWrap ul li {width: 100%;float: left;color: #000;font-size: 16px;position: relative;}.navigationWrap ul li a {text-decoration: none;color: #000;display: block;}.navigationWrap ul li a:hover {color: #000;background-color: #e6ffe6;}.navigationWrap ul li ul.subNav {position: absolute;width: 95%;padding: 10px;background-color: #fff; border: #4399fc solid 1px;display: none;z-index: 999;left: 0;top: 100%;text-align: left;max-height: 350px;overflow: auto;overflow-x: hidden;}.navigationWrap ul li ul.subNav li { float: left; width: 100%; font-size: 20px; letter-spacing: 1px; padding-bottom: 10px; } .navigationWrap ul li ul.subNav a {  float: left;  width: 100%;  transition: all 0.3s ease-in-out;  display: block;  } .navigationWrap ul li ul.subNav li a:hover {  color: #000;  padding-left: 10px;  } .navigationWrap ul li ul.subNav li.active a { color: #04A000; } .navigationWrap ul li.dropdown:hover ul.subNav {  display: block;  }
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

使用 JavaScript 是很有可能的。我是用 jQuery 做的。dropdown如果用户单击容器外部,我就会关闭dropdown。


这是JS代码。


$(function(){

    $('.dropdown .dropdown-toggle').on('click', function(e){

        e.preventDefault;

        e.stopPropagation;

        $(this).parents('.dropdown').toggleClass('show');

    });


    // Remove dropdown if click outside of dropdown


    const $menu = $('.dropdown');


    $(document).mouseup(e => {

        if (!$menu.is(e.target) // if the target of the click isn't the container...

            && $menu.has(e.target).length === 0) // ... nor a descendant of the container

        {

            $menu.removeClass('show');

        }

    });

});

CSS 改变。


/* Before */


.navigationWrap ul li.dropdown:hover ul.subNav {

  display: block;

}


/* After */

.navigationWrap ul li.dropdown.show ul.subNav {

  display: block;

}

这是 HTML。


<div class="navigationWrap">

  <ul>

    <li class="dropdown">

      <a class="dropdown-toggle" href="javascript:void(0);">&#9776; See Options</a>

      <ul class="subNav">

        <li><a href="#">Option 1</a></li>

        <li><a href="#">Option 2</a></li>

        <li><a href="#">Option 3</a></li>

        <li><a href="#">Option 4</a></li>

        <li><a href="#">Option 5</a></li>

        <li>

          <p></p>

        </li>

        <li><a href="#">Option 6</a></li>

        <li><a href="#">Option 7</a></li>

      </ul>

    </li>

  </ul>

</div>

这是CodePen



查看完整回答
反对 回复 2023-11-13
?
绝地无双

TA贡献1946条经验 获得超4个赞

你可以这样做


我们通过 css 切换类(添加/删除)并更改显示值


document.querySelector('.dropdown').onclick = () => {

  document.querySelector('.dropdown').classList.toggle('show');

};

如果类.show存在那么display: block


.navigationWrap ul li.show ul.subNav{

  display: block;

}

看一下这个


查看完整回答
反对 回复 2023-11-13
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信