通过CSS3 transform实现图片浏览的几种效果

html-css08

通过CSS3 transform实现图片浏览的几种效果,第1张

通过css3和DOM操作,可以实现多种图片浏览的效果 但是大致思路都是一致的:

1)通过DOM操作循环创建出来一组元素

    document.createElement('标签名');

    父级.appendChild('obj')

2)给每一个创建出来的元素添加transform变换效果

    obj.style.transform=' rotateX(30deg)'

    obj.style.transition='1s all ease'

3)当变换结束的时候,瞬间拉回变换并换底图

    obj.addEventListener('transitionend',function(){},false}

    obj.style.transform=' rotateX(0deg)'

    obj.style.transition='none'

  当前要显示的一面:url("img/'+iNow%3+'.jpg");

  即将要显示的一面:url("img/'+(iNow+1)%3+'.jpg");

4)对用户一些影响当前变换的操作进行约束

分散效果重点:

每一个小块的transform:translate('+(aSpan[i].offsetLeft-oBox.offsetWidth/2)+'px,'+(aSpan[i].offsetTop -oBox.offsetHeight/2)+'px) rotateX('+rnd(-180,180)+'deg) rotateY('+rnd(-180,180)+'deg) scale(1.4)

每个小块的transform: aSpan[i].style.transform='perspective(800px) rotateY(-180deg)'

transition: aSpan[i].style.transition='500ms all ease '+(aSpan[i].c+aSpan[i].r)*200+'ms'

第四个参数代表等待运动的时间,故生成依次轮流翻转的效果

document.onmouseover=function(){

当前那个元素的transform:rotateZ(90deg)

}

依次出现的效果:

oBj.style.transform ='rotateY('+i*360/N+'deg) translateZ(300px)'

布局如下:

<div id="box">

    <div id="page">

        <div class="front"></div>

        <div class="back"></div>

    </div>

    <div id="page2"></div>

</div>

#page是当前的图片 ,#page2是将要变换的图片,其中#page的front背景图片和#box的背景图片拼成一张当前显示的图片,#page的back背景图片和#page2的背景图片拼成一张即将要换的图片

如果版式也乱了 说明是css文件路径错误。

如果版式正常,只是图片不显示,就是图片路径写错了。

在本地和服务器上文件路径有些不同,服务器上可以试着改为绝对路径试试。

1、检查看看样式表是否调用成功

2、检查一下背景图片的调用路径,比如 background:url(../images/bg.jpg) 0 0 no-repeat样式表里调用路径前面要加"../"或者"../../"

3、检查一下定义样式是否写对了.

原始处理方法是将要展示的图片进行处理。比如你的DIV宽度为500px(像素),那你上传的图片或放入网页的图片宽度就要小于500px,也就是你图片需要图片软件剪切、等比例缩小方法处理后再上传、放入网页中解决撑破撑开DIV问题。

常见很多大型图片站点、新闻站点都是将照片图片进行处理适应网页宽度情况下,进行图片编辑处理的。

二、防止图片撑开DIV方法二

如果不处理照片方法适应DIV有限宽度,那可以对DIV设置隐藏超出内容方法。只需要对DIV设置宽度后加入CSS样式“overflow:hidden”即可解决隐藏图片比DIV过宽部分解决撑破DIV问题。

三、解决方法三

对图片img标签中只加入宽度即可解决。这样可以等比例缩小图片,不会影响图片画面质量。

比如你的网页DIV宽度为500px,那你上传图片后对img标签设置width等于500以下即可。

即可解决图片过宽导致DIV SPAN撑破,这样好处可以等比例放大缩小图片。

四、CSS解决撑破方法四

这种方法使用CSS直接对div内的img进行宽度设置,这样不好是如果图片过小会影响网页浏览图片时候效果。