利用CSS3的border-radius绘制太极及爱心图案示例


Posted in HTML / CSS onMay 17, 2016

太极图
border-radius 除了做边框圆角效果之外,把它用在画图示上的话,其实能产生出很多不同的创意哩。笔者今天要继续使用它来教各位画-太极图。

检视原始码 HTML

XML/HTML Code复制内容到剪贴板
  1. <body>  
  2.  <div class="taichi">  
  3.   <div class="white-circle"></div>  
  4.   <div class="black-circle"></div>  
  5.  </div>  
  6. </body>  

因为太极图中有一黑一白的圆,所以多放了两个 div 在区块中。

接着请张大眼仔细看,笔者要先将大区块分成一白一黑:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .taichi {   
  2.  positionrelative;   
  3.  width48px/* 50 - 2 */  
  4.  height96px/* 100 - 2 - 2 */  
  5.  background#fff;   
  6.  border2px solid #000;   
  7.  border-width2px 50px 2px 2px;   
  8.  border-radius: 50%;   
  9. }  

一般的盒子模式(Box Model)是连同边框宽度都计算在区块的宽高中的,所以我们想要做一个宽高 100×100 的区块,但边框宽度如果是 2px 的话,那么里面的部份应该就是只有 96px。再来特别的是,笔者将右边的边框宽度直接设定成 50px,所以区块内部的宽度就只需要 48px 就可以了。

当这样设定好再加上 border-radius 圆角效果之后,就会变成~
利用CSS3的border-radius绘制太极及爱心图案示例

嘿嘿~已经有一黑一白的区块的,再来先补上一颗白圆:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .white-circle {   
  2.  positionabsolute;   
  3.  top: 0;   
  4.  left: 50%;   
  5.  background#fff;   
  6.  border-radius: 50%;   
  7.  width48px;   
  8.  height48px;   
  9. }  

这边就是直接产生一个完整的白色圆形并放在上半部的中间:
利用CSS3的border-radius绘制太极及爱心图案示例

那黑色圆形就是放在下半部?樱?/p>

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .black-circle {   
  2.  positionabsolute;   
  3.  top: 50%;   
  4.  left: 50%;   
  5.  background#000;   
  6.  border-radius: 50%;   
  7.  width48px;   
  8.  height48px;   
  9. }  

看起来就已经有 9 成像??
利用CSS3的border-radius绘制太极及爱心图案示例

最后还差两个相反颜色的小圆点在这两个圆形中,这两个小圆点我们只要使用 ::after 拟元素(Pseudo-elements) 就可以了:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .white-circle::after {   
  2.  content"";   
  3.  positionabsolute;   
  4.  top17px/* (50-16)/2 */  
  5.  left17px/* (50-16)/2 */  
  6.  background#000;   
  7.  border-radius: 50%;   
  8.  width16px;   
  9.  height16px;   
  10. }   
  11. .black-circle::after {   
  12.  content"";   
  13.  positionabsolute;   
  14.  top17px/* (50-16)/2 */  
  15.  left17px/* (50-16)/2 */  
  16.  background#fff;   
  17.  border-radius: 50%;   
  18.  width16px;   
  19.  height16px;   
  20. }  

将将~是不是很神奇呢!?
利用CSS3的border-radius绘制太极及爱心图案示例

爱心
上面教各位使用 border-radius 来画太极图,下面则是要教各位一样是使用圆角效果来爱心。

我们只需要一个 div 区块就可以了:

XML/HTML Code复制内容到剪贴板
  1. <body>  
  2.  <div class="heart"></div>  
  3. </body>  

然后指定区块的宽高:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart {   
  2.  positionrelative;   
  3.  width140px;   
  4.  height115px;   
  5. }  

一样是将爱心分成左右两区块,一样是先用 ::before 拟元素(Pseudo-elements)来产生左边的区块:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::before {   
  2.  content"";   
  3.  positionabsolute;   
  4.  left70px;   
  5.  top: 0;   
  6.  width70px;   
  7.  height115px;   
  8.  backgroundred;   
  9.  border-radius: 50px 50px 0 0;   
  10. }  

因为只有设定左上及右上的圆角效果,所以就变成圆头的柱子了:
利用CSS3的border-radius绘制太极及爱心图案示例

接着笔者要改变它的旋转中心点来把它往左旋转 45 度:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::before {   
  2.  content"";   
  3.  positionabsolute;   
  4.  left70px;   
  5.  top: 0;   
  6.  width70px;   
  7.  height115px;   
  8.  backgroundred;   
  9.  border-radius: 50px 50px 0 0;   
  10.  -webkit-transform: rotate(-45deg);   
  11.  -moz-transform: rotate(-45deg);   
  12.  -o-transform: rotate(-45deg);   
  13.  transform: rotate(-45deg);   
  14.  -webkit-transform-origin: left bottombottom;   
  15.  -moz-transform-origin: left bottombottom;   
  16.  -o-transform-origin: left bottombottom;   
  17.  transform-origin: left bottombottom;   
  18. }  

transform-origin 可以改变元素的中心点。它跟 background-position 一样是接受两个值,第一个是设定水平,第二个是设定垂直。预设是以 center center 为主,现在笔者将它改成在左下方:
利用CSS3的border-radius绘制太极及爱心图案示例

右边的部份也一样,但只是旋转中心点改在右下,并往右旋转:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::after {   
  2.  content"";   
  3.  positionabsolute;   
  4.  top: 0;   
  5.  left: 0;   
  6.  width70px;   
  7.  height115px;   
  8.  backgroundred;   
  9.  border-radius: 50px 50px 0 0;   
  10.  -webkit-transform: rotate(45deg);   
  11.  -moz-transform: rotate(45deg);   
  12.  -o-transform: rotate(45deg);   
  13.  transform: rotate(45deg);   
  14.  -webkit-transform-origin: rightright bottombottom;   
  15.  -moz-transform-origin: rightright bottombottom;   
  16.  -o-transform-origin: rightright bottombottom;   
  17.  transform-origin: rightright bottombottom;   
  18. }  

当两边都产生完后,一个红通通的爱心就出现?樱?br />利用CSS3的border-radius绘制太极及爱心图案示例

什么~中和的钟先生问说怎么不会动...没关系,补上个 animation 的动画效果给它:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart {   
  2.  -webkit-animation: jump 1s infinite ease-out;   
  3.  -moz-animation: jump 1s infinite ease-out;   
  4.  -o-animation: jump 1s infinite ease-out;   
  5.  animation: jump 1s infinite ease-out;   
  6. }   
  7. @-webkit-keyframes jump {   
  8.  0%, 60%, 75%, 90%, 100% {   
  9.   -webkit-transform: scale(1);   
  10.  }   
  11.  15% {   
  12.   -webkit-transform: scale(0.6);   
  13.  }   
  14.  30% {   
  15.   -webkit-transform: scale(1);   
  16.  }   
  17.  45% {   
  18.   -webkit-transform: scale(0.7);   
  19.  }   
  20. }   
  21. @-moz-keyframes jump {   
  22.  0%, 60%, 75%, 90%, 100% {   
  23.   -moz-transform: scale(1);   
  24.  }   
  25.  15% {   
  26.   -moz-transform: scale(0.6);   
  27.  }   
  28.  30% {   
  29.   -moz-transform: scale(1);   
  30.  }   
  31.  45% {   
  32.   -moz-transform: scale(0.7);   
  33.  }   
  34. }   
  35. @-o-keyframes jump {   
  36.  0%, 60%, 75%, 90%, 100% {   
  37.   -o-transform: scale(1);   
  38.  }   
  39.  15% {   
  40.    -o-transform: scale(0.6);   
  41.  }   
  42.  30% {   
  43.   -o-transform: scale(1);   
  44.  }   
  45.  45% {   
  46.   -o-transform: scale(0.7);   
  47.  }   
  48. }   
  49. @keyframes jump {   
  50.  0%, 60%, 75%, 90%, 100% {   
  51.   transform: scale(1);   
  52.  }   
  53.  15% {   
  54.   transform: scale(0.6);   
  55.  }   
  56.  30% {   
  57.   transform: scale(1);   
  58.  }   
  59.  45% {   
  60.   transform: scale(0.7);   
  61.  }   
  62. }  

透过 transform 的 scale(x, y) 来改变爱心的大小,让整个动画的看起来就象是噗通噗通的跳一样:
利用CSS3的border-radius绘制太极及爱心图案示例

HTML / CSS 相关文章推荐
CSS3近阶段篇之酷炫的3D旋转透视
Apr 28 HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 HTML / CSS
CSS3 旋转立方体问题详解
Jan 09 HTML / CSS
CSS实现进度条和订单进度条的示例
Nov 05 HTML / CSS
input元素的url类型和email类型简介
Jul 11 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
Oct 20 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
Nov 18 HTML / CSS
HTML5未来发展趋势
Feb 01 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
Mar 07 HTML / CSS
使用placeholder属性设置input文本框的提示信息
Feb 19 HTML / CSS
HTML5播放实现rtmp流直播
Jun 16 HTML / CSS
在CSS中使用when/else的方法
Jan 18 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 #HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 #HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 #HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
May 12 #HTML / CSS
CSS3制作气泡对话框的实例教程
May 10 #HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
May 10 #HTML / CSS
解决CSS3的opacity属性带来的层叠顺序问题
May 09 #HTML / CSS
You might like
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
如何基于python实现脚本加密
2019/12/28 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
C#笔试题
2015/07/14 面试题
机电专业体育教师求职信
2013/09/21 职场文书
临床医学大学生求职信
2013/09/28 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS