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
Currently, most CPUs support floating-point units...
As shown below: Mainly execute authorization comm...
1. Data desensitization explanation In daily deve...
This article shares the specific code of JavaScri...
Database stored procedures DROP PROCEDURE IF EXIS...
Before officially using Docker, let's first f...
Collapsed headers are a great solution for displa...
Get the current date + time (date + time) functio...
Today I sent a small tool for Ubuntu to a custome...
use <div id="app"> <router-lin...
1. Cause The requirement is to display two lines,...
1. MYSQL index Index: A data structure that helps...
Declare the parameter name, type and permission y...
Copy code The code is as follows: <form action...
The latest Insider version of Visual Studio Code ...