html异形轮播,异形滚动

aabac5e37a98?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

异形滚动效果图.gif

1、原理的揭示

前言:图片大小处理问题的解决,当我们只改变盒子大小,图片会溢出,无法充满这个盒子。设置图片的宽高为 100%

异形滚动

.box {

width: 100px;

height: 100px;

}

img { //让图片充满整个盒子

width: 100%;

height: 100%;

}

从最低层的背景图开始解析。五个显示的图,两个隐藏的图。一个七个基本图样。

aabac5e37a98?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

背景图

思路:

放置背景图片(li 绝对定位,再用图片填充)

点击时改变动画的 JSON

异形滚动

*{

margin: 0;

padding: 0;

}

.yixing{

width: 670px;

height: 221px;

background: url(images/pic_bg.gif);

margin: 100px auto;

border: 1px solid #000;

position: relative;

}

.yixing ul{

list-style: none;

}

.yixing ul li{

position: absolute;

}

/*img这个元素不会根据父亲来设置宽度、高度,所以我们就要写:*/

.yixing ul li img{

width: 100%;

height: 100%;

}

.yixing ul li.stateA{width: 55px;height: 37px;left:-55px;top: 84px;}

.yixing ul li.stateB{width: 71px;height: 54px;left:16px;top: 67px;}

.yixing ul li.stateC{width: 122px;height: 86px;left:104px;top: 35px;}

.yixing ul li.stateD{width: 161px;height: 112px;left:247px;top: 16px;}

.yixing ul li.stateE{width: 122px;height: 86px;left:436px;top: 35px;}

.yixing ul li.stateF{width: 71px;height: 54px;left:583px;top: 67px;}

.yixing ul li.stateG{width: 55px;height: 37px;left:678px;top: 84px;}

.rightBtn{

position: absolute;

top: 151px;

right: 20px;

width: 40px;

height: 40px;

background-color: red;

}

var lis = document.getElementsByTagName("li");

var rightBtn = document.getElementById("rightBtn");

var JSONC = {"width": 122,"height": 86,"left":104,"top": 35};

var JSOND = {"width": 161,"height": 112,"left":247,"top": 16};

//理论上我们可以不厌其烦写JSONA、JSONB

rightBtn.onclick = function(){

//理论上我们可以不厌其烦写

animate(lis[3],JSONC,1000,"BounceEaseOut");

animate(lis[4],JSOND,1000,"BounceEaseOut");

}

2、JSON的优化

获取 targetJSON 使用数组接受 JSON放进数组。

var JSONarr = [];

//把所有的状态都推入数组:

for(var i = 0 ; i < lis.length ; i++){

JSONarr.push({

"width" : parseInt(fetchComputedStyle(lis[i],"width")),

"height" : parseInt(fetchComputedStyle(lis[i],"height")),

"left" : parseInt(fetchComputedStyle(lis[i],"left")),

"top" : parseInt(fetchComputedStyle(lis[i],"top"))

});

}

console.log(JSONarr);

右按钮的监听使用 for 进行优化,防止手写。

//右按钮的监听

rightBtn.onclick = function(){

//让1、2、3、4、5、6元素都分别变为数组中的0、1、2、3、4、5的状态

for(var i = 1 ; i <= 6 ; i++){

animate(lis[i],JSONarr[i - 1],600,"BounceEaseOut");

}

}

3、增加二次点击效果

这里是个难点今天,学了半天就是想不明白为什么不二次轮播,下午去吃了个饭,再仔细想想终于明白是怎么回事了。

以右击按钮为例,当我们点击的时候,图片依据 动画 左移。这里只是借助了动画改变了 li 的位置,li 盒子的编号依然没变,所以当我们再次点击盒子只是变到本身现在所处位置。我错就错在盒子转移到另一个盒子,认为他的盒子编号也随之发生改变。

想明白这点,我们就可以在动画完成后,改变盒子编号。这样下次的点击效果就会生效。又因为我们得到的 li 是一个类数组对象不能通过pop等进行操作。先把它放进一个数组里。

var liArray = []; //存放每个li的数组 新增1

var JSONarr = [];

//把所有的状态都推入数组:

for(var i = 0 ; i < lis.length ; i++){

JSONarr.push({

"width" : parseInt(fetchComputedStyle(lis[i],"width")),

"height" : parseInt(fetchComputedStyle(lis[i],"height")),

"left" : parseInt(fetchComputedStyle(lis[i],"left")),

"top" : parseInt(fetchComputedStyle(lis[i],"top")),

"opacity" : parseInt(fetchComputedStyle(lis[i],"opacity"))

});

//liArray就和lis是一样的结构,lis是类数组对象,而liArray是数组 新增2

liArray.push(lis[i]);

}

//右按钮的监听

rightBtn.onclick = function(){

//让1、2、3、4、5、6元素都分别变为数组中的0、1、2、3、4、5的状态

for(var i = 1 ; i <= 6 ; i++){

animate(liArray[i],JSONarr[i - 1],600,"BounceEaseOut");

}

//让0号元素瞬移

for(var k in JSONarr[6]){

liArray[0].style[k] = JSONarr[6][k] + "px";

}

//交换身份!!新增3

liArray.push(liArray.shift());

}

4、设置节流,自动轮播,和opacity

设置 opacity 主要是兼容左右轮播时的淡入淡出。

函数节流,因为所有的 li 盒子都是动的,所以节流我们只需要随便设置一个盒子。

异形滚动

*{

margin: 0;

padding: 0;

}

.yixing{

width: 670px;

height: 221px;

background: url(images/pic_bg.gif);

margin: 100px auto;

border: 1px solid #000;

position: relative;

overflow: hidden;

}

.yixing ul{

list-style: none;

}

.yixing ul li{

position: absolute;

opacity: 1;

filter:alpha(opacity=100);

}

/*img这个元素不会根据父亲来设置宽度、高度,所以我们就要写:*/

.yixing ul li img{

width: 100%;

height: 100%;

}

.yixing ul li.stateA{width: 55px;height: 37px;left:-55px;top: 84px; opacity: 0; filter:alpha(opacity=0);}

.yixing ul li.stateB{width: 71px;height: 54px;left:16px;top: 67px;}

.yixing ul li.stateC{width: 122px;height: 86px;left:104px;top: 35px;}

.yixing ul li.stateD{width: 161px;height: 112px;left:247px;top: 16px;}

.yixing ul li.stateE{width: 122px;height: 86px;left:436px;top: 35px;}

.yixing ul li.stateF{width: 71px;height: 54px;left:583px;top: 67px;}

.yixing ul li.stateG{width: 55px;height: 37px;left:678px;top: 84px; opacity: 0;filter:alpha(opacity=0);}

.rightBtn{

position: absolute;

top: 151px;

right: 20px;

width: 40px;

height: 40px;

background-color: red;

}

.leftBtn{

position: absolute;

top: 151px;

left: 20px;

width: 40px;

height: 40px;

background-color: red;

}

var yixing = document.getElementById("yixing");

var rightBtn = document.getElementById("rightBtn");

var leftBtn = document.getElementById("leftBtn");

var lis = document.getElementsByTagName("li");

//lis是类数组对象,getElementsByTagName得到的元素们是类数组对象,不是数组

//所以lis没有pop方法、没有unshift()方法!

var liArray = []; //存放每个li的数组

var JSONarr = [];

//把所有的状态都推入数组:

for(var i = 0 ; i < lis.length ; i++){

JSONarr.push({

"width" : parseInt(fetchComputedStyle(lis[i],"width")),

"height" : parseInt(fetchComputedStyle(lis[i],"height")),

"left" : parseInt(fetchComputedStyle(lis[i],"left")),

"top" : parseInt(fetchComputedStyle(lis[i],"top")),

"opacity" : parseInt(fetchComputedStyle(lis[i],"opacity"))

});

//liArray就和lis是一样的结构,lis是类数组对象,而liArray是数组

liArray.push(lis[i]);

}

//console.log(JSONarr);

//右按钮的监听

rightBtn.onclick = rightBtnHandler;

var timer = setInterval(rightBtnHandler,2000);

yixing.onmouseover = function(){clearInterval(timer);};

yixing.onmouseout = function(){timer = setInterval(rightBtnHandler,2000);};

function rightBtnHandler(){

//节流

if(liArray[1].isanimated) return;

//让1、2、3、4、5、6元素都分别变为数组中的0、1、2、3、4、5的状态

for(var i = 1 ; i <= 6 ; i++){

animate(liArray[i],JSONarr[i - 1],600,"BounceEaseOut");

}

//让0号元素瞬移

for(var k in JSONarr[6]){

liArray[0].style[k] = JSONarr[6][k] + "px";

}

//交换身份!!

liArray.push(liArray.shift());

}

//左按钮的监听

leftBtn.onclick = function(){

//节流

if(liArray[1].isanimated) return;

for(var i = 0 ; i <= 5 ; i++){

animate(liArray[i],JSONarr[i + 1],600,"BounceEaseOut");

}

//让0号元素瞬移

for(var k in JSONarr[0]){

liArray[6].style[k] = JSONarr[0][k] + "px";

}

//交换身份!!

liArray.unshift(liArray.pop());

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【周末阅读】工业互联网的发展历程及实现路径

来源&#xff1a;青岛智能产业技术研究院【导读】目前&#xff0c;我国工业互联网发展迅猛&#xff0c;从国家层面、部委层面、地方层面都在积极推动&#xff0c;国际上对工业互联网发展也比较关注。我主要介绍工业互联网的三个方面内容&#xff1a;工业互联网的基本认识、国内…

三菱fx5u编程手册_FX5U系列PLC控制伺服3种方式

FX5U系列PLC为三菱目前最新的小型PLC&#xff0c;机身小巧却功能强大&#xff0c;不仅保留了三菱小型PLC已有的优点&#xff0c;还吸收了大型PLC的开发理念&#xff0c;在整体性能上得到了很大的提高。本文以FX5U在控制伺服的性能上做个总结&#xff0c;归纳下FX5U控制伺服的3种…

[转人工智能工程师学习路线及具备的5项基本技能

原文地址&#xff1a;http://blog.csdn.net/BaiHuaXiu123/article/details/52478853 摘要 学习路线 你是否对机器学习充满兴趣呢?其实到目前为止&#xff0c;每天有越来越多的工程师开始将好奇的目光转向机器学习领域。实际上&#xff0c;你会发现现在没有哪一个领域比机器学习…

python牛顿迭代公式_python计算牛顿迭代多项式实例分析

本文实例讲述了python计算牛顿迭代多项式的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;p evalPoly(a,xData,x). Evaluates Newtons polynomial p at x. The coefficient vector a can be computed by the function coeffts. a coeffts(xData,yData). Computes…

“机器人迟钝一点,会更有人情味”,迪士尼提出新型人机交互系统

来源&#xff1a;机器人大讲堂导读打篮球时&#xff0c;当球向你飞来&#xff0c;你总会下意识地或者说有意识地伸手去接住球。生活中&#xff0c;有人递给你一个东西时&#xff0c;你也会伸手去接住&#xff0c;礼貌或者仓促地。那么在如今拟人机器人越发“聪明”的时代&#…

华为十大发明

来源&#xff1a;蓝海长青智库时代的车轮滚滚向前&#xff0c;推动时代前进的离不开那些改变人们生活的发明。就像爱迪生发明电灯&#xff0c;每一个时代都有一些创新的技术足以载入史册。这些技术或许在发明初期还不足以让人感受到它的价值&#xff0c;但是随着时代的进步&…

基于类的命令行notebook的实现

在看一本书《PYTHON3 面向对象编程》 内容丰富&#xff0c;作作记录。 notebook.py __author__ chengang882import datetime# Store the next available id for all new note last_id 0class Note(object):"""Represent a note in the notebook. Match agains…

2020年五大云计算预测

来源&#xff1a;信息安全与通信保密杂志社Forrester的新报告发现&#xff0c;超大规模云联盟、云原生创新和新的云安全要求将在2020年重塑云计算行业格局。Forrester近日发布了一份报告&#xff0c;对2020年的云计算行业发布了五大预测。这些预测表明争夺云计算霸主地位的竞争…

薛建儒:无人车的场景理解与自主运动

来源&#xff1a;人工智能前沿讲习一报告导读本文为西安交通大学人工智能与机器人研究所薛建儒教授&#xff0c;做的题为无人车场景计算与自主运动的研究进展的报告&#xff0c;主要从无人车概述、场景理解、自主运动、总结与展望四个方面介绍了其团队在无人驾驶领域的探索。在…

(转)HTTP 长连接和短连接

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议&#xff0c;在传输层使用TCP协议&#xff0c;在网络层使用IP协议。IP协议主要解决网络路由和寻址问题&#xff0c;TCP协议主要解决如何在IP层之上可靠的传递数据包&#xff…

中美科技成果转化比较分析

来源&#xff1a;创新研究近年来随着国家在不断加大科技投入&#xff0c;以及专利成果数量的快速增长&#xff0c;全社会对科技创新关注程度不断提高&#xff0c;对我国科技成果转化率低的批评不断增加&#xff0c;有文章指出“我国科技成果的转化率仅有10%&#xff0c;比美国8…

商用计算机低温工作,突破量子计算机瓶颈!超低温芯片能在接近绝对零度的温度下工作...

如何克服量子计算机运转时产生的超高热量仍是量子计算机研究当中的一大难题。日前&#xff0c;科学家开发出一种新型的低温计算机芯片&#xff0c;能够在接近绝对零度的理论温度极限下工作。这种名为 Gooseberry 的低温系统为量子计算领域的革命奠定了基础——使新一代机器能够…

python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具&#xff0c;他的前身是Selenium 。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。但是目前使用Selenium2做测试的基本是采用ja…

虚拟机安装CentOS6.4

1 概述 虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统&#xff0c;运行在主机上&#xff0c;完全独立&#xff0c;虚拟机里面的所有操作不会影响主机&#xff0c;即使虚拟机崩溃了&#x…

中国人工智能产业白皮书

来源&#xff1a;北京物联网智能技术应用协会未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1…

python基础笔记_python基础学习笔记

一、Python四种类型的数据格式 整数----2、3、 长整数&#xff1a;指的是比较大一点的整数 浮点数----3.23、52.3EE:标记表示10的幂。 复数----&#xff08;-54J)、&#xff08;2.3-4.6J&#xff09; 二、Python字符串 a 单引号&#xff1a;单引号输出字符串&#xff0c;字符串…

Nature好文:过去150年,科学与产业经历四段情缘!

来源&#xff1a;Nature 574, 481-485 (2019) doi: 10.1038/d41586-019-03172-5Nature&#xff08;《自然》&#xff09;创刊 150 周年之际&#xff0c;历史学家保罗卢西尔&#xff08;Paul Lucier&#xff09;特别撰写系列文章&#xff0c;回顾了这 150 年来科学体系的塑造。本…

python爬取网页有乱码怎么解决_Python爬取网页requests乱码

**之前有在裁判文书上爬取数据&#xff0c;这段时间重新运行爬虫后发现无法获取网页数据&#xff0c; 找了一下发现requests网页源码返回的是乱码** &#xff08;如下截取一部分返回的数据&#xff1a;不知道是不是网站对网页内容进行了加密&#xff0c;请问如何解决这个问题&a…

北京联合大学计算机学院在哪个校区,北京联合大学各校区联系地址大全

出国留学网考研院校频道为大家提供北京联合大学各校区联系地址大全&#xff0c;希望能帮助到大家。北京联合大学下设14所学院&#xff1a;北京联合大学应用文理学院 地址&#xff1a;海淀区北土城西路197号 邮编&#xff1a;100191北京联合大学师范学院 地址&#xff1a;朝阳区…

Gartner 2019年超融合魔力象限:新增深信服,国内华为、华云在榜

来源&#xff1a;云头条近日&#xff0c;国际权威研究分析机构Gartner公布了2019全球《超融合基础设施魔力象限》。报告显示国内仅有三家云计算厂商进入2019超融合基础设施魔力象限&#xff0c;分别是深信服、华为、华云数据。深信服超融合&#xff08;sangfor aCloud&#xff…