首页 > 其他分享 >ABOUT US

ABOUT US

时间:2023-07-06 09:56:32浏览次数:35  
标签:ABOUT 鼠标 photo px US rotationAngle currentY currentX

ABOUT US页面:

前端框架:

<header>

   <nav class="navbar">

       <div class="navbar-logo">

           <img src="img/ABUIABAEGAAgsd3Z6QUopvnbvwYwkAM4kAM.png" alt="真至味logo">

       </div>

       <ul class="navbar-menu">

           <li><a href="#" class="active">首页</a></li>

           <li class="dropdown">

               <a href="#">产品展示</a>

               <ul class="dropdown-menu">

                   <li><a href="#">爆爆珠系列</a></li>

                   <li><a href="#">果粒果酱</a></li>

                   <li><a href="#">果泥果酱</a></li>

                   <li><a href="#">浓缩果汁</a></li>

                   <li><a href="#">寒天晶球</a></li>

               </ul>

           </li>

           <li><a href="#">关于我们</a></li>

           <li><a href="#">招商合作</a></li>

           <li class="dropdown">

               <a href="#">新闻动态</a>

               <ul class="dropdown-menu">

                   <li><a href="#">新闻咨询</a></li>

                   <li><a href="#">产品动态</a></li>

               </ul>

           </li>

           <li><a href="#">联系我们</a></li>

       </ul>

   </nav>

</header>

<div id="tu" style="width: 1392px;height: 380px">

 <img src="https://20020898.s21i.faiusr.com/2/ABUIABACGAAgtaP-6QUo05jSzAUwgA84-AI.jpg.webp" alt="" class="img1">

   <div id="ziTi" style="width: 1392px;height:634px ">

       <h1>ZHEN ZHI WEI FOOD</h1>

       <h2>真至味食品</h2>

       <p>——</p>

       <p>

           真至味食品有限公司是专业生产奶茶原料、各种果汁果酱、果粉等产品的企业。我们以生产健康美味食品为使命,始终严格遵守国家食品安全标准,始终把食品安全和健康放在首位。

           公司成立于2016年,经过各经销商多年的努力,产品行销覆盖全国各地,是国内果汁、果酱、果粉、奶茶原料行业规模比较大、比较有竞争力的企业。 公司通过饮料类(果蔬汁、蛋白饮料饮料、爆爆珠果味酱)、果酱类、果粉类SC生产许可;每款产品均采用先进的全自动封闭式全套生产线生产,避免食品生产过程中被污染等,影响食品质量。公司有专业的食品研发部和食品检验部,具有先进的设备检验食品是否符合国家标准。我们以生产安全为保障,以食品安全为根本,以产品研发为动力,以客户至上为核心。欢迎各界朋友莅临参观、指导和业务洽谈。</p>

       <div id="photo-container">

           <img id="photo" src="img/ABUIABACGAAgpqif6gUoxIGz-QMwoAY4kwQ.jpg" alt="Your Photo">

       </div>

   </div>

   <div id="footer" style="width: 1390px;height: 56px">

       <div>©2019 - 真至味食品有限公司版权所有   备案号:浙ICP备16040770号-3</div>

       <button>手机版</button>

       <span>|</span>

       <button>管理登录</button>

       <span>|</span>

       <button>浙ICP备16040770号-3</button>

   </div>

</div>

Css样式:

.img1{

   width: 100%;

   height: 90%;

}

h1,h2,p{

   margin: 0;

   padding: 0;

   text-align: center;

}

h1{

   font-size:16px;

}

h2{

   color: #4caf50;

   font-size:25px;

}

#photo-container {

   width: 1390px;

   height: 400px;

   overflow: hidden;

   position: relative;

}

#photo {

   width: 100%;

   height: 100%;

   position: absolute;

}

@keyframes rotate {

   0% {

       transform: rotateY(0deg);

   }

   100% {

       transform: rotateY(360deg);

   }

}

#footer {

   

   padding: 20px;

   text-align: center;

}

js:

// 获取图片元素和容器元素

const photo = document.getElementById('photo');

const photoContainer = document.getElementById('photo-container');

 

// 初始角度和位置

let rotationAngle = 0;

let initialX = 0;

let initialY = 0;

let currentX = 0;

let currentY = 0;

 

// 监听鼠标按下事件

photo.addEventListener('mousedown', (e) => {

   e.preventDefault();

   initialX = e.clientX - currentX;

   initialY = e.clientY - currentY;

   document.addEventListener('mousemove', movePhoto);

   document.addEventListener('mouseup', stopMovingPhoto);

});

 

// 图片移动函数

function movePhoto(e) {

   currentX = e.clientX - initialX;

   currentY = e.clientY - initialY;

   photo.style.transform = `translate(${currentX}px, ${currentY}px) rotate(${rotationAngle}deg)`;

}

 

// 停止移动函数

function stopMovingPhoto() {

   document.removeEventListener('mousemove', movePhoto);

   document.removeEventListener('mouseup', stopMovingPhoto);

}

 

// 图片自动旋转函数(每隔一段时间调用)

function rotatePhoto() {

   rotationAngle += 1; // 调整旋转速度,适量调整此值

   photo.style.transform = `translate(${currentX}px, ${currentY}px) rotate(${rotationAngle}deg)`;

   requestAnimationFrame(rotatePhoto);

}

 

// 启动自动旋转

rotatePhoto();

此页面最为难弄的就是那个图片的全景式旋转,且可以使用鼠标上下拖动,而我仅实现了可以鼠标拖动图片的效果。

部分代码解析:

photo.addEventListener('mousedown', (e) => { e.preventDefault(); initialX = e.clientX - currentX; initialY = e.clientY - currentY; document.addEventListener('mousemove', movePhoto); document.addEventListener('mouseup', stopMovingPhoto); });

这段代码是使用JavaScript添加了一个鼠标按下事件的监听器,具体操作如下:

photo.addEventListener('mousedown', (e) => { ... }); 表示为名为 "photo" 的元素添加了一个鼠标按下事件的监听器。

e.preventDefault(); 是用来阻止事件的默认行为,这里的目的是防止鼠标按下时发生的默认拖拽行为。

initialX = e.clientX - currentX; 将 initialX 的值设置为鼠标按下时的横坐标 e.clientX 减去 currentX 的值。这里的 currentX 可能是一个变量,表示当前元素的横坐标位置。

initialY = e.clientY - currentY; 将 initialY 的值设置为鼠标按下时的纵坐标 e.clientY 减去 currentY 的值。这里的 currentY 可能是一个变量,表示当前元素的纵坐标位置。

document.addEventListener('mousemove', movePhoto); 表示为整个文档添加了一个鼠标移动事件的监听器,并调用了名为 movePhoto 的函数。这意味着当鼠标在文档上移动时,会触发 movePhoto 函数。

document.addEventListener('mouseup', stopMovingPhoto); 表示为整个文档添加了一个鼠标松开事件的监听器,并调用了名为 stopMovingPhoto 的函数。这意味着当鼠标在文档上松开时,会触发 stopMovingPhoto 函数。

这段代码的目的是实现鼠标按下时拖动元素的功能。通过计算鼠标按下时的初始坐标与当前元素的坐标之差,可以确定鼠标在移动过程中相对于元素的偏移量。然后通过鼠标移动事件和鼠标松开事件的监听器来更新元素的位置或停止移动。

function movePhoto(e) { currentX = e.clientX - initialX; currentY = e.clientY - initialY; photo.style.transform = `translate(${currentX}px, ${currentY}px) rotate(${rotationAngle}deg)`; }

这段代码定义了一个名为 movePhoto 的函数,用于处理鼠标移动事件。以下是代码的具体功能解释:

currentX 和 currentY 变量表示元素当前的横坐标和纵坐标位置。

e.clientX - initialX 表示当前鼠标位置的横坐标减去初始鼠标按下时的横坐标 initialX,得到鼠标在横向上的移动距离。

e.clientY - initialY 表示当前鼠标位置的纵坐标减去初始鼠标按下时的纵坐标 initialY,得到鼠标在纵向上的移动距离。

photo.style.transform 表示通过修改元素的 transform 样式来实现对元素位置和旋转的控制。

translate(${currentX}px, ${currentY}px) 表示使用 translate 函数来进行元素的平移,${currentX}px 和 ${currentY}px 分别表示元素在横向和纵向上的平移距离。

rotate(${rotationAngle}deg) 表示使用 rotate 函数来对元素进行旋转,${rotationAngle}deg 表示旋转角度,这里可能是一个变量。

通过将以上样式属性设置给 photo 元素的 transform 样式,可以实现在鼠标移动过程中,元素跟随鼠标的位置变化和旋转效果。

function rotatePhoto() { rotationAngle += 1; // 调整旋转速度,适量调整此值 photo.style.transform = `translate(${currentX}px, ${currentY}px) rotate(${rotationAngle}deg)`; requestAnimationFrame(rotatePhoto); }

这段代码定义了一个名为 rotatePhoto 的函数,用于实现图片旋转效果。以下是代码的功能解释:

rotationAngle 变量用于保存图片的旋转角度。每次调用 rotatePhoto 函数时,rotationAngle 的值都会增加1,这样可以实现图片的持续旋转效果。您可以调整增加的值来改变旋转速度。

photo.style.transform 通过修改元素的 transform 样式来实现对元素位置和旋转的控制,与之前的代码类似。

translate(${currentX}px, ${currentY}px) 表示使用 translate 函数来进行元素的平移,${currentX}px 和 ${currentY}px 分别表示元素在横向和纵向上的平移距离。这部分代码与之前的 movePhoto 函数相同。

rotate(${rotationAngle}deg) 表示使用 rotate 函数来对元素进行旋转,${rotationAngle}deg 表示旋转角度,这里使用 rotationAngle 变量保存的值来实现不断旋转的效果。

最后,requestAnimationFrame(rotatePhoto); 通过递归调用 rotatePhoto 函数,实现不断更新旋转角度和样式,从而达到持续旋转的效果。使用 requestAnimationFrame 方法可以让动画在浏览器的合理刷新频率下运行,避免性能问题。

需要注意的是,要在适当的时候停止调用 rotatePhoto 函数,否则旋转会一直持续下去。通常,可以在某个条件下,比如用户的操作或者到达某个预设的旋转次数后,停止调用此函数,以停止旋转效果。

 

标签:ABOUT,鼠标,photo,px,US,rotationAngle,currentY,currentX
From: https://www.cnblogs.com/959886jjc/p/17531260.html

相关文章

  • Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications lin
    2023-07-061、问题描述测试mybatis-plus代码功能的时候出现Causedby:com.mysql.cj.exceptions.CJCommunicationsException:Communicationslinkfailure问题2、问题解决通过查阅,发现,这个是数据库连接的问题。打开navicat连接数据库,发现连接不上。因此需要看数据库服务是否......
  • 使用部分写时复制提升Lakehouse的 ACID Upserts性能
    使用部分写时复制提升Lakehouse的ACIDUpserts性能译自:FastCopy-On-WritewithinApacheParquetforDataLakehouseACIDUpserts传统的写时复制会直接读取并处理(解压解码等)整个文件,然后更新相关数据页并保存为新的文件,但大部分场景下,upsert并不会更新所有数据页,这就导致......
  • PHP应用出现500 : The page cannot be displayed because an internal server error h
    问题描述PHP应用突然遇见了500 Thepagecannotbedisplayedbecauseaninternalservererrorhasoccurred.错误,但是如果访问一个静态HTML页面,就可以成功。只要是PHP页面,就是500。 问题解答登录AppService的Kudu站点,查看日志发现一句:  scriptProcessorcouldnotbefoun......
  • 【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed
    问题描述PHP应用突然遇见了500 Thepagecannotbedisplayedbecauseaninternalservererrorhasoccurred.错误,但是如果访问一个静态HTML页面,就可以成功。只要是PHP页面,就是500。 问题解答登录AppService的Kudu站点,查看日志发现一句:  scriptProcessorcouldnotb......
  • P3134 [USACO16JAN] Lights Out G 关灯
    P3134[USACO16JAN]LightsOutG关灯目录P3134[USACO16JAN]LightsOutG关灯[USACO16JAN]LightsOutG题面翻译题目描述输入格式输出格式说明/提示题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示题目大意分析实现加入查找统计答案数据读入code题目传送门洛谷......
  • Docker破解AWVS和Nessus
    原文发布在我的博客:Docker破解AWVS和NessusDocker破解AWVS和NessusAWVS和Nessus,不多介绍,漏洞扫描器,前者多用于扫Web漏洞,后者多用于扫系统漏洞。看到有人把自用的AWVS和Nessus都封装成Docker开源了,开箱即用也挺方便的就配置下。开源大佬牛逼!!!0x01安装Nessus感谢大佬开源,项目地......
  • pip3 Defaulting to user installation because normal site-packages is not writeab
    Defaultingtouserinstallationbecausenormalsite-packagesisnotwriteable原因:没有操作site-packages目录权限解决方法:命令前加上sudosudopip3installCommandNotFound......
  • Element-plus按需导入后,组件的正确使用和使用组件时TS报错找不到名称“xxxx”
    1.按需导入后使用组件Element-plus组件库的示例代码中,都import导入了组件,如:<template><el-buttontype="primary"@click="openFullScreen2">Asaservice</el-button></template><scriptlang="ts"setup>import{ElLoad......
  • Cannot create a component of type 'ahb_mst_burst_incr' because it is not regist
    运行VCS仿真报错:Cannotcreateacomponentoftype'ahb_mst_burst_incr'becauseitisnotregisteredwiththefactory但是我在testclass中已经注册了,为什么还报错呢? 报错就说明没有找到ahb_mst_burst_incr.sv文件所以到file.f中查看也添加了检查才发现拷......
  • Element-plus按需导入报错:Error: Cannot find module 'node:module'
    1.问题vue3项目使用ElementPlus组件库,配置按需导入:首先安装unplugin-vue-components和unplugin-auto-import这两款插件npminstall-Dunplugin-vue-componentsunplugin-auto-import然后按照文档在配置文件中进行相关配置;因为更改了配置文件,所以得重新启动项目--......