css3 transform + deviceorientation实现图片旋转效果

2023-11-13

1. 陀螺仪deviceorientation的使用,参考《关于陀螺仪deviceorientation》https://segmentfault.com/a/1190000007183883 。

2. transform各属性的具体使用,参考《深入理解CSS变形transform(3d)》https://www.cnblogs.com/xiaohuochai/p/5351477.html 。

3. 代码实现在规定Safari横屏的前提下,图片相对观察点旋转的效果。

var x = 0,y = 0,rotateRes = ""; //横屏时X轴与gamma对应,Y轴与beta对应,
var oriB = 0, oriG = window.orientation>0 ? -45 : 45; //横屏时orientation=90/-90,根据方向设定原始original gamma
var lastB = 0 , lastG = oriG; //上一次记录的beta[-180,180)/gamma[-90,90)
var curB = 0, curG = oriG;//当前的current beta/gamma

if (window.DeviceOrientationEvent) {  //判断当前设备是否支持事件 
  window.addEventListener("deviceorientation", orientationHandler, false);  
  function orientationHandler(event) {    
    curG = Math.round(event.gamma);   
    curB = Math.round(event.beta); 
    if(Math.abs(curB-oriB)<60) {  //只在允许的范围内进行旋转
      if(Math.abs(curG-oriG)<60 && Math.abs(curG-lastG) < 100 ) { //与初始平面不超过60度,且不过分界点才旋转
        x += curG-lastG;  //若希望图片反向旋转,可改为 x -= ...
        lastG = curG;  
      }
    }
    if(Math.abs(curB-oriB)<60 && Math.abs(curB-lastB) < 200 ) { 
      y += curB-lastB; 
      lastB = curB;  
  }

    rotateRes = "perspective(1200px) rotateX(" + x +"deg) rotateY("+ y +"deg)"; //perspective为视距,即人眼到屏幕的距离   
    $("#rotate-image").css({transform:rotateRes,'-webkit-transform':rotateRes});
  }  
}
else {
  console.log("对不起,您的设备还不支持Device Orientation!!!");
}

 

转载于:https://www.cnblogs.com/xquancnblogs/p/8628845.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css3 transform + deviceorientation实现图片旋转效果 的相关文章

  • 在计算机中安装深度操作系统

    深度操作系统是一个国产的Linux发行版 界面美观 系统友好 中文支持完善 易上手 对于Linux新手来说 是一个不错的操作系统 这里将我安装深度操作系统的过程复述一下 在这里 我用的是UEFI GPT的方式来安装的 安装准备 一张容量足够
  • js弹出弹窗,并从弹窗中取值,返回父页面

    弹出弹框 url pageContext request contextPath facegl eyecool eyecool jsp pqdwbmid pqdwbmid rytype rytype open win window open
  • 数字IC设计笔试面试经典题(1-10)

    1 基础知识 1 1 锁存器的结构 锁存器即Latch 数电中称之为电平触发的D触发器 也是D型锁存器 有电平触发器SR触发器改进得到 其工作特点是电平是有效电平 高电平或者低电平 期间 才接受信号并输出 否则保持不变 1 2 DFF的结构
  • ctf(一):攻防世界

    网址 https adworld xctf org cn 1 post传参 2 get传参直接在后面加 id 1 3 robots txt 文件 直接在网址后面加 robots txt 就会显示后台文件 4 index php 后缀是 ph
  • C++类中this指针的理解

    https www cnblogs com liushui sky p 5802981 html 很好的文
  • 中国国家气象局天气预报信息接口

    想在自己的android应用中获得当天的天气情况 这该怎么做呢 不用担心 中国国家气象局提供了获取所在城市天气预报信息接口 通过这个接口 我们就可以获取天气信息了 中国国家气象局天气预报接口总共提供了三个 http www weather
  • 【人工智能业务概述】—人工智能的技术框架

    人工智能业务概述 人工智能的技术框架 人工智能的技术框架按照产业生态通常可以划分为基础层 技术层 应用层三大板块 其中 基础层提供了支撑人工智能应用的基础设施和技术 包括存储和处理大规模数据的能力 以及高性能的计算和通信基础设施 技术层提供
  • 怎么查看华为服务器型号,云服务器型号查看

    云服务器型号查看 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 根据后端云服务器组的ID查询后端云服务器组详情 GET
  • FFmpeg编译与集成

    Java是 write once run anywhre 但 C 不一样 各平台均有差异 无法只写一次 而且各个平台的编译都不一样 比如android的ndk工具链 不同平台的库都是不一样的 本文主要讲解下 ffmpeg 在 win 平台下
  • 【Java基础篇】一文搞懂Java方法的调用与重载(超详细)

    个人主页 兜里有颗棉花糖 欢迎 点赞 收藏 留言 加关注 本文由 兜里有颗棉花糖 原创 收录于专栏 JavaSE primary 目录 一 方法的概念以及使用 1 1什么是方法 1 2方法定义 1 3方法调用的执行过程 1 4形参和实参的关
  • Python —— PyQT5 安装及配置

    PyQT5 安装及配置 下载离线安装包 测试 Pycharm配置qt designer扩展 配置 QTdesigner 配置PyUIC 配置PyRCC 测试扩展的可用性 如果报错 下载离线安装包 PyQT5 5 15 whl 文件大概60M
  • C# 9.0 新特性预览 - 类型推导的 new

    前言 随着 NET 5 发布日期的日益临近 其对应的 C 新版本已确定为 C 9 0 其中新增加的特性 或语法糖 也已基本锁定 本系列文章将向大家展示它们 目录 C 9 0 新特性预览 类型推导的 new C 9 0 新特性预览 空参数校验
  • python输出中文字符

    coding utf 8 import as import matplotlib pyplot as plt 解决中文显示问题 plt rcParams font sans serif SimHei plt rcParams axes un
  • C语言---离散数学实验--集合及二元关系的应用

    目录 集合的运算 题目要求 代码 等价关系的判定 题目要求 代码 N元关系 题目描述 代码 集合的运算 题目要求 一 集合的运算 1 用数组A B C E表示集合 输入数组A B E 全集 输入数据时要求检查数据是否重复 集合中的数据要求不
  • 网络安全和黑客技能:15本必读书籍推荐

    前言 网络安全和黑客技能紧密相连 想要有效地防范黑客攻击 了解黑客的技能和思维方式非常重要 而要想成为一名合格的白帽黑客 也需要深入理解网络安全的基本原理和最佳实践 本文将介绍15本网络安全和黑客书籍 既包括了防范黑客攻击的指南书籍 也包括
  • ubuntu配置VLAN的方法

    目录 前言 一 VLAN是什么 二 Ubuntu如何配置VLAN IP 1 依赖安装 2 创建VLAN 总结 前言 在做someip相关开发的时候需要使用到VLAN 这里介绍如何在ubuntu上创建VLAN 一 VLAN是什么 VLAN V
  • RFID技术的优势

    什么是RFID技术 RFID射频识别是一种非接触式的自动识别技术 它通过射频信号自动识别目标对象并获取相关数据 识别工作无须人工干预 可工作于各种恶劣环境 EFID技术可识别高速运动物体并可同时识别多个标签 操作快捷方便 短距离射频产品不怕
  • 性能测试总结

    性能调优是什么 我们为什么要进行性能调优 主要是由以下几个点来考虑 1 编写的新应用上线前在性能上无法满足需求 这个时候需要对系统进行性能调优 2 应用系统在线上运行后随着系统数据量的不断增长 访问量的不断上升 系统的响应速度通常越来越慢
  • object-fit和object-position实现图片原比例裁剪不拉伸适应

    img标签的图片设置width 100 height 211px 默认图片拉伸或压缩以适应此宽高 原有 但是这样太丑了 所以我们需要把图片裁剪一下 让它不拉伸以原有比例填充屏幕 首先使用到object fit这个属性 objtct fit
  • 【统计模拟及其R实现】逆变换 / 筛选法 / 合成法 上机习题答案(超详细)

    课本 统计模拟及其R实现 肖枝红 朱强 武汉大学出版社 参考课件 第三章 随机数 浙江大学数学科学学院 目录 1 逆变换法 2 筛选法 3 合成法 1 逆变换法 题目1 用逆变换方法生成如下密度函数的随机变量 要求写出R程序 Cauchy概

随机推荐

  • 基于python的端口扫描(升级版)

    今天给大家带来一个用python写的端口扫描小程序 需要借助一个python的库 Scapy是一个强大的Python库 用于构建和发送网络数据包 以及对网络进行各种类型的分析和操作 pip install scapy 通过Scapy 您可以
  • modbus详尽中文资料、软件、代码

    modbus详尽中文资料 软件 代码
  • linux bootarg 数组,Linux启动bootargs参数分析

    Linux启动bootargs参数分析 Written by leeming 这几天刚好在看linux c语言启动 现在就顺便把内核在启动时解析bootargs这一块单独拎出来讲解下 内核对于bootargs的解析分为几块 1 setup
  • linux下使用C语言操作MYSQL数据库(API使用libmysqlclient-dev)

    文章目录 运行环境 一 准备工作 1 在Ubuntu上准备mysql开发环境 2 创建测试数据库与表 二 建立与mysql的连接 1 在C文件中引入头文件 2 初始化mysql与数据库的通道 3 与mysql建立真实连接 三 添加操作 CR
  • java - 锁粒度

    最近工作有个需求 需要加锁保证操作的原子性 但在一定程度上我想着可以根据业务类型对锁进行细化 于是简单的写了一个demo进行验证 先来看看synchronized的demo import java util concurrent Concu
  • 光敏传感器实验报告_光敏传感器光电特性研究实验报告.docx

    光敏传感器光电特性研究实验报告 光敏电阻光敏特性的研究 一 实验设计方案 实验目的 1 了解光敏电阻的基本特性 测出它的光照特性曲线 2 学习使用电脑实测 3 学习使用DataStudio软件 4 学习了解设计性实验的基本方法 实验原理 光
  • tkinter美化窗口

    今天 小编给大家带来一个很常见的问题 如何美化tkinter窗口 相信用过IDLE的小伙伴都深有感受 IDLE同样使用Tcl Tk写的 别人写的是这样 我们写的却是这样 大家对比一下 tkinter写英文还算可以 但是一写中文 他的问题就凸
  • 速通AOSP,成功编译调试Android源码

    今日科技快讯 近日据不少网友反馈 爱奇艺App开始对投屏功能作出限制 之前黄金VIP会员支持最高4K清晰度投屏 现在只能选最低的480P清晰度 要想进行4K投屏必须购买白金VIP会员 不少网友表示 480P清晰度太低 几乎无法观看 作者简介
  • 初代AIGC明星独角兽,停摆在大模型元年

    唏嘘 AIGC方兴未艾 但国内AIGC领域的昔日龙头独角兽 正站在风雨飘摇的悬崖边 影谱科技 初代目AIGC明星公司 被爆已经面临经营不善 运营停摆的窘境 这家成立于2009年的AI影像公司 一直专注大文娱产业 曾在D轮融资时以13 6亿人
  • 计算机网络(六)-传输介质

    一 传输介质 1 1 传输介质也称传输媒体 传输媒介 它就是数据传输系统中在发送设备和接收设备之间的物理通路 1 2 传输媒体并不是物理层 传输媒体在物理层的下面 因为物理层是体系结构的第一层 因此有时称传输媒体为第0层 1 3 传输媒体中
  • Unity3d目录Resources与StreamingAssets文件夹的区别

    1 Resources文件夹 Resources文件夹是一个只读的文件夹 通过Resources Load 来读取对象 因为这个文件夹下的所有资源都可以运行时来加载 所以Resources文件夹下的所有东西都会被无条件的打到发布包中 建议这
  • 炸裂了!3分钟用GPT4做一个PPT!

    GPT4有多强了 相信体验过的同学都知道 一个字爽 无论是速度 还是数据集还是功能都比3 5要强大很多 现在越来越多的人开始用GPT4了 可以大幅的提高我们的工作和学习的效率 今天小编就用GPT4快速做一个PPT 分享给大家 分分钟搞定 1
  • cobra 开启自动补全功能

    cobra 开启自动补全功能 因工作原因 需要将一个由 cobra 写的命令行工具 支持在 bash 和 zsh 环境开启命令行自动补全功能 网上搜了一圈 大部分都是把 cobra github 的介绍翻译一下就完了 而且没有对命令行补全的
  • 关于JAVA毕业设计三个选题推荐

    毕业设计是大学生学习生涯的最后一课 对未来职业发展有重要影响 因此 选题是一个需要慎重考虑的问题 本文将为大家推荐三个相关的JAVA毕业设计选题 希望能够给大家提供一定的参考和帮助 基于SSH框架的学生管理系统 学生管理系统是一个常见而且非
  • JsonView插件的使用

    由于谷歌浏览器经常打不开应用商店 还有就是安装第三方插件的办法 方法就如下 由于最近做和json相关的东西 所以 以jsonView插件为例分享一下 1 打开https github com 2 搜索 jsonView 链接 https g
  • class组件使用静态变量 并且通过react编译

    ok 这种情况直接使用 babelrc 然后 npm start 会出现下面err 我试着通过 babelrc 配置 presets babel preset env babel preset react plugins babel plu
  • Mysql学习笔记九--子查询

    1 mysql表子查询 子查询是指嵌入在其他sql语句中的select语句 也叫嵌套查询 单行子查询 指只返回一行数据的子查询语句 多行子查询 指返回多行数据的子查询 使用关键字 in 如何查询和部门10的工作相同的但是不包含10号部门自己
  • 多输入多输出

    多输入多输出 MATLAB实现BP神经网络多输入多输出预测 目录 多输入多输出 MATLAB实现BP神经网络多输入多输出预测 预测效果 基本介绍 程序设计 参考资料 预测效果
  • 服务的边界

    服务边界是服务拆分和集成的前提 1 识别业务领域及边界 当前主要方法论 领域驱动设计 领域可简单理解为特定的业务系统 其中主要的设计维度为策略维度和技术维度 待完善 2 界限上下文 就是根据界限 边界 确定上下文 具体的业务场景 3 服务边
  • css3 transform + deviceorientation实现图片旋转效果

    1 陀螺仪deviceorientation的使用 参考 关于陀螺仪deviceorientation https segmentfault com a 1190000007183883 2 transform各属性的具体使用 参考 深入理