很多网站都有那种图片渐入的效果,如: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. MySQL Workbench 6.3CE 菜单汉化 xml

    找了很多 CSDN都要积分 直接自己搞了个 MySQL8.0亲测可以 https://pan.baidu.com/s/1Mwbye2tUj2u3RMdR_oW7rQ

  2. 剑指Offer_编程题之用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.

  3. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  4. 【Linux】管理文件系统

    文件系统概念: 文件系统是指文件的组织与管理结构,是一个有关于磁盘中各种有用信息的记录——即是保存以下信息的结构记录表 当前所使用磁盘的容量信息 磁盘的可用信息,包括已占用和剩余的空间: 文件与目录的 ...

  5. 3.Hadoop测试Yarn和MapReduce

    Hadoop测试Yarn和MapReduce 1.配置Yarn (1)配置ResourceManager 生产环境中,一般是重开一台机器作为ResourceManager,这里我们以Master机器代 ...

  6. python财经数据接口包Tushare pro的入门及简单使用方式(大数据,股票数据接口)

    最近在做一个项目,需要用到股票的数据,我在网上查了很久,最终发现在股票数据上面还是tushare比较专业,而且对于将来做金融行业的大数据这一块的,tushare绝对是你的一个好帮手,所以下面我就简单介 ...

  7. hive错误排查一:hive中执行 drop table命令卡住,删除表不成功

    起因 公司用的AWS EMR上的hive,突然不能删除表了. 经过 分析来看,估计是元数据那块出了问题.从元数据入手,元数据存在mysql的hive数据库中 直接使用hive配置文件hive-site ...

  8. SDR软件无线电知识要点(三)EVM

    SDR软件无线电知识要点(三)EVM 信号质量如何评估 Noise Figure (NF) or sensitivity and Error Vector Magnitude (EVM) provid ...

  9. 机器人操作系统ROS-工作空间的建立

    运行例子为重德智能的github中的robot_sim_demo 创建一个robot_ws工作空间 1. mkdir -p robot_ws/src   #创建catkin 工作空间 2. cd ro ...

  10. go VS NET 字符串操作能力

    今天拿golang 与 NET4.0 做了在字符串方面的性能比较,看看谁牛! 一.读取txt文本文件 GO的代码: readbuf, _ := ioutil.ReadFile(userFile) st ...