用CSS3写的模仿iPhone中的返回按钮


Posted in HTML / CSS onApril 04, 2015

好像写这个有点晚了,iOS已经从拟物化的年代进化到了扁平化的年代,那些圆角+渐变+阴影的年代已经过去,不过在此仍然要去说下古老的iOS返回按钮。

在过去的年代,大家都以iOS的设计元素为自己移动版页面的设计元素;当中自然少不了经典的返回按钮,看着似乎非常简单的一个返回按钮,但是就是没有啥办法能用代码写出来似的,那个讨厌的三角箭头只能让前端工程师无奈的使用一张图片来拼接(如淘宝、天猫、百度、美团都是图片处理方式);或者就根本不用那个按钮(如Yahoo、Google、Facebook根本就不用);当然我也相信已经有大牛有很好的处理方案,只是不像我这样出来得瑟罢了。

好了,不多说那些无用的,来说说我的解决方案:

先看看设计稿(呵呵,就拿我们公司的来说了)

用CSS3写的模仿iPhone中的返回按钮

1、确定HTML的结构,用一个标签加伪类其实是不行的,所以我用了两个嵌套的标签

<a href="#"> <span>首页</span></a>

2、首先想到的是右边一个标准Button,这个比较秒杀吧,所以不多说了,上图和代码

用CSS3写的模仿iPhone中的返回按钮

CSS Code复制内容到剪贴板
  1. .btn-back span {   
  2.     displayinline-block;   
  3.     font-size13px;   
  4.     line-height27px;   
  5.     height27px;   
  6.     padding: 0 10px;   
  7.     background: -webkit-linear-gradient(top#5bbfd8#449fb6);   
  8.     background: -moz-linear-gradient(top#5bbfd8#449fb6);   
  9.     border1px solid #2c96b2;   
  10.     border-radius: 5px;   
  11.     text-shadow: 0 -1px 0 rgba(0, 0, 0, .4);   
  12. }  
3、左边是一个三角型,但是那个通过border搞的三角不行,幸好CSS只是旋转和变形,搞一个正方形旋转差不多能实现了

这里需要用到下直角等腰三角型求边的公式(长边=短边*根号2),估计很多人不记得了吧:)
因为我们的正方形需要旋转45°,所以其实我们是需要求那条短边,左边那个正方型的宽高就是短变长;27/1.4142≈19.09,取整数19
其实画出正方形后还好做几步处理:

1) 将渐变倾斜-45°
2) 变形基点设置为0,0
3) 将正方形旋转45°
4) 将正方型X轴压缩

用CSS3写的模仿iPhone中的返回按钮

CSS Code复制内容到剪贴板
  1. /*这里用了一个伪类:before*/  
  2. .btn-back:before {   
  3.     margin50px;   
  4.     content'';   
  5.     displayinline-block;   
  6.     width18px;   
  7.     height18px;   
  8.     background: -webkit-linear-gradient(-45deg, #6eb7c9#449fb6);/*背景旋转-45°*/  
  9.     background: -moz-linear-gradient(-45deg, #6eb7c9#449fb6);   
  10.     border1px solid #2c96b2;   
  11.     -webkit-transform-origin: 0 0;/*设置基点为0,0*/  
  12.     -moz-transform-origin: 0 0;   
  13.     -webkit-transform: scaleX(0.8) rotate(45deg);/*X轴压缩,旋转45;后面的属性将被先这执行°*/  
  14.     -moz-transform: scaleX(0.8) rotate(45deg);   
  15. }  
4、感觉差不多了,合并;然后修饰下

这里修饰也有几步
1) 将左边的三角型进行绝对定位
2) 去掉按钮的左边框调整左边的两个圆角;并且设置为相对定位,z-index设置为2,这样可以盖住小三角的右半部分
3) 给左边的小三角加上圆角(因为圆角会减少高度,所以可能需要微调高度)

用CSS3写的模仿iPhone中的返回按钮

CSS Code复制内容到剪贴板
  1. .btn-back {   
  2.     font14px/27px Arial,Helvetica,sans-serif;   
  3.     color#fff;   
  4.     text-decorationnone;   
  5.   
  6.     positionrelative;   
  7.     displayblock;   
  8.     margin-top11px;   
  9. }   
  10. /*按钮主体*/  
  11. .btn-back span {   
  12.     displayinline-block;   
  13.     font-size13px;   
  14.     line-height27px;   
  15.     height27px;   
  16.     padding: 0 10px 0 5px;   
  17.     background: -moz-linear-gradient(top#5bbfd8#449fb6);   
  18.     background: -webkit-linear-gradient(top#5bbfd8#449fb6);   
  19.     border1px solid #2c96b2;   
  20.     border-left: 0;   
  21.     border-radius: 2px 5px 5px 2px;   
  22.     text-shadow: 0 -1px 0 rgba(0, 0, 0, .4);   
  23.   
  24.     margin-left12px;   
  25.     positionrelative;   
  26.     z-index: 2;   
  27. }   
  28. /*左边的小三角*/  
  29. .btn-back:before {   
  30.     content'';   
  31.     displayinline-block;   
  32.     width20px;   
  33.     height20px;   
  34.     background: -moz-linear-gradient(-45deg, #5bbfd8#449fb6);/*背景旋转-45°*/  
  35.     background: -webkit-linear-gradient(-45deg, #5bbfd8#449fb6);   
  36.     border1px solid #2c96b2;   
  37.     -webkit-transform-origin: 0 0;/*设置基点为0,0*/  
  38.     -moz-transform-origin: 0 0;   
  39.     -webkit-transform: scaleX(0.8) rotate(45deg);/*X轴压缩,旋转45°*/  
  40.     -moz-transform: scaleX(0.8) rotate(45deg);   
  41.     border-radius: 3px 2px;   
  42.   
  43.     positionabsolute;   
  44.     left13px;   
  45.     top: -1px;   
  46. }  
5、最后给出一个成品

这个只能说实现一个不完美的返回按钮,因为有些阴影效果比较难搞定。但是我觉得是一个不错的替代方案,总比几K的图片靠谱(体积变小,没有额外的请求)

演示地址:http://demo.3water.com/js/2015/ios_back_button.htm (提示用支持html5+css3的浏览器访问才可以看到效果)

HTML / CSS 相关文章推荐
Web页面中八种创建多列等高(等高列布局)的实现技术
Dec 24 HTML / CSS
css3+jq创作含苞待放的荷花
Feb 20 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
May 07 HTML / CSS
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
May 09 HTML / CSS
CSS3使用transition属性实现过渡效果
Apr 18 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
Apr 16 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
Jun 24 HTML / CSS
html5的canvas方法使用指南
Dec 15 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
Jul 29 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
Apr 16 HTML / CSS
CSS SandBox应用场景及常见问题
Jun 25 HTML / CSS
CSS3+js实现简单的时钟特效
Mar 18 #HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
Mar 17 #HTML / CSS
使用CSS禁止textarea调整大小功能的方法
Mar 13 #HTML / CSS
CSS3实现的炫酷菜单代码分享
Mar 12 #HTML / CSS
css3实现3d旋转动画特效
Mar 10 #HTML / CSS
纯css3实现图片翻牌特效
Mar 10 #HTML / CSS
CSS3制作苹果风格键盘特效
Feb 26 #HTML / CSS
You might like
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript中的私有成员
2006/09/18 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Keras搭建自编码器操作
2020/07/03 Python
python实现扫雷游戏的示例
2020/10/20 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
计算机专业应届毕业生自荐信
2013/09/26 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
简单租房协议书
2014/04/09 职场文书
房产协议书范本2014
2014/09/30 职场文书
张丽莉事迹观后感
2015/06/16 职场文书