很多网站都有那种图片渐入的效果,如:http://www.mi.com/minote/,这种效果用css3和一些js实现起来特别简单。

拿我之前做的页面来说一下怎么利用css3来实现图片渐入效果。

下面是页面中的一段html:

<div class="features">
<div class="container">
<div class="inner feature">
<div class="content">
<h2 class="title"><img src="./imgs/title1.png" alt=""/></h2>
<p class="text">256位SSL加密安全连接,手机短信验证、谷歌两步验证、资金密码、邮箱验证四重验证保障安全,钱包分布式离线冷存储</p>
</div>
<img class="icon" src="./imgs/feature-icon1.png" alt=""/>
</div>
</div>
<div class="container middle">
<div class="inner feature">
<div class="content">
<h2 class="title"><img src="./imgs/title1.png" alt=""/></h2>
<p class="text">256位SSL加密安全连接,手机短信验证、谷歌两步验证、资金密码、邮箱验证四重验证保障安全,钱包分布式离线冷存储</p>
</div>
<img class="icon" src="./imgs/feature-icon2.png" alt=""/>
</div>
</div>
<div class="container">
<div class="inner feature">
<div class="content">
<h2 class="title"><img src="./imgs/title1.png" alt=""/></h2>
<p class="text">256位SSL加密安全连接,手机短信验证、谷歌两步验证、资金密码、邮箱验证四重验证保障安全,钱包分布式离线冷存储</p>
</div>
<img class="icon" src="./imgs/feature-icon3.png" alt=""/>
</div>
</div>
</div>

首先,需要先定位图片,把图片定位在渐入后最终停留的位置:

.feature .icon {
position: absolute;
top: 100px;
}

接着,利用css3的transform属性和translate()方法实现图片的偏移,还有就是将图片透明度设为0(即完全透明):

.feature .icon {
position: absolute;
top: 100px;
transform: translate3d(0, 0, 150px);
-ms-transform: translate3d(0, 150px, 0);
-webkit-transform: translate3d(0, 150px, 0);
-o-transform: translate3d(0, 150px, 0);
-moz-transform: translate3d(0, 150px, 0);
opacity: 0;
}

这边需要加上各浏览器的前缀来兼容一些低版本浏览器。这些属性和方法的具体用法这边就细讲了。

然后,要用到的是css3的transition属性:

.feature .icon {
position: absolute;
top: 100px;
transform: translate3d(0, 0, 150px);
-ms-transform: translate3d(0, 150px, 0);
-webkit-transform: translate3d(0, 150px, 0);
-o-transform: translate3d(0, 150px, 0);
-moz-transform: translate3d(0, 150px, 0);
opacity: 0;
transition: transform 1s ease 0s, opacity 1s ease 0s;
-moz-transition: -moz-transform 1s ease 0s, opacity 1s ease 0s;
-webkit-transition: -webkit-transform 1s ease 0s, opacity 1s ease 0s;
-o-transition: -o-transform 1s ease 0s, opacity 1s ease 0s;
-ms-transition: -ms-transform 1s ease 0s, opacity 1s ease 0s;
}

transition属性是一个过渡属性,当元素从一种样式变换为另一种样式时为元素添加效果。

到这还没有效果。我们要达到的效果是:当网页往下滚动,图片出现或将要出现在视窗时,我们来触发这个过渡效果,就像大家看到的下面这张图片一样。这个做法就像图片的惰性加载,图片还没出现在视窗中时,先不加载,出现时再去加载图片,这样的效果就是用户访问页面的速度提升了。

(function (win) {
$(function(){
$(win).scroll(function() {
var windowPageYOffset = window.pageYOffset,
windowPageYOffsetAddHeight = windowPageYOffset + window.innerHeight;

            	var imgOffsetTop = $(".transImg").offset().top;
if (imgOffsetTop >= windowPageYOffset && imgOffsetTop < windowPageYOffsetAddHeight) {
$(".transImg").css({
"transform": "translate3d(0, 0, 0)",
"-ms-transform": "translate3d(0, 0, 0)",
"-o-transform": "translate3d(0, 0, 0)",
"-webkit-transform": "translate3d(0, 0, 0)",
"-moz-transform": "translate3d(0, 0, 0)",
"opacity": 1
});
}
})
})
}(window))
</script>

当页面往下滚动时,用js判断图片在什么时候触发动画:

(function (win) {
$(function(){
$(win).scroll(function() {
// 浏览器窗口的高度
var windowPageYOffset = win.pageYOffset;
// 浏览器窗口的高度 + 页面滚动的距离
var windowPageYOffsetAddHeight = windowPageYOffset + window.innerHeight;
// 该值越小,越早触发效果,自己随便设置
var sensitivity = 0; var imgOffsetTop = $(".transImg").offset().top;
if (imgOffsetTop >= windowPageYOffset && imgOffsetTop < windowPageYOffsetAddHeight + sensitivity) {
// 达到一定位置,触发效果,透明度变为1
$(".transImg").css({
"transform": "translate3d(0, 0, 0)",
"-ms-transform": "translate3d(0, 0, 0)",
"-o-transform": "translate3d(0, 0, 0)",
"-webkit-transform": "translate3d(0, 0, 0)",
"-moz-transform": "translate3d(0, 0, 0)",
"opacity": 1
});
}
})
})
}(window))

到这里就完了。

完整代码可以查看:https://github.com/lwzhang/practice/tree/gh-pages/biteduo

DEMO:https://lwzhang.github.io/practice/biteduo/index.html

CSS3实现图片渐入效果的更多相关文章

  1. CSS3之图片3D翻转效果(网页效果--每日一更)

    今天,带来的是纯CSS3的效果--图片3D翻转. 请看效果:亲,请点击这里 这个效果主要还是运用了CSS3的transform变形属性,与上个效果不同的是,这次并不是动画,所以没有采用animatio ...

  2. js、css3实现图片的放大效果

    今天看网易的网站上,当我把鼠标放上去的时候发现图片放大,移开图片缩小,于是自行尝试,结果如下. 方法一:使用js和css3 效果如图: 这样的实现非常简单,就是利用js的mouseover和 mous ...

  3. css3轮播渐显效果 2016/11/29

    css3因为其兼容性的问题,被我忽略很久,这次正好做到一个轮播渐显的效果,想了想,正好复习下css3的相关内容,废话不多说,直接上代码. <ul class="cb-slideshow ...

  4. 以“图片渐入渐出”为例讲述jQuery插件的具体实现

    首先声明,此代码以网友“斯迈欧”原创作为此例的讲解: 在这之前我们先看看我们要做的效果是什么样的: 解析下面的样式:我们要图片在过“一定时间”后自动切换,在右下角处有小方块似数字1,2,3,4,这些数 ...

  5. CSS3特效----图片动态提示效果

    需掌握的知识点: 1.掌握两个HTML5新标签figure以及figcaption的用法 2.掌握transform的属性特点,并能熟练运用 3.学会通过transition及transform配合, ...

  6. CSS3 banner图片的标签效果

    放body看,你懂的:)

  7. css内容渐入效果实现

    .fade-in-section { opacity: 0; transform: translateY(20vh); visibility: hidden; transition: opacity ...

  8. 在FL Studio中如何做出渐入的人声效果

    当我们在拿到一段人声并想把它加入歌曲中时,如果我们发现人声没有渐入的效果,直接加入到歌曲里出现会变得很突兀的话,我们就需要用到这篇文章所介绍的方法,给人声加上一个渐入的效果. 1. 找到我们需要处理的 ...

  9. css3鼠标悬停图片渐显飞入效果

    body程序: <div id="bei"> <div id="img"><img src="xianzi.png&qu ...

随机推荐

  1. iOS10 语音播报填坑详解(解决串行播报中断问题)

    iOS10 语音播报填坑详解(解决串行播报中断问题) 在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报.语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝.微信 ...

  2. [iOS]被忽略的main函数

    如同任何基于C的应用程序,程序启动的主入口点为iOS应用程序的main函数.在iOS应用程序,main函数的作用是很少的.它的主要工作是控制UIKit framework.因此,你在Xcode中创建任 ...

  3. python3爬虫-通过requests获取拉钩职位信息

    import requests, json, time, tablib def send_ajax_request(data: dict): try: ajax_response = session. ...

  4. svn造成桌面图标显示问号

    (1)在使用svn客户端的时候桌面的所有图标上面都加了一个“?”.而且在桌面上新建的文件夹或文件都会打个问号,下面是笔者搜集的方法:在桌面创建记事本文件,把这句话复制进去for /r . %%a in ...

  5. 『ACM C++』 PTA 天梯赛练习集L1 | 025-026

    满课一天,做25的时候还疯狂WA,进度可以说是很慢了 哭泣 ------------------------------------------------L1-025---------------- ...

  6. mac安装配置mysql

    目录 mac安装配置mysql 1.mysql的安装 2.设置root用户的密码 3.分别执行一下命令 4.配置mysql环境变量 mac安装配置mysql 1.mysql的安装 ​ 安装过程十分简单 ...

  7. linux不重启挂载磁盘安装grub

    挂载.分区.grub 通过给一块新磁盘安装grub回顾磁盘挂载.分区文件系统创建等操作: 该实验基于(CtonOS6.8:kernel:2.6.32-642.15.1.el6.x86_64) 1.通过 ...

  8. python 时间time模块介绍和应用

    1.其中format_string 类型的时间和struct_time之间可以转换,timestamp时间戳可以和struct_time之间进行转化,但是时间戳和格式化时间是不能直接转换的. time ...

  9. Office 365部分安装及同时安装Visio的方法

    From MWeb Win版本的Office 365安装包默认安装所有组件,没有选择的页面,在安装Office 365后再安装下载的Visio 2016专业版时,会显示计算机上已经安装了即插即用Off ...

  10. 最短寻道优先算法(SSTF)——磁盘调度管理

    原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...