棋棋软件园
首页 > 网页制作 > CSS > 利用CSS3的border-radius绘制太极及爱心图案示例

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

来源:棋棋软件园 编辑:互联网 11-11

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

检视原始码 HTML

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

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

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

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .taichi{
  2. position:relative;
  3. width:48px;/*50-2*/
  4. height:96px;/*100-2-2*/
  5. background:#fff;
  6. border:2pxsolid#000;
  7. border-width:2px50px2px2px;
  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. position:absolute;
  3. top:0;
  4. left:50%;
  5. background:#fff;
  6. border-radius:50%;
  7. width:48px;
  8. height:48px;
  9. }

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

那黑色圆形就是放在下半部囉:

检视原始码 CSS

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

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

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

检视原始码 CSS

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

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

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

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

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

然后指定区块的宽高:

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart{
  2. position:relative;
  3. width:140px;
  4. height:115px;
  5. }

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

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::before{
  2. content:"";
  3. position:absolute;
  4. left:70px;
  5. top:0;
  6. width:70px;
  7. height:115px;
  8. background:red;
  9. border-radius:50px50px00;
  10. }

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

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

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::before{
  2. content:"";
  3. position:absolute;
  4. left:70px;
  5. top:0;
  6. width:70px;
  7. height:115px;
  8. background:red;
  9. border-radius:50px50px00;
  10. -webkit-transform:rotate(-45deg);
  11. -moz-transform:rotate(-45deg);
  12. -o-transform:rotate(-45deg);
  13. transform:rotate(-45deg);
  14. -webkit-transform-origin:leftbottombottom;
  15. -moz-transform-origin:leftbottombottom;
  16. -o-transform-origin:leftbottombottom;
  17. transform-origin:leftbottombottom;
  18. }

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

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

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart::after{
  2. content:"";
  3. position:absolute;
  4. top:0;
  5. left:0;
  6. width:70px;
  7. height:115px;
  8. background:red;
  9. border-radius:50px50px00;
  10. -webkit-transform:rotate(45deg);
  11. -moz-transform:rotate(45deg);
  12. -o-transform:rotate(45deg);
  13. transform:rotate(45deg);
  14. -webkit-transform-origin:rightrightbottombottom;
  15. -moz-transform-origin:rightrightbottombottom;
  16. -o-transform-origin:rightrightbottombottom;
  17. transform-origin:rightrightbottombottom;
  18. }

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

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

检视原始码 CSS

CSS Code复制内容到剪贴板
  1. .heart{
  2. -webkit-animation:jump1sinfiniteease-out;
  3. -moz-animation:jump1sinfiniteease-out;
  4. -o-animation:jump1sinfiniteease-out;
  5. animation:jump1sinfiniteease-out;
  6. }
  7. @-webkit-keyframesjump{
  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-keyframesjump{
  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-keyframesjump{
  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. @keyframesjump{
  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绘制太极及爱心图案示例

返回顶部