Implement div wheel zooming in and out in Vue project, drag effect, similar to canvas effect 1. Import the vue-draggable-resizable plug-in and click here to enter the GitHub address. 1), npm install --save vue-draggable-resizable
3) Use in vue file main.js: import Vue from 'vue' import App from './App' import router from './router' Vue.config.productionTip = false // iview import ViewUI from 'view-design'; import 'view-design/dist/styles/iview.css'; Vue.use(ViewUI) // Drag, zoom, canvas plugin import VueDraggableResizable from 'vue-draggable-resizable' import 'vue-draggable-resizable/dist/VueDraggableResizable.css' Vue.component('vue-draggable-resizable', VueDraggableResizable) new Vue({ el: '#app', router, components: { App }, template: '<App/>' }) vue file: Just focus on introducing the vue-draggable-resizable component configuration item and the handleTableWheel and tableZoom methods. <template> <div class="is"> <div style="height: 800px; width: 100%; border: 1px solid #000; position: relative; overflow: hidden;" > <!-- Import components. :lock-aspect-ratio="true": lock aspect ratio:resizable="false": non-scalable --> <vue-draggable-resizable w="auto" h="auto" :grid="[20,40]" :x="10" :y="10" :resizable="false" > <div class="table" ref="table" @wheel.prevent="handleTableWheel($event)"> <-- iview table, doesn't matter, any div will do --> <Table :columns="columns1" :data="data1" size="small" :disabled-hover="true" border > <template slot-scope="{ row, index }" slot="name"> <Tooltip :content="row.name" placement="top" transfer> <span class="name" @click="handleCellClick(row)">{{ row.name }}</span> </Tooltip> </template> </Table> </div> </vue-draggable-resizable> </div> </div> </template> <script> import VueDraggableResizable from "vue-draggable-resizable"; export default { name: "is", data() { return { columns1: [ { title: "Name", slot: "name", width: 120 }, { title: "Age", key: "age", width: 120 }, { title: "Address", key: "address", width: 120 }, { title: "Name", key: "name", width: 120 }, { title: "Age", key: "age", width: 120 }, { title: "Address", key: "address", width: 120 }, { title: "Name", key: "name", width: 120 }, { title: "Age", key: "age", width: 120 }, { title: "Address", key: "address", width: 120 } ], data1: [ { name: "John Brown", age: 18, address: "New York No. 1 Lake Park" }, { name: "Jim Green", age: 25, address: "London No. 1 Lake Park", cellClassName: { age: "demo-table-info-cell-age", address: "demo-table-info-cell-address" } }, { name: "Joe Black", age: 30, address: "Sydney No. 1 Lake Park" }, { name: "Jon Snow", age: 26, address: "Ottawa No. 2 Lake Park", cellClassName: { name: "demo-table-info-cell-name" } }, { name: "John Brown", age: 18, address: "New York No. 1 Lake Park" }, { name: "Jim Green", age: 25, address: "London No. 1 Lake Park", cellClassName: { age: "demo-table-info-cell-age", address: "demo-table-info-cell-address" } }, { name: "Joe Black", age: 30, address: "Sydney No. 1 Lake Park" }, { name: "Jon Snow", age: 26, address: "Ottawa No. 2 Lake Park", cellClassName: { name: "demo-table-info-cell-name" } } ] }; }, mounted() {}, methods: { handleTableWheel(event) { let obj = this.$refs.table; return this.tableZoom(obj, event); }, tableZoom(obj, event) { // The default is 100% at the beginning let zoom = parseInt(obj.style.zoom, 10) || 100; //Roll the wheel once and the value of wheelDelta increases or decreases by 120 zoom += event.wheelDelta / 12; if (zoom > 0) { obj.style.zoom = zoom + "%"; } return false; }, // Click cell event (used to test whether dragging blocks the table's default event, which is irrelevant) handleCellClick(row) { this.$Message.info("You clicked" + row.name); } } }; </script> <style scoped lang="less"> .is { .table { .name { cursor: pointer; } } } // iview table style: just copy from iview official website, it doesn't matter/deep/ .ivu-table { .demo-table-info-row td { background-color: #2db7f5; color: #fff; } td.demo-table-info-column { background-color: #2db7f5; color: #fff; } .demo-table-error-row td { background-color: #ff6600; color: #fff; } .demo-table-info-cell-name { background-color: #2db7f5; color: #fff; } .demo-table-info-cell-age { background-color: #ff6600; color: #fff; } .demo-table-info-cell-address { background-color: #187; color: #fff; } } // Remove the div border in the canvas.vdr { border: none; } </style> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: VirtualBox CentOS7.7.1908 Python3.8 build Scrapy development environment [graphic tutorial]
>>: MySQL 8.0.13 decompression version installation graphic tutorial under Windows
HTML meta tag HTML meta tags can be used to provi...
Table of contents 1. Sub-route syntax 2. Examples...
Variables defined in SASS, the value set later wi...
Table of contents Is setState synchronous or asyn...
I'll record my first attempt at vue3.0. When ...
This article example shares the specific code of ...
In Linux operation and configuration work, dual n...
Table of contents background Solution 1: Back up ...
Mysqldump is used for logical backup in MySQL. Al...
The effect to be achieved is: fixed zoom in twice...
As the data stored in the MySQL database graduall...
Writing a Dockerfile Configure yum source cd /tmp...
The principle of uploading pictures on the front ...
Table of contents 1. Concept Memory management mo...
The following CSS class names starting with a num...