vue render封装图片弹窗插件

引用子组件
<previewImg :previewImage="columnData.imageUrl"></previewImg>

如果图片为空,使用默认图片时,需要用require先把图片引入
const defaultmg = require(’@/assets/defPic.png’)

定义子组件

<script>
export default {
    data () {
        return {
            previewVisible: false,
        }
    },
    render (createElement) {
        return createElement(
            'div',
            {},
            [
                createElement(
                    'a-avatar',
                    {
                        attrs: {
                            size: 36,
                            src: this.previewImage
                        },
                        style: {
                            cursor: 'pointer'
                        },
                        on: {
                            click: this.handleShow
                        }
                    }
                ),
                
                createElement(
                    'a-modal',
                    {
                        attrs: {
                            visible: this.previewVisible,
                            footer: null,
                            width: this.width + 'px'
                        },
                        on: {
                            cancel: this.handleCancel
                        }
                    },
                    [
                        createElement(
                            'img',
                            {
                                attrs: {
                                    alt: 'show big image',
                                    src: this.previewImage
                                },
                                style: {
                                    width: '100%'
                                }
                            }
                        )
                    ]
                )
            ]
        )
    },
    props: {
        width: {
            type: Number,
            default: 800
        },
        previewImage: {
            type: String,
            default: 'none.png'
        },
        showBig: {
            type: Boolean,
            default: true
        }
    },
    methods: {
        handleCancel () {
            this.previewVisible = false
        },
        handleShow () {
            if (!this.showBig) {
                return
            }
            this.previewVisible = true
        }
    }
}
</script>

<style lang="scss" scoped>
/deep/.ant-modal-body {
    padding: 38px 23px 23px;
}
</style>

vue文档参考
https://cn.vuejs.org/v2/guide/render-function.html#%E6%B7%B1%E5%85%A5%E6%95%B0%E6%8D%AE%E5%AF%B9%E8%B1%A1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue render渲染悬浮可以通过在 Vue 实例中定义一个组件来实现。以下是一个简单的示例代码: 首先,在 Vue 实例中定义一个组件,作为悬浮的内容: ``` <template> <div class="popup"> <h1>{{ title }}</h1> <p>{{ message }}</p> <button @click="closePopup">关闭</button> </div> </template> <script> export default { data() { return { title: '标题', message: '这是一个悬浮的内容' } }, methods: { closePopup() { // 关闭的逻辑 } } } </script> <style scoped> .popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: #fff; border: 1px solid #ccc; } </style> ``` 接下来,在 Vue 实例中使用该组件,并在需要显示悬浮的地方添加一个触发显示的按钮: ``` <template> <div> <button @click="showPopup">显示</button> <div v-if="isPopupVisible"> <popup></popup> </div> </div> </template> <script> import Popup from './Popup.vue'; export default { components: { Popup }, data() { return { isPopupVisible: false } }, methods: { showPopup() { this.isPopupVisible = true; } } } </script> ``` 在上述示例中,点击“显示”按钮后,组件 `Popup` 会被渲染并显示在页面中。点击中的“关闭”按钮,可以关闭。 需要注意的是,为了实现的悬浮效果,我们在 `Popup` 组件的样式中使用了 `position: absolute` 和 `top: 50%; left: 50%;` 实现居中定位效果。最后,通过点击按钮控制数据的变化,来显示或隐藏。 以上就是使用 Vue render 渲染悬浮的一个简单示例。根据具体的需求,你可以根据这个示例进行进一步的扩展和定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值