移动端横屏旋转问题

需求:旋转屏幕时,需要内容跟着一起旋转,即横屏时内容也是横的。

具体实现:transform rotate

使用此方法时,需要将容器div宽高用js设置px固定,若用100%,vw之类的,会出现问题;

在rotate(90deg)之后,发现内容并未向预期那样正常填满整个屏幕,有偏移值,故需要再加一个

translate来进行移动保证位置正确;

造成这种现象的原因时,元素在屏幕旋转之后的旋转中心,是以元素的当前的几何中心进行的,

并不是按屏幕中心进行的,所以需要计算差值,而差值,就是高度减去宽的的1/2,注意tanslate的时候加一个负号

if(screen.orientation.angle == 90||screen.orientation.angle==-90){
   ifc.style.width = screen.height+'px';
   ifc.style.height = screen.width+'px';
   let translatevalue = (ifc.offsetHeight-ifc.offsetWidth)/2;//ci
   ifc.style.transform = 'rotate('+screen.orientation.angle+'deg)'
   ifc.style.transform = 'rotate(90deg) translate('+(-1*translatevalue+'px')+','+(-1*translatevalue)+'px)';
}
else{
   ifc.style.width = screen.width+'px';
   ifc.style.height = screen.height+'px';
   document.body.style.transform = 'rotate('+screen.orientation.angle+'deg)';
   ifc.style.transform = ''
}
### ECharts 移动端横屏展示配置方法 对于希望在移动设备上实现ECharts图表横屏展示的需求,可以利用屏幕方向锁定以及响应式布局来达成目标。当涉及到具体的ECharts配置时,主要通过监听窗口大小变化事件并调整容器尺寸和图表参数以适应新的宽高比例[^1]。 为了确保图表能够正确地切换到横屏模式下显示,在初始化图表实例之前应当设置好相应的选项,并且考虑加入媒体查询逻辑以便更好地控制同屏幕分辨率下的样式表现: ```javascript // 假设已存在一个DOM节点用于容纳图表 var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); window.addEventListener("resize", function () { // 判断当前是否处于横向状态 var isLandscape = window.innerWidth > window.innerHeight; let option = { grid: { // 对于柱状图、折线图等直角坐标系类图形适用 containLabel: true, top: '10%', bottom: '10%', left: isLandscape ? '8%' : '5%', // 调整边距使数据标签被裁剪 right: isLandscape ? '8%' : '5%' }, xAxis: [{ type: 'category', axisLabel: { rotate: isLandscape ? 90 : 0, // 文字旋转 interval: 0 // 强制每项都显示 } }], yAxis: [{type: 'value'}], series: [ { name:'示例序列', type:'bar', // 或者其他类型的series data:[...] } ] }; if (isLandscape) { Object.assign(option, { toolbox: { // 可选工具栏位置微调 feature: {...}, orient: 'vertical', // 工具箱垂直排列更节省空间 right: '2%', top: 'center' } }); } myChart.setOption(option); }); myChart.resize(); // 初始化渲染完成后立即触发一次重绘操作 ``` 上述代码片段展示了如何基于页面判断当前是否为横屏状态,并据此动态修改部分可视化属性如`grid`区域间距、坐标轴刻文字的角等,从而优化用户体验。此外还提供了针对特定情况(比如横屏状态下)进一步定制化界面元素的可能性,像这里提到的例子中就包含了对工具条样式的额外处理。 值得注意的是,虽然这段脚本适用于大多数场景,但在实际应用过程中可能还需要根据具体业务需求和个人偏好做适当调整。例如,某些情况下或许并需要每次改变方向都重新计算整个option对象;又或者是想要支持更多种类的交互行为,则需引入额外的状态管理机制等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值