纯CSS制作三角形的方法

在前端设计中经常用到三角形图标,如列表、下拉提示、面包屑导航的位置,给用户以导向的引导作用。今天教大家几种纯CSS制作三角形的方法:

1、通过border 属性来实现

最简单也是最实用的方法,将元素的宽带和高度设为0,通过border属性来实现三角形。
优点:简单、可创建不同角度的三角形
缺点:IE6不支持transparent,可以通过chroma滤镜来解决、边会有锯齿
示例:

border via:  www.hujuntao.com

相关代码:

 
 
  1. .angle i{
  2. position:absolute;
  3. z-index:0;
  4. border-style:solid;width:0;height:0;line-height:0; font-size:0;
  5. }
  6. .angle i.left{
  7. border-width:20px 20px 20px 0;border-color:transparent #33589F transparent transparent;
  8. _border-color:tomato #33589F tomato tomato; /*For IE6-*/
  9. _filter:chroma(color=tomato);/*For IE6-*/
  10. left:-20px;
  11. top:15px;
  12. }
  13. .angle i.right{
  14. border-width:20px 0 20px 20px;border-color:transparent transparent transparent #33589F;
  15. _border-color:tomato tomato tomato #33589F; /*For IE6-*/
  16. _filter:chroma(color=tomato);/*For IE6-*/
  17. right:-20px;
  18. top:15px;
  19. }
  20. .angle i.top{
  21. border-width:0 20px 20px 20px;border-color:transparent transparent #33589F transparent;
  22. _border-color:tomato tomato #33589F tomato; /*For IE6-*/
  23. _filter:chroma(color=tomato);/*For IE6-*/
  24. left:100px;
  25. top:-20px;
  26. }
  27. .angle i.bottom{
  28. border-width:20px 20px 0 20px;border-color:#33589F transparent transparent transparent;
  29. _border-color:#33589F tomato tomato tomato ; /*For IE6-*/
  30. _filter:chroma(color=tomato);/*For IE6-*/
  31. left:100px;
  32. bottom:-20px;
  33. }
  34. <div class="angle">
  35. <i class="top"></i>
  36. <i class="right"></i>
  37. <i class="bottom"></i>
  38. <i class="left"></i>
  39. border via: <a href="http://www.hujuntao.com">www.hujuntao.com</a>
  40. </div>

2、transform来实现

通过旋转块状标签角度的方法获得,这种方法需要支持css3属性transform的浏览器支持.IE可以通过Matrix滤镜来实现。
缺点:不支持创建不同角度的三角形

示例:

transform via:  www.hujuntao.com

相关代码:

 
 
  1. .angle b{
  2. position:absolute;
  3. z-index:0;
  4. width:50px;
  5. height:50px;
  6. background:#33589F;
  7. -webkit-transform:rotate(45deg);
  8. -moz-transform:rotate(45deg);
  9. -ms-transform:rotate(45deg);
  10. -o-transform:rotate(45deg);
  11. transform:rotate(45deg);
  12. filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=-0.70710678, M21=0.70710678, M22=0.70710678, sizingMethod='auto expand');
  13. -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=-0.70710678, M21=0.70710678, M22=0.70710678,sizingMethod='auto expand')";
  14. }
  15. .angle b.left{
  16. top:15px;
  17. left:-10px;
  18. }
  19. .angle b.right{
  20. top:15px;
  21. right:-10px;
  22. }
  23. .angle b.top{
  24. top:-10px;
  25. left:100px;
  26. }
  27. .angle b.bottom{
  28. bottom:-10px;
  29. left:100px;
  30. }
  31. <div class="angle">
  32. <b class="top"></b>
  33. <b class="right"></b>
  34. <b class="bottom"></b>
  35. <b class="left"></b>
  36. transform via: <a href="http://www.hujuntao.com">www.hujuntao.com</a>
  37. </div>

3、字符来实现

通过◆字符实现.实现方法与上面的类似,将字符的颜色设置为和希望表现得容器相同的颜色,从而得到一个视觉上的三角形.只是这次我们没有用到CSS3的transform属性,兼容性更好一些。
缺点:不支持创建不同角度的三角形

示例:

◆◆◆◆◆ via:  www.hujuntao.com

相关代码:

 
 
  1. .angle em{
  2. font-style:normal;
  3. color:#33589F;
  4. font-size:50px;
  5. width:0;
  6. height:0;
  7. line-height:50px;
  8. text-align:center;
  9. position:absolute;
  10. vertical-align:middle;
  11. }
  12. .angle em.left{
  13. top:15px;
  14. left:-25px;
  15. }
  16. .angle em.right{
  17. top:15px;
  18. right:25px;
  19. _right:-25px;
  20. }
  21. .angle em.top{
  22. top:-25px;
  23. left:100px;
  24. }
  25. .angle em.bottom{
  26. bottom:25px;
  27. _bottom:-25px;
  28. left:100px;
  29. }
  30. <div class="angle">
  31. <em class="top">◆</em>
  32. <em class="right">◆</em>
  33. <em class="bottom">◆</em>
  34. <em class="left">◆</em>
  35. via: <a href="http://www.hujuntao.com">www.hujuntao.com</a>
  36. </div>

4、线性三角形的实现

我们可以通过border属性,将两个三角型的叠加就可以获得相应的效果:

示例:

border via:  www.hujuntao.com

相关代码:

 
 
  1. .border em{
  2. position:absolute;
  3. z-index:0;
  4. border-style:solid;width:0;height:0;line-height:0; font-size:0;
  5. }
  6. .border em.left{
  7. border-width:20px 20px 20px 0;border-color:transparent #33589F transparent transparent;
  8. _border-color:tomato #33589F tomato tomato; /*For IE6-*/
  9. _filter:chroma(color=tomato);/*For IE6-*/
  10. left:-20px;
  11. top:15px;
  12. }
  13. .border em.left em{
  14. border-width:20px 20px 20px 0;border-color:transparent #FFF transparent transparent;
  15. _border-color:tomato #FFF tomato tomato; /*For IE6-*/
  16. _filter:chroma(color=tomato);/*For IE6-*/
  17. left:3px;
  18. top:-20px;
  19. }
  20. .border em.right{
  21. border-width:20px 0 20px 20px;border-color:transparent transparent transparent #33589F;
  22. _border-color:tomato tomato tomato #33589F; /*For IE6-*/
  23. _filter:chroma(color=tomato);/*For IE6-*/
  24. right:-20px;
  25. top:15px;
  26. }
  27. .border em.right em{
  28. border-width:20px 0 20px 20px;border-color:transparent transparent transparent #FFF;
  29. _border-color:tomato tomato tomato #FFF; /*For IE6-*/
  30. _filter:chroma(color=tomato);/*For IE6-*/
  31. right:3px;
  32. top:-20px;
  33. }
  34. .border em.top{
  35. border-width:0 20px 20px 20px;border-color:transparent transparent #33589F transparent;
  36. _border-color:tomato tomato #33589F tomato; /*For IE6-*/
  37. _filter:chroma(color=tomato);/*For IE6-*/
  38. left:100px;
  39. top:-20px;
  40. }
  41. .border em.top em{
  42. border-width:0 20px 20px 20px;border-color:transparent transparent #FFF transparent;
  43. _border-color:tomato tomato #FFF tomato; /*For IE6-*/
  44. _filter:chroma(color=tomato);/*For IE6-*/
  45. left:-20px;
  46. top:3px;
  47. }
  48. .border em.bottom{
  49. border-width:20px 20px 0 20px;border-color:#33589F transparent transparent transparent;
  50. _border-color:#33589F tomato tomato tomato ; /*For IE6-*/
  51. _filter:chroma(color=tomato);/*For IE6-*/
  52. left:100px;
  53. bottom:-20px;
  54. }
  55. .border em.bottom em{
  56. border-width:20px 20px 0 20px;border-color:#FFF transparent transparent transparent;
  57. _border-color:#FFF tomato tomato tomato ; /*For IE6-*/
  58. _filter:chroma(color=tomato);/*For IE6-*/
  59. left:-20px;
  60. bottom:3px;
  61. }
  62. <div class="border">
  63. <em class="top"><em></em></em>
  64. <em class="right"><em></em></em>
  65. <em class="bottom"><em></em></em>
  66. <em class="left"><em></em></em>
  67. border via: <a href="http://www.hujuntao.com">www.hujuntao.com</a>
  68. </div>

转自:http://www.hujuntao.com/archives/css-make-a-triangle.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值