jingtaozhushou 发表于 2021-12-2 10:26

Element问题,求前端element大神解决~

百度搜了好久都没找到解决方案都不行,求吾友大神帮忙解决一下,谢谢!
附加案列后缀txt改为html


HULANG-BTB 发表于 2021-12-2 10:26

本帖最后由 HULANG-BTB 于 2021-12-2 11:11 编辑

原因在于弹出的内容插入到了body上,鼠标移到弹出内容上的时候你的demo元素会失去hover状态宠儿display变成none导致消失。用变量记录并保持为flex就行了。
<!DOCTYPE html>
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8">
                <title></title>
                <!-- 引入样式 -->
                <link rel="stylesheet" >
                <!-- 引入组件库 -->
                <script src="https://unpkg.com/vue/dist/vue.js"></script>
                <script src="https://unpkg.com/element-ui/lib/index.js"></script>
        </head>


        <body>
                <div id="app">
                        <div class="tip">
                                (Element:Popover 弹出框 + Tooltip 文字提示)<br/>
                                需求:鼠标移入到Popover或Tooltip提示信息框区域,(上级)后面的黄色背景不隐藏,也保持显示状态;
                        </div>
                        <div class="demo">
                                <div class="name">鼠标移上来看效果</div>
                                <div class="box" :style="displayStyle">
                                        <el-popover
                                                v-model="popoverActive"
                                          placement="top-start"
                                          title="标题"
                                          width="200"
                                          trigger="hover"
                                          content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
                                                >
                                          <el-button slot="reference" style="margin-right: 10px;">hover 激活</el-button>
                                          </el-popover>
                                        <el-tooltip v-model="tipActive1" v-model="hoverActive" class="item" effect="dark" content="Top Left 提示文字" placement="top-start">
                                                <el-button>上左</el-button>
                                        </el-tooltip>
                                        <el-tooltip v-model="tipActive2" v-model="hoverActive" class="item" effect="dark" content="Left Top 提示文字" placement="left-start">
                                                <el-button>左上</el-button>
                                        </el-tooltip>
                                        <el-tooltip v-model="tipActive3" v-model="hoverActive" class="item" effect="dark" content="Right Top 提示文字" placement="right-start">
                                                <el-button>右上</el-button>
                                        </el-tooltip>
                                        <el-tooltip v-model="tipActive4" v-model="hoverActive" class="item" effect="dark" content="Bottom Left 提示文字" placement="bottom-start">
                                                <el-button>下左</el-button>
                                        </el-tooltip>
                                </div>
                        </div>

                </div>
        </body>

        <script>
                new Vue({
                        el: '#app',
                        data() {
                                return {
                                        popoverActive: false,
                                        tipActive1: false,
                                        tipActive2: false,
                                        tipActive3: false,
                                        tipActive4: false,
                                       
                                }
                        },
                        computed: {
                                displayStyle() {
                                        const { popoverActive, tipActive1, tipActive2, tipActive3, tipActive4 } = this
                                        return popoverActive || tipActive1 || tipActive2 || tipActive3 || tipActive4 ? 'display:flex;' : ''
                                }
                        }
                });
        </script>
        <style>
                .tip{
                        margin: 50px auto 0 auto;
                        text-align: center;
                        line-height: 30px;
                }
                .demo {
                        position: relative;
                        margin: 50px auto 0 auto;
                        width: 200px;
                        text-align: center;
                        padding: 10px;
                        background-color: #f5f5f5;
                }

                .box {
                        position: absolute;
                        height: 200px;
                        top: 40px;
                        left: 0;
                        background-color: bisque;
                        display: none;
                        align-items: center;
                        padding: 10px;
                }

                .demo:hover .box {
                        display: flex;
                }
        </style>
</html>

Slice1129 发表于 2021-12-2 11:02

这样子?

jingtaozhushou 发表于 2021-12-2 12:08

HULANG-BTB 发表于 2021-12-2 11:05
原因在于弹出的内容插入到了body上,鼠标移到弹出内容上的时候你的demo元素会失去hover状态宠儿display变成 ...

感谢!就是这个效果,貌似好像只能用这个变量控制的方法~{:301_1003:}

jingtaozhushou 发表于 2021-12-2 12:10

Slice1129 发表于 2021-12-2 11:02
这样子?

@HULANG-BTB 像这位大牛写的效果

半山Alec 发表于 2021-12-2 12:38

还有一种办法,不要中css的hover,用@mouseenter,@mouseleave代替,手动控制

jingtaozhushou 发表于 2021-12-2 13:32

半山Alec 发表于 2021-12-2 12:38
还有一种办法,不要中css的hover,用@mouseenter,@mouseleave代替,手动控制

逻辑还是一样的变量控制。

秋田先生 发表于 2021-12-2 13:57

现在还用elui的吗

jingtaozhushou 发表于 2021-12-2 15:22

秋田先生 发表于 2021-12-2 13:57
现在还用elui的吗

用啊,怎么不用?挺方便的

刺客cike 发表于 2022-1-5 18:18

这个只能用js来实现吧,然后清除冒泡
页: [1] 2
查看完整版本: Element问题,求前端element大神解决~