最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 数据可视化之模块边框绘制,Vue3组件实现

    正文概述 掘金(TwoKe)   2020-12-28   480

    项目场景:

    《数据可视化之模块边框绘制,以及组件开发》介绍了css3中关于borderImage的相关配置,并且实现了一个border图片渲染的插件。其原理也是相当简单,这里就不过多赘述了,今天要做的是实现Vue3的组件(图片边框渲染通用组件)。 数据可视化之模块边框绘制,Vue3组件实现

    解决方案:

    1、准备

    1. 一张边框图片
    2. nodejs
    3. vue-cli

    2、快速开始

    1. 创建项目
    vue create dev-datav-border-view
    
    1. 添加组件
    <template>
        <div class="twoke-view-container">
            <div class="twoke-view-border" :id="id"></div>
            <slot></slot>       
        </div>
    </template>
    
    <script>
    import { ref, onMounted } from 'vue'
    import uuidv4 from 'uuid'
    
    export default {
        name: 'TwokeBorderView',
        props: {
            options: {
                type: Object,
                default: () => {
                    return {}
                }
            }
        },
        setup (props) {
            const {slice,source,padding,custom} = props.options
            const id = ref(`border-view-${uuidv4()}`)
    
            const onLoadBorder = () => {
                const border = document.getElementById(id.value)
                border.style.borderImageSource = `url(${source})`
                border.style.borderImageSlice = ` ${slice[0]} ${slice[1]} ${slice[2]} ${slice[3]}`
                border.style.borderImageWidth = `${slice[0]}px ${slice[1]}px ${slice[2]}px ${slice[3]}px`
                border.style.borderWidth = `${slice[0]}px ${slice[1]}px ${slice[2]}px ${slice[3]}px`
                const content = border.nextElementSibling
                content.style.position = "absolute"
                content.style.top =  "50%"
                content.style.left = "50%"
                content.style.transform= "translate(-50%,-50%)"
                if (padding&&!custom) {
                    let width = undefined
                    let height = undefined
                    if (padding.length===1) {
                        width = content.parentElement.clientWidth - padding[0]*2
                        height = content.parentElement.clientHeight - padding[0]*2
                    }else if(padding.length==2) {
                        width = content.parentElement.clientWidth - padding[0]*2
                        height = content.parentElement.clientHeight - padding[1]*2
                    }
                    content.style.width = `${width}px`
                    content.style.height = `${height}px`
                }
            }
    
            onMounted(() => {
                onLoadBorder()
            })
    
            return {
                id
            }
        }
    }
    </script>
    
    <style lang="scss" scoped>
    .twoke-view-container {
        position: relative;
        width: 100%;
        height: 100%;
       .twoke-view-border {
            border: 1px solid transparent;
            width: 100%;
            height: 100%;
            box-sizing: border-box;
        }
        
    }
    </style>
    

    3、快速使用(这里是用的全局安装组件)

    <template>
      <div class="home">
        <img  src="../assets/logo.png">
        <HelloWorld msg="Welcome to Your Vue.js App"/>
        <twoke-border-view style="width:400px;height:300px" :options="{padding:[10],slice: [9, 40, 9, 40], source: require('../assets/border.png')}">
          <div class="text">模块</div>
        </twoke-border-view>
      </div>
    </template>
    
    <script>
    // @ is an alias to /src
    import HelloWorld from '@/components/HelloWorld.vue'
    
    export default {
      name: 'Home',
      components: {
        HelloWorld
      }
    }
    </script>
    
    <style lang="scss" scoped>
    .text {
      color: blue;
    }
    </style>
    
    

    组件库

    码云组件库,我把写的一些组件放在这个下面,有兴趣的话可以看看。 安装

    npm i twoke-datav-vue
    

    克隆源码

    git clone https://gitee.com/twoke/twoke-datav-vue3.git
    

    起源地下载网 » 数据可视化之模块边框绘制,Vue3组件实现

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元