CSS3绘制六边形的简单如何实现

风景优美的黄山景区,一年四季游人如织。蜀僧抱绿绮,西下峨眉峰。为我一挥手,如听万壑松。客心洗流水,馀响入霜钟。不觉碧山暮,秋云暗几重。

因为很简单,所以先总结一下:使用CSS3绘制六边形主要使用伪类:before和:after在源元素之前和之后再绘制两个元素,并利用css3的边框样式,将这两个元素变成三角形放置在源元素的两端即可。

(因为之前在生物公司工作过,觉得六边形更贴近生物分子、基因等概念,包括我们在网上搜索关于生物分子、基因等图片,好多也有六边形的样式,所以那时候在页面做一些功能性的导航或Tag,都会觉得六边形更贴近一些)。

完整的页面效果如下图:(其实是多个六边形定位成这样子的。当然,也可以设置不同六边形的颜色,这样就可以更好的区分不同的模块功能了)。

我们可以单独提出一个六边形分析一下,如下图:

知道了分析思路,我们可以先了解一下如何绘制三角形,网上的列子也很多,不过没有使用过的童鞋不用找了,下面也给出代码和示例,如下:

效果图:

CSS代码:

CSS Code复制内容到剪贴板
  1. .arrow{
  2. display:inline-block;
  3. width:0px;
  4. height:0px;
  5. border-style:solid;
  6. border-width:100px;//与padding、margin属性类似,顺序为上、右、下、左
  7. border-color:redblueorangegray;  //顺序为上、右、下、左}

HTML代码:

XML/HTML Code复制内容到剪贴板
  1. <divclass="arrow"></div>

如上图所说,利用border边框属性,填充我们不想要的颜色为透明色,即可得到某一部分三角形,代码和图片效果如下。

效果图:(左边的三角形是我们需要的,其它的设置为了透明色)

CSS代码:

CSS Code复制内容到剪贴板
  1. .arrow{
  2. display:inline-block;
  3. width:0px;
  4. height:0px;
  5. border-bottom:100pxsolidtransparent;  //设置透明色
  6. border-top:100pxsolidtransparent;   //设置透明色
  7. border-right:100pxsolidtransparent;  //设置透明色
  8. border-left:100pxsolidgray;
  9. }

HTML代码:

XML/HTML Code复制内容到剪贴板
  1. <divclass="arrow"></div>

Okay。知道了如何画三角形,在利用CSS伪类:before和:after就可以完成我们想要绘制的六边形了。

:before是在元素的前面插入内容

:after是在元素的后面插入内容

如果我们想要插入一些文字性的内容可以在它的 content属性中录入需要展示的文字,例如 content:"HELLO WORLD",不过我们的例子是不需要展示额外信息的。我们只是需要将before和after这两个伪元素变成三角形放置到固定位置即可。

给出完整的代码如下:

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPEhtml>
  2. <html>
  3. <headlang="en">
  4. <metacharset="UTF-8">
  5. <title></title>
  6. <styletype="text/css">
  7. .sharp:before{
  8. content:"";  //不需要展现文字等内容,所以设置为空字符
  9. width:0px;
  10. border-bottom:80pxsolidtransparent;
  11. border-top:80pxsolidtransparent;
  12. border-right:40pxsolid#6c6;
  13. position:absolute;
  14. left:-40px;
  15. top:0px;
  16. }
  17. .sharp{
  18. min-width:100px;
  19. height:160px;
  20. background:#6c6;
  21. display:inline-block;
  22. position:absolute;
  23. line-height:160px;
  24. color:#FFFFFF;
  25. font-size:20px;
  26. text-align:center;
  27. }
  28. .sharp:after{
  29. content:"";  //不需要展现文字等内容,所以设置为空字符
  30. width:0px;
  31. border-bottom:80pxsolidtransparent;
  32. border-top:80pxsolidtransparent;
  33. border-left-width:40px;
  34. border-left-style:solid;
  35. border-left-color:#6c6;
  36. position:absolute;
  37. right:-40px;
  38. top:0px;
  39. }
  40. #sharpContainer{
  41. width:100%;
  42. height:600px;
  43. }
  44. #sharpContainer.center{
  45. top:200px;
  46. left:300px;
  47. }
  48. #sharpContainer.top{
  49. top:20px;
  50. left:300px;
  51. }
  52. #sharpContainer.top-left{
  53. top:110px;
  54. left:140px;
  55. }
  56. #sharpContainer.top-right{
  57. top:110px;
  58. left:460px;
  59. }
  60. #sharpContainer.bottom{
  61. top:380px;
  62. left:300px;
  63. }
  64. #sharpContainer.bottom-left{
  65. top:290px;
  66. left:140px;
  67. }
  68. #sharpContainer.bottom-right{
  69. top:290px;
  70. left:460px;
  71. }
  72. </style>
  73. </head>
  74. <body>
  75. <divid="sharpContainer">
  76. <divclass="sharpcenter">
  77. </div>
  78. <divclass="sharptop">
  79. </div>
  80. <divclass="sharptop-left">
  81. </div>
  82. <divclass="sharptop-right">
  83. </div>
  84. <divclass="sharpbottom">
  85. </div>
  86. <divclass="sharpbottom-left">
  87. </div>
  88. <divclass="sharpbottom-right">
  89. </div>
  90. </div>
  91. </body>
  92. </html>

六边形绘制其实是很简单的效果,只要我们了解如何绘制三角形和使用:before,:after伪类样式即可。以后我们在项目中就可以加入更多的不规则的图形了。

以上这篇CSS3绘制六边形的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能有感兴趣的文章
css让页脚保持在底部位置的四种方案

CSS如何使用Flex和Grid布局如何实现3D骰子

Flex布局史上最简单使用语法教程

新的CSS 伪类函数 :is() 和 :where()示例详解

纯CSS打字动画的如何实现示例