点击其他区域隐藏弹出框效果

一般下拉框或者选择框,持久展示时会给用户显示的隐藏方式,如点击事件后。也可以添加隐式的隐藏方式,如点击弹出框之外的区域。

CSS方法-focus伪类

当触发的元素是可以focus,以输入框为例。

  1. 可以将弹出框出现的时机设置在input:focus时,实现弹出的效果。当focus焦点转移的时候,实现隐藏效果。
  2. 在弹出框容器上添加hover事件,选择点击弹出框内容时不会隐藏,保证弹出框的点击事件可以触发。
  3. 当选中弹出框中的项时,input焦点转移,hover事件保证弹出框显示,可以触发点击事件。然后点鼠标移出弹出框区域后,弹出框hover失效,隐藏。
    缺点:
    隐藏可能不太流畅;触发的元素只能是能加focuse的元素
    <div class="selectorswarp">
      <label for="input">输入框:</label>
      <input type="text"  class="selectinput" id="input"/>
      <ul class="selectors" @click="clickli">
        <li>s1</li>
        <li>s2</li>
        <li>s3</li>
      </ul>
    </div>
.selectinput:focus{
  &+.selectors{
    display: block;
  }
}
.selectors{
  background-color: #42b983;
  height: auto;
  display: none;
  &:hover{
    display: block;
  }
}

或者使用:focus-within直接加在input元素的warp元素上.

JS方法-contains函数

Node.contains;
使用contains方法可以判断一个元素是否是判断元素的后代元素。可以在document上添加点击的监听事件,若事件的触发元素不是弹出框的后代元素,则隐藏弹出框。若是,则持续展示弹出框。

let listerSelectWarp = (e)=>{
  let target = e.target,
    selectorwrap = document.querySelector('.selectorswarp');
  showoptions.value = selectorwrap.contains(target);
  console.log('listerSelectWarp',selectorwrap.contains(target));
}
document.addEventListener('click',listerSelectWarp,);

注意:
当容易内部还有其他点击控制弹出框事件时,需要注意选择addEventListener的useCapture项,选择事件的触发方向。
缺点:
展示时需要比较明确事件的触发,比如点击事中添加类或变量控制。展示和隐藏需要控制同一样式或变量。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 您好,要在 element-ui 中使用点击按钮弹出选择,可以使用 element-ui 提供的 Select 组件。 首先,在您的模板中添加一个 Select 组件: ``` <template> <div> <el-button @click="showSelect">选择</el-button> <el-select v-model="selected" v-show="isShowSelect" @close="closeSelect" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option> </el-select> </div> </template> ``` 然后,在您的脚本中定义 showSelect 和 closeSelect 方法: ``` <script> export default { data() { return { isShowSelect: false, selected: '', options: [ { value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' } ] } }, methods: { showSelect() { this.isShowSelect = true }, closeSelect() { this.isShowSelect = false } } } </script> ``` 这样,当您点击按钮时,选择就会弹出,当您在选择中选择了一个选项后,选择就会消失。 ### 回答2: elementui 提供了一个名为 Select 的组件,用于实现点击按钮弹出选择的功能。使用该组件,你只需要在页面的某个位置放置一个按钮,当按钮被点击时,弹出一个选择供用户选择。 首先,你需要按照 elementui 的文档说明,引入相关的样式和组件库。然后,在需要实现该功能的页面中,你可以这样编写代码: 1. 在模板中,放置一个按钮和一个选择组件: ``` <el-button @click="showSelect">点击选择</el-button> <el-select v-model="selectedOption" v-show="isSelectVisible"> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"> </el-option> </el-select> ``` 2. 在 Vue 实例中,定义相关的数据和方法: ``` data() { return { isSelectVisible: false, // 控制选择的显示隐藏 selectedOption: '', // 存储用户选择的选项 options: [ { value: 'option1', label: '选项1' }, { value: 'option2', label: '选项2' }, { value: 'option3', label: '选项3' } ] // 选择的选项列表 } }, methods: { showSelect() { this.isSelectVisible = true; // 点击按钮时,将选择的显示状态设置为 true,使其显示出来 } } ``` 这样,当用户点击按钮时,选择弹出来,并显示选项供用户选择。用户选择完毕后,可以通过 `selectedOption` 变量获取到用户选择的值,你可以根据需要进行处理。 需要注意的是,在上述代码中的 `<el-select>` 标签中,还可以通过设置其他属性来自定义选择的样式、行为等。具体的用法可以查看 elementui 的文档或者示例代码。 ### 回答3: ElementUI 是一套基于 Vue.js 的前端组件库,它提供了丰富且易于使用的 UI 组件,能够方便我们快速开发出美观且高质量的网页应用。其中,弹出选择是 ElementUI 提供的一个重要组件之一。 要实现点击按钮弹出选择,首先需要在 Vue 组件中引入 ElementUI 的 Button 和 Select 组件。然后,给按钮绑定一个点击事件,当用户点击按钮时,触发该事件。 在事件函数中,可以通过调用 ElementUI 中的 Dialog 组件来实现弹出选择效果。Dialog 组件是 ElementUI 中用于弹出对话的组件,可以通过设置它的 visible 属性来控制对话的显示和隐藏。 具体步骤如下: 1. 在 Vue 组件中引入 ElementUI 的 Button 和 Select 组件: ```javascript import { Button, Select, Dialog } from 'element-ui'; export default { components: { ElButton: Button, ElSelect: Select, ElDialog: Dialog }, // ... } ``` 2. 在模板中添加一个按钮和一个选择: ```html <el-button @click="showDialog">点击弹出选择</el-button> <el-dialog :visible.sync="dialogVisible"> <!-- 选择内容 --> <!-- ... --> </el-dialog> ``` 3. 在 Vue 实例中定义 dialogVisible 属性,并在点击事件中修改该属性的值以控制选择的显示和隐藏: ```javascript export default { data() { return { dialogVisible: false }; }, methods: { showDialog() { this.dialogVisible = true; } } // ... } ``` 通过以上步骤,当用户点击按钮时,选择将会以弹出的方式显示在页面上。当用户点击选择外的区域点击取消按钮时,选择将会被隐藏起来。这样,我们就成功实现了点击按钮弹出选择效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨灰ash2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值