求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
纯CSS制作蜂巢效果详解
 

作者:王然,发布于2012-4-25,来源:CSDN

 

导读:最近HTML5和CSS3是越来越普及,HTML5&CSS3不会在大分辨率显示屏上出现马赛克等优点也渐渐被人注意到。很多网站都渐渐大量使用CSS3做网站美化,HTML5&CSS3的优秀作品层出不穷!甚至有的网站已经完全抛弃图片,仅使用CSS和JavaScript创造出简介而又华丽的界面。下面是国外作者@jtauber的使用CSS创作蜂巢效果的技术介绍(上面是最终效果图):

height: 100px;

width: 100px;

border: 30px solid #999;

如果给每border附上不同的颜色的值:

height: 100px;

width: 100px;

border-top: 30px solid #C66;

border-bottom: 30px solid #6C6;

border-left: 30px solid #66C;

border-right: 30px solid #CC6;

现在把height属性删除,并且将div的width设置为0,效果如下:

width: 0;

border-top: 30px solid #C66;

border-bottom: 30px solid #6C6;

border-left: 30px solid #66C;

border-right: 30px solid #CC6;

删除border-top,再将border-left/border-right设置为透明:

width: 0;

border-bottom: 30px solid #6C6;

border-left: 30px solid transparent;

border-right: 30px solid transparent;

两边的border不需要和bottom-border一样,bottom-border设置为30px,两边的52px,效果如下:

width: 0;

border-bottom: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

如果用top-border替换bottom-border:

width: 0;

border-top: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

在它们中创建一个104px × 60px的相同颜色的div你就能看到六边形的效果了:

width: 0;

border-bottom: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

width: 104px;

height: 60px;

background-color: #6C6;

width: 0;

border-top: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

以上是在CSS中制作出六边形效果的全部过程。两侧和上/下面的border width30:52的比例约等于1:√3 rat,也是为表现出六边形效果准备的。

下面提供一个简单的将六边形旋转30°。我们只需要旋转一下方向,使用float: left并且将width: 0属性删除。

float: left;

border-right: 30px solid #6C6;

border-top: 52px solid transparent;

border-bottom: 52px solid transparent;

float: left;

width: 60px;

height: 104px;

background-color: #6C6;

float: left;

border-left: 30px solid #6C6;

border-top: 52px solid transparent;

border-bottom: 52px solid transparent;

两种方向的六边形都可以很容易地拼贴在一起。第一种旋转方式的每个六边形上添加属性margin-left: 3px和margin-bottom: -26px,并且在偶数行还有margin-left: 53px。

 

..hex {

float: left;

margin-left: 3px;

margin-bottom: -26px;

}

..hex .top {

width: 0;

border-bottom: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

}

..hex .middle {

width: 104px;

height: 60px;

background: #6C6;

}

..hex .bottom {

width: 0;

border-top: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

}

..hex-row {

clear: left;

}

..hex-row.even {

margin-left: 53px;

}

第二种旋转方式的每个六边形上添加 margin-right: -26px和margin-bottom: -50px的属性在偶数列还有margin-top: 53px。

 

..hex {

float: left;

margin-right: -26px;

margin-bottom: -50px;

}

..hex .left {

float: left;

width: 0;

border-right: 30px solid #6C6;

border-top: 52px solid transparent;

border-bottom: 52px solid transparent;

}

..hex .middle {

float: left;

width: 60px;

height: 104px;

background: #6C6;

}

..hex .right {

float: left;

width: 0;

border-left: 30px solid #6C6;

border-top: 52px solid transparent;

border-bottom: 52px solid transparent;

}

..hex-row {

clear: left;

}

..hex.even {

margin-top: 53px;

}

完成以上工作后还可以在.hex类添加以下代码再创造出3D透视效果。

 

-webkit-transform: perspective(600px) rotateX(60deg);

-moz-transform: perspective(600px) rotateX(60deg);

-ms-transform: perspective(600px) rotateX(60deg);

-o-transform: perspective(600px) rotateX(60deg);

transform: perspective(600px) rotateX(60deg);

Addendum

Will Hardy建议使用 :before和 :after来减少所需使用的div为1个。

 


..hex:before {

content: " ";

width: 0; height: 0;

border-bottom: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

position: absolute;

top: -30px;

}

..hex {

margin-top: 30px;

width: 104px;

height: 60px;

background-color: #6C6;

position: relative;

}

..hex:after {

content: "";

width: 0;

position: absolute;

bottom: -30px;

border-top: 30px solid #6C6;

border-left: 52px solid transparent;

border-right: 52px solid transparent;

}

相关文章

深度解析:清理烂代码
如何编写出拥抱变化的代码
重构-使代码更简洁优美
团队项目开发"编码规范"系列文章
相关文档

重构-改善既有代码的设计
软件重构v2
代码整洁之道
高质量编程规范
相关课程

基于HTML5客户端、Web端的应用开发
HTML 5+CSS 开发
嵌入式C高质量编程
C++高级编程
 
分享到
 
 
     


十天学会DIV+CSS(WEB标准)
HTML 5的革新:结构之美
介绍27款经典的CSS框架
35个有创意的404错误页面
最容易犯的13个JavaScript错误
设计易理解和操作的网站
更多...   


设计模式原理与应用
从需求过渡到设计
软件设计原理与实践
如何编写高质量代码
单元测试、重构及持续集成
软件开发过程指南


东软集团 代码重构
某金融软件服务商 技术文档
中达电通 设计模式原理与实践
法国电信 技术文档编写与管理
西门子 嵌入式设计模式
中新大东方人寿 技术文档编写
更多...