首页 > 其他分享 >展示页效果制作

展示页效果制作

时间:2023-02-28 20:32:55浏览次数:35  
标签:function 效果 展示 disL len imgs var now 制作


嗯、先看一下效果图,大致就是点击图片,让点击的图片到达中间的位置

展示页效果制作_css

思路:

1、封装一个tab(n)函数,然图片排成上面的效果,n是几就代表第几张图片在中间的位置

2、封装两个函数,上一个和下一个

3、判断点击div时执行上一个还是下一个操作


     1)、记录鼠标点击时的位置 disX


     2)、封装一个函数计算中间的图片的右边到屏幕左侧的距离 disR


     3)、封装一个函数计算中间的图片的左边到屏幕左侧的距离 disL


     4)、disL>disX执行上一个函数,disR<disX时执行下一个函数

HTML代码:

<div id="wrap">
<img src="img/0.png"/>
<img src="img/1.png"/>
<img src="img/2.png"/>
<img src="img/3.png"/>
<img src="img/4.png"/>
<img src="img/5.png"/>
<img src="img/6.png"/>
</div>


css代码:

<style>
body{
margin: 0;
background-color: #999;
}
#wrap{
height: 500px;
background: url(img/bg.png) no-repeat center;
background-size: 1800px 500px;
position: relative;
transform-style: preserve-3d;
perspective: 800px;
margin-top: 100px;
}
img{
border: none;
vertical-align: top;
}
#wrap img{
width: 300px;
height: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-left: -150px;
margin-top: -100px;
transition: .7s ease-in-out;
}
</style>


js代码:

<script>
var imgs = document.getElementsByTagName("img");
var len = imgs.length;
var now = 0 ;
var target;
setTimeout(function(){
tab(now);
},100)
var disR = disR(imgs[now]);
var disL = disL(imgs[now]);
var timer = null;

for(let i=0; i<len;i++){
imgs[i].onclick = function(ev){
target = i;
var ev = ev||event;
var disX = ev.clientX;
if(disR<disX){
goNext();
}else if(disL>disX){
goPrev();
}
}
}
function disR(obj){//计算中间的图片右侧距离屏幕左侧的距离
var left = obj.offsetLeft;
var width = obj.offsetWidth;
var dis = left+width;
return dis;
}
function disL(obj){//计算中间的图片左侧距离屏幕左侧的距离
var left = obj.offsetLeft;
return left;
}

function goNext(){
clearInterval(timer);//执行下一个函数的时候,要先清除掉上一个函数的定时器
if(now == target){
return;
}
now++;
if(now>len-1){
now = 0;
}
tab(now);
timer = setInterval(function(){
goNext();
},500);
}

function goPrev(){
clearInterval(timer);//执行上一个函数的时候,要先清除上一个函数的定时器
if(now == target){
return;
}
now--;
if(now<0){
now = len - 1;
}
tab(now);
timer = setInterval(function(){
goPrev();
},500);
}


function tab(n){
for (var i = 0; i < Math.floor(len/2); i++) {
var Left = n - 1 - i;
if(Left<0){
Left = Left + len;
}
imgs[Left].style.transform = "translateX("+(-150*(i+1))+"px) translateZ("+(200-i*100)+"px) rotateY(30deg)";
var Right = n + 1 + i;
if(Right > len - 1){
Right = Right - len;
}
imgs[Right].style.transform = "translateX("+(150*(i+1))+"px) translateZ("+(200-i*100)+"px) rotateY(-30deg)";
}
imgs[n].style.transform = "translateZ(300px)";
}
</script>


标签:function,效果,展示,disL,len,imgs,var,now,制作
From: https://blog.51cto.com/u_15983333/6091781

相关文章

  • 折扇效果的实现
    思路:封装函数使每个div进行旋转点击最后一个div将所有div重置到初始位置使用延迟定时器调用函数(实现页面加载完成之后的展开动画)点击除了最后一个div以外的展开动画(根据点击......
  • 3D翻转效果的实现函数封装
    实现3D翻转的效果:使用TweenMax库的方法(使用之前要先引入jQuery和TweenMax哦)参数说明:obj:是要翻转的两个面的父级,element1是正面,element2是背面,d是翻转的时间vardonna={}......
  • 视频号添加展示信息
    添加菜单:     ......
  • 用C#制作含万年历的台历(2009年样张)之1
    先贴出图片,有空用C#程序实现1901-2049年的台历制作(用微软.netFramework2.0可实现到2100年)。图1 2009年7月台历正面样式图2 2009年8月台历正面样式图3 2009年9月台历......
  • 用C#制作含万年历的台历(2009年样张)之2
     上篇《用C#制作含万年历的台历(2009年样张)之1》给出了台历的各种实样图,从这篇开始我将用程序写出各个台历样式的实现。本篇说说大致的框架,好象建房子一样,先搭框架,框架答好......
  • WPF中制作立体效果的文字或LOGO图形
    较久之前,我曾写过一篇:“​​WPF绘制党徽(立体效果,Cool)​​ ”的博文。有感兴趣的朋友来EMAIL问是怎么制作的?本文解决此类问题。有时,为了美观的需要,我们可能需要在应用程......
  • WPF中制作立体效果的文字或LOGO图形(续)
    上篇“WPF中制作立体效果的文字或LOGO图形”中讲述了立体LOGO图形的制作方法。从程序开发人员的角度来讲,这样的做法是不能令人满意的。首先,费时费力效率不高;其次,完全没有通......
  • WPF公章制作之2
    早前,我曾写过一篇:“在WPF中制作正圆形公章”。有空再次研究,使用C#将此WPF程序写了出来。运行效果图:关键C#代码://OfficialSeal.csusingSystem;usingSystem.Windows;usin......
  • GDI+带农历的万年历(周历)之制作
    今天在网上无意中搜索到“Vista风格日历控件”。下载之后发现,略有BUG,于是进行改进。无意中,制作出来带农历的万年历(周历版)。运行如下图:​​​​​​主要的改进在://frmDemo.c......
  • C#中使用GDI+绘制辉光效果文字
    问题在这里:​@Tofer_ba:-------------------------//http://www..com版权所有,勿作商用-------------------------usingSystem;usingSystem.Drawing;usingSystem.Draw......