当页面设置了zoom,如何控制单个元素或组件整体不受改变

zoom

使用CSSzoom属性可以实现自适应布局。

zoom属性设置或检索对象的缩放比例,可以通过CSS媒体查询结合zoom属性,根据不同的屏幕分辨率修改样式,从而实现自适应。

例如,可以在body标签添加一个类标签,然后在不同的屏幕分辨率下使用媒体查询修改zoom的值,这样就可以不用针对每个分辨率去修改样式。

总结概念

CSS的zoom属性用于控制元素的缩放比例。它可以增大或减小元素的尺寸,同时也会影响元素内部的内容。

使用

zoom属性的取值可以是一个数字或百分比。具体解释如下:

  • zoom: 1; 表示元素的原始大小,不进行缩放。
  • zoom: 1.5; 表示元素的尺寸放大到原始大小的1.5倍。
  • zoom: 200%; 表示元素的尺寸放大到原始大小的2倍。

适用的浏览器

vue.draggable.next

vue组件(vue.js 3.0)允许拖放以及与视图模型数组同步。

对于vue2和vue1版本检查: github.com/SortableJS/...

基于并提供 Sortable.js 的所有功能

背景

背景是,发现有一天测试过的拖拽组件不能拖动,代码放出来单独在全新项目运行没问题,但是在那个项目中确实拖不动,或者拖动的点位很奇葩很诡异才能调换位置。

于是排查了一下,是先前说的整体页面要整体缩小到98%,html这个标签加了个{zoom: 98%}.

导致整体页面缩小,然而Sortable这个库上加上zoom,不起作用拖不动。

github上有这个issue

github.com/SortableJS/...

可以去看看。我下面截个图。

里面见到的解决方法是说把zoom去掉。但是这个zoom又是必须保留的。有另外个不用去掉zoom的解决方法,如下面所示:

反向操作:

整体缩小到98%,那我就那个元素控件就方向操作,也就是整体放大到原来的那个大小:

设置css

解决的代码在下面👇:

css 复制代码
// xxx 代表你想要反向操作的zoom的元素
xxx {
    zoom: 102% !important;
    transform: scale(1/1.02) !important; // 因为我这里是zoom了98%,那么100 + 2 就可以了 102,自己可以写代码试试
    transform-origin: 0 0 !important; 
}
相关推荐
codeGoogle8 小时前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
用户938515635079 小时前
React Context 与自定义 Hook 从底层到实践:「跨层级通信 + 副作用封装」全解析
前端·javascript·react.js
滴滴答答哒9 小时前
VUE3+element-plus MultiSelect 多选下拉组件
前端·javascript·vue.js
其美杰布-富贵-李9 小时前
04 watch 与 Vue 响应式数据流
前端·javascript·vue.js
赵大仁11 小时前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
kyriewen12 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒12 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李13 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区13 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户9385156350713 小时前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js