用CSS和第三方库来提升图片浏览体验
你是否关注过浏览、点击图片这个微妙的过程,不同的图片展现、交互方式各带来什么样的观感?本文聚焦于图片浏览这个过程以及如何使用CSS3和第三方库来提升体验。
先看下Pinterest、Flickr等时下热门图片分享类网站。
|
1 |
采用瀑布流式,设计者本意大概是用户对于图片这类非文本信息本身就是非线性浏览的,交错排列的图片集合使焦点最大化分散在页面各个部分。 |
用户实施了pin这一动作后,图片信息以board形式集合,每个board里的图片呈现规矩的网格布局,这种布局适合于有限集合的排列。
让我们停下想想,为了“分散”的注意力而采用了瀑布流式,那么究竟每张图片用多大尺寸合适,能够降低用户面对满屏图片时的不适感?不同尺寸图片如何排放?在移动端又需要采用什么布局?怎么解决多张图片加载的性能问题?这些问题留待思考。
Pinterest每张图的宽度是固定的,高度也可获取,这样在渲染页面的时候就可以先确定位置而不是等加载到图片资源。
Flickr
个人感觉体验有差距。页面采用网格布局,评论等文字都采取隐藏措施,页面整体整洁大方。但是,单张图片浏览的体验完全不在这个水平上。点击图片后页面跳转到对应图片的页面(此处设置浮层进行显示不是更优?),页面放置了左右导航来浏览相片集里前后的图,导航没有集合更多的效果例如预览,最让我感觉不适的是返回相册的入口较为隐蔽,找不到这个入口的情况下只能一步步点击浏览器的返回键,如果打开了一个相片集的多张图片,回到相册的步骤相应增加到两步以上。
Facebook用时间轴来组织信息,相比Pinterest、Flickr这些内容型网站,fb更具sns属性。双栏加瀑布流布局,采用瀑布流可以避免双栏布局下不同高度内容单元带来的空白区域。
个人相册用网格布局紧凑整洁清晰,点击图片后浮层展示大图和赞、评论、圈图等功能,点击浮层关闭按钮返回相册,感觉布局略显小但也符合“够用就好”主义。
css3极大丰富了用户体验,本文下半篇聚焦于使用css3及部分优秀的第三方库来帮助提升图片浏览的体验,让图片浏览这个过程更美一点~
一、图片展示
1、层叠
通过设置transform :translate3d 样式可实现层叠的立体效果
|
function setTransformStyle( el, tval ) { el.style.WebkitTransform = tval; el.style.msTransform = tval; el.style.transform = tval; } |
如下图:分别设transform 样式的值为translate3d(0,0,0),translate3d(0,0,-60px),translate3d(0,0,-120px)
在点击单张图片改变三个向量的值来调整当前显示在最前端的图片
2、铺放
铺放可以通过transform: rotate实现,同时加上transition样式增强动画效果。
展开:
为不同图片设相应z-index、ransform: rotate
|
{ z-index: 10; -webkit-transform-origin: 25% 100%; -webkit-transform: translate(0px) rotate(30deg); -webkit-transition: -webkit-transform 500ms ease-out 0ms; transition: -webkit-transform 500ms ease-out 0ms; } |
Transition的几个值分别对应:属性改变时执行的效果;动画的持续时间;动画类型;延迟动画的时间。
合并:
|
{ '-webkit-transition' : 'none', '-moz-transition' : 'none', '-ms-transition' : 'none', '-o-transition' : 'none', 'transition' : 'none' } |
借助一些优秀的插件能够帮助我们更快的实现效果,例如baraja(http://tympanus.net/Development/Baraja/js/jquery.baraja.js)
|
$( '#baraja-el' ).baraja(); $( '#some-button' ).on( 'click', function( event ) { baraja.fan( { speed : 500, easing : 'ease-out', range : 90, direction : 'right', origin : { x : 25, y : 100 }, center : true, translation : 0 } ); } ); |
二、图片交互
1、翻页
BookBlock这个库可以参考
2、折叠
OriDomi(http://oridomi.com/)实现了各种折叠的效果,你的图片操作起来就像张纸,让用户从潜意识出发来行为,将现实生活的习惯无缝延伸到web中的做法值得推崇。
具体来看看OriDomi如何使用,有哪些效果。我用了一张svg格式地图来作为操作对象,基于svg本身的可操作性后续可以加入更多的点期待下~
初始化一个OriDomi对象(参数可选可配置):
添加动画效果:
curl() //卷曲:正数向偏离银幕方向卷曲,值越大弯曲度越大,负数反之
accordion() //类似手风琴展开的效果
stairs() //层叠效果
foldUp() //收起
更多的效果可以参见OriDomi官网
3、拖拽
拖拽行为可通过监听dragStart,dragMove,dragEnd事件,并把position等参数传给处理事件的函数完成。
在此介绍Draggabilly这个库,实现的图片拖动效果非常顺畅。
Draggabilly初始化:
|
//elem : 控制的元素 var draggie = new Draggabilly( elem, { // options... }); |
事件:dragStart、dragMove、dragEnd
使用:
|
draggie.on( 'dragMove', function(){ //处理的函数 } ); |
用CSS和第三方库来提升图片浏览体验的更多相关文章
- Android Studio [ImageView/使用第三方库加载图片]
ImageViewActivity.class package com.xdw.a122; import android.support.v7.app.AppCompatActivity; impor ...
- iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43 阅读:630 评论:0 收藏:0 ...
- webpack4对第三方库css,项目全局css和vue内联css文件提取到单独的文件(二十二)
在讲解提取css之前,我们先看下项目的架构如下结构: ### 目录结构如下: demo1 # 工程名 | |--- dist # 打包后生成的目录文件 | |--- node_modules # 所有 ...
- iOS:实现图片的无限轮播---之使用第三方库SDCycleScrollView
SDCycleScrollView API // // SDCycleScrollView.h // SDCycleScrollView #import <UIKit/UIKit.h> ...
- Python库,让你相见恨晚的第三方库
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具.pyenv – 简单的 Python 版本管理工具.Vex – 可以在虚拟环境中执行命令.virt ...
- Python3.x:第三方库简介
Python3.x:第三方库简介 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...
- Python常用的标准库以及第三方库有哪些?
20个必不可少的Python库也是基本的第三方库 读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz ...
- 20个必不可少的Python库也是基本的第三方库
个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它. Scrapy. ...
- Python常用的标准库以及第三方库
Python常用的标准库以及第三方库有哪些? 20个必不可少的Python库也是基本的第三方库 读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们 ...
随机推荐
- 项目源码--Android应用商店源码
下载源码 技术要点: 1.互联网应用 客户端框架 2.综合应用开发所 有技术 3.安装应用的管理 4. HTTP网络通信技 术 5.下载安装.评论 框架 6.使用.版本升级 等统计方案 7.源 ...
- javascript类,对象,实例
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型一.由一对大括号括起来var emptyObj = {}; var myObj = { ...
- 小白日记6:kali渗透测试之被动信息收集(五)-Recon-ng
Recon-ng Recon-NG是由python编写的一个开源的Web侦查(信息收集)框架.Recon-ng框架是一个全特性的工具,使用它可以自动的收集信息和网络侦查.其命令格式与Metasploi ...
- Android进阶笔记09:Android开发经验部分总结
1. 在Android library中不能使用switch-case语句访问资源ID:在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案 2. 不能 ...
- Hummer框架平台介绍
三年工作过程中经常会用到使用Java开源框架,但经常会遇到重新组合比较麻烦,本次采用目前主流开源框架及插件整理出一套融合开发.测试.部署整个流程的平台. 本平台采用Hummer代号,是悍马和蜂鸟分意思 ...
- 显示创建一个表的SQL语句
显示创建数据库中包的语句,从而可以方便的对表的结构进行修改和复制(当然还有其他的方式) 显示表结构: 显示创建表语句: show create table tablename;
- 关于XShell的常见使用和设置以及Linux中的常见命令.
本文部分转自:http://sundful.iteye.com/blog/704079 和 http://www.vckai.com/p/5 有时候在XShell中操作的一些命令傻傻的分不清这个命令到 ...
- hdu 4679 树状dp
思路:我们其实只需要枚举每条边,求得最小值就行了. 先dfs算出每个节点作为根时,其子树的最长路径,以及进过该节点的最长,次长,第三长路径. 然后在次dfs枚举求出切断某条边,求出这条边的两个端点为子 ...
- Font Awesome图标字体库(2015年05月25日)
Font Awesome是一款非常棒的字体图标工具,给个地址,具体的自已慢慢去体会,只能帮你到这儿了...... http://fortawesome.github.io/Font-Awesome/ ...
- Tomcat发生异常
The Apache Tomcat Native library which allows optimal performance in production environments was not ...