【问题标题】:Select2 dropdown menu with overlay effect after clickSelect2下拉菜单点击后叠加效果
【发布时间】:2023-02-18 02:05:33
【问题描述】:

我想自定义使用“Select2”库创建的下拉菜单。

我试图在菜单打开时创建叠加效果,但我失败了。

有没有人可以帮助我?

谢谢

我想在单击后获得放置在视口中心的下拉菜单,并在菜单打开时在背景中获得“叠加效果”。 因此,所有屏幕都变得有些暗,用户只能关注下拉菜单。

点击选项后,背景叠加效果和下拉菜单消失。 点击下拉菜单外后叠加效果和下拉菜单消失

下面是我写的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <link 
        href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" 
        rel="stylesheet"
    />

    <script 
        src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js">
    </script>

    <style>
        
        .box {
            position: fixed;
            top: 80%;
            left: 50%;
            transform: translate(-50%, -50%);
        }

        .select2-selection {
            background-color: aqua !important;
            border-radius: 10px !important;
        }
          
        .select2-dropdown {
            background-color: red !important;
            position: fixed !important;
            top: 50% !important;
            left: 50% !important;
            transform: translate(-50%, -50%) !important;
            
        }
    
    </style>

</head>


<body>
    
        <div class="box">
            <select id="my-select" style="width: 200px">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select>
        </div>
    


<!-- jQuery -->
<script 
    type='text/javascript'
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js">
</script>

<!-- Select2 CSS -->
<link 
    href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" 
    rel="stylesheet"
/>

<!-- Select2 JS -->
<script 
    src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js">
</script>

    
<script> 

    $(document).ready(function(){

        $('#my-select').select2({
        
        
        });
    
    });

</script>

</body>
</html>

【问题讨论】:

    标签: javascript css jquery-select2


    【解决方案1】:

    您可以使用 select2:openselect2:close 来触发选择打开和关闭的事件,然后在您的 select2 容器上应用类 ovelay 这是一个示例:

    $(document).ready(function(){
      $('#my-select').select2({});
      
      $('#my-select').on('select2:open', function (e) {
        $('#container').addClass("overlay");
      });
      
      $('#my-select').on('select2:close', function (e) {
        $('#container').removeClass("overlay");
      });
    });
    .container {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100vh;
        width: 100%;
        overflow: hidden;
    }
    
    .overlay {
        background: #3a1d1d;
        background: linear-gradient(rgb(72,0,72,0.8), rgb(192,72,72,0.8)), #766767);
        background: linear-gradient(rgb(72,0,72,0.8), rgb(192,72,72,0.8)), #362929);
        background-size: cover;
        background-repeat: no-repeat;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <!DOCTYPE html>
    <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
    
          <link ref="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />
    
          <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js">
          </script>
      </head>
    
      <body>
          <div class="container" id="container">
              <div class="box">
                  <select id="my-select" style="width: 200px">
                      <option value="option1">Option 1</option>
                      <option value="option2">Option 2</option>
                      <option value="option3">Option 3</option>
                  </select>
              </div>
          </div>
    
    
          <!-- jQuery -->
          <script type='text/javascript' rc="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js">
          </script>
    
          <!-- Select2 CSS -->
          <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />
    
          <!-- Select2 JS -->
          <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js">
          </script>
      </body>
    </html>

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多