利用css做制作蜂窝布局
2015-12-07 00:00
1191 查看
摘要: 产品经理脑洞大开,要我给他做一个蜂窝效果的页面,图片存放其中。这需求听上去能做,但问题是——我好像是写PHP的-_-!但转念一想,我既然连世界最好的语言PHP都能驾驭,这种需求又算什么呢?就给他做了算了
六边形可以看成由三个一样的长方形组成,所以最初的思路是准备三个相同的div,并让其脱离文档流,并进行旋转就行了。按照这一思路
css代码:
html代码
最后获得如下的六边形:
本来以为这样应该差不多了,但这样却产生了一个问题,三个div都是同级的,把图片放置在任一一个div中只能在一个div中显示,并无法延伸到其他div,而需求是图片以蜂窝状显示图片,这样明显不符合需求
图片无法跨div显示
到这里发现利用div的叠加(并集)难以实现图片以六边形的形式显示,换一种思路——三个div的交集刚好也是一个六边形,相当于三个宽度为原div高度的长方形叠加起来六边形,所以,现在的思路转为利用三个div相互遮盖,将三个div嵌套,借助css的overflow属性即可实现。
css代码:
html代码:
利用overflow:hidden遮盖子div,然后将外两层的div设置为不可见,最内层div设设置为可见,即可完成所需六边形的构造
最后设置最内层的div的背景图片,或放置图片进去,最后的最后配合php或js按设计进行布局和加特效,这个需求就算差不多了
六边形可以看成由三个一样的长方形组成,所以最初的思路是准备三个相同的div,并让其脱离文档流,并进行旋转就行了。按照这一思路
css代码:
.content{width: 80%;margin: 120px auto;} .box{width: 150px;height: 86px;position: relative;} .boxL,.boxR,.boxM{width: 150px;height: 86px;position: absolute;} .boxL{transform:rotate(60deg);background: rgba(225, 89, 89, 0.5);} .boxR{transform:rotate(120deg);background: rgba(89, 215, 225, 0.5);} .boxM{background: rgba(43, 236, 45, 0.5);}
html代码
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <div class="content"> <div class="box"> <div class="boxL"></div> <div class="boxR"></div> <div class="boxM"></div> </div> </div> </body> </html>
最后获得如下的六边形:
本来以为这样应该差不多了,但这样却产生了一个问题,三个div都是同级的,把图片放置在任一一个div中只能在一个div中显示,并无法延伸到其他div,而需求是图片以蜂窝状显示图片,这样明显不符合需求
图片无法跨div显示
到这里发现利用div的叠加(并集)难以实现图片以六边形的形式显示,换一种思路——三个div的交集刚好也是一个六边形,相当于三个宽度为原div高度的长方形叠加起来六边形,所以,现在的思路转为利用三个div相互遮盖,将三个div嵌套,借助css的overflow属性即可实现。
css代码:
.content{width: 80%;margin: 120px auto;} .box{width: 150px;height: 86px;position: relative;} .boxL,.boxR,.boxM{width: 300px;height: 172px;position: absolute;overflow: hidden;visibility: hidden;} .boxL{transform:rotate(60deg);background: rgba(225, 89, 89, 0.5);} .boxR{transform:rotate(60deg);background: rgba(89, 215, 225, 0.5);} .boxM{transform:rotate(-120deg);background: rgba(43, 236, 45, 0.5);visibility:visible;}
html代码:
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <div class="content"> <div class="box"> <div class="boxL"> <div class="boxR"> <div class="boxM"></div> </div> </div> </div> </div> </body> </html>
利用overflow:hidden遮盖子div,然后将外两层的div设置为不可见,最内层div设设置为可见,即可完成所需六边形的构造
最后设置最内层的div的背景图片,或放置图片进去,最后的最后配合php或js按设计进行布局和加特效,这个需求就算差不多了
相关文章推荐
- 《CSS3秘籍》第3-5章
- css 入门基础知识
- 利用css3动画和border来实现圆形进度条
- css3-transition
- 经典CSS实现三角形图标原理解析
- 通过查看系统的ProgressBar样式来自定义旋转动画
- H5/CSS3/JS/DOM最全资源网
- 【HTML第一本】Head First HTML with CSS & XHTML读书笔记
- H5/CSS3/JS/DOM最全大全网
- 垂直居中显示的几个方法
- CSS3秘笈:第三章
- CSS3秘笈:第二章
- CSS3秘笈:第一章
- CSS transition的过渡效果
- CSS3的动画效果实现
- CSS三种写法的优先级
- CSS学习笔记一
- 没事写写css
- 【Html】三种CSS样式的优先级
- 使用PHP实现下载CSS文件中的图片