html – CSS放大菜单

前端之家收集整理的这篇文章主要介绍了html – CSS放大菜单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想做什么

我想创建一个径向菜单,如下所示,考虑图片中的所有元素互动,即中心的图像以及周围的四分之三.
解决方案与跨浏览器兼容很重要.
这只是一个简单的例子,因为零件真的不得不是宿舍,它们可以是任何可能的零件数量

到目前为止的解决方

我已经尝试使用带有边框的CSS3圆形边框,其中边框将这些图像作为背景,但是不能正常工作,因为每个元素都必须是独立元素.

我听说过css形状,但是我不知道如何使用它来创建径向菜单.

编辑:
也许还有一种方法可以为每个图像添加文字标题

谢谢你的帮助!

解决方法

我用一个css径向菜单制作了这支笔.循环菜单显示在悬停上:

演示:CSS radial menu

径向形状采用边界半径和溢出特性.悬停动画通过CSS转换(缩放和oapcity)进行处理.

对于具有菜单标题的版本,请参阅此DEMO

径向菜单的完整代码

HTML:

  1. <span><span></span></span>
  2. <div class="wrap">
  3. <a href="#"><div></div></a>
  4. <a href="#"><div></div></a>
  5. <a href="#"><div></div></a>
  6. <a href="#"><div></div></a>
  7. <a href="#"><div></div></a>
  8. </div>

CSS:

  1. body,html{margin:0;padding:0;height:100%;}
  2. body{background:#E3DFD2;Box-shadow: inset 0 0 20vmin 0 #585247;}
  3. .wrap{
  4. position:relative;
  5. width:80vmin; height:80vmin;
  6. margin:0 auto;
  7. background:inherit;
  8. transform:scale(0.2) translatez(0px);
  9. opacity:0;
  10. transition:transform .5s,opacity .5s;
  11. }
  12. a{
  13. position:absolute;
  14. left:0; top:0;
  15. width:47.5%; height:47.5%;
  16. overflow:hidden;
  17. transform:scale(.5) translateZ(0px);
  18. background:#585247;
  19. }
  20. a div{
  21. height:100%;
  22. background-size:cover;
  23. opacity:.5;
  24. transition:opacity .5s;
  25. border-radius:inherit;
  26. }
  27. a:nth-child(1){
  28. border-radius:40vmin 0 0 0;
  29. transform-origin: 110% 110%;
  30. transition:transform .4s .15s;
  31. }
  32. a:nth-child(1) div{
  33. background-image:url('https://farm3.staticflickr.com/2827/10384422264_d9c7299146.jpg');
  34. }
  35. a:nth-child(2){
  36. border-radius:0 40vmin 0 0;
  37. left:52.5%;
  38. transform-origin: -10% 110%;
  39. transition:transform .4s .2s;
  40. }
  41. a:nth-child(2) div{
  42. background-image:url('https://farm7.staticflickr.com/6083/6055581292_d94c2d90e3.jpg');
  43. }
  44. a:nth-child(3){
  45. border-radius:0 0 0 40vmin;
  46. top:52.5%;
  47. transform-origin: 110% -10%;
  48. transition:transform .4s .25s;
  49. }
  50. a:nth-child(3) div{
  51. background-image:url('https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg');
  52. }
  53. a:nth-child(4){
  54. border-radius:0 0 40vmin 0;
  55. top:52.5%; left:52.5%;
  56. transform-origin: -10% -10%;
  57. transition:transform .4s .3s;
  58. }
  59. a:nth-child(4) div{
  60. background-image: url('https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg');
  61. }
  62. a:nth-child(5){
  63. width:55%;height:55%;
  64. left:22.5%; top:22.5%;
  65. border-radius:50vmin;
  66. Box-shadow:0 0 0 5vmin #E3DFD2;
  67. transform:scale(1);
  68. }
  69. a:nth-child(5) div{
  70. background-image: url('https://farm4.staticflickr.com/3766/12953056854_b8cdf14f21.jpg');
  71. }
  72. span{
  73. position:relative;
  74. display:block;
  75. margin:0 auto;
  76. top:45vmin;
  77. width:10vmin; height:10vmin;
  78. border-radius:100%;
  79. background:#585247;
  80. transform:translateZ(0px);
  81. }
  82. span span{
  83. position:absolute;
  84. width:60%;height:3px;
  85. background:#ACA696;
  86. left:20%; top:50%;
  87. border-radius:0;
  88. }
  89. span span:after,span span:before{
  90. content:'';
  91. position:absolute;
  92. left:0; top:-1.5vmin;
  93. width:100%; height:100%;
  94. background:inherit;
  95. }
  96. span span:after{
  97. top:1.5vmin;
  98. }
  99. span:hover + .wrap,.wrap:hover{
  100. transform:scale(.8) translateZ(0px);
  101. opacity:1;
  102. }
  103. span:hover + .wrap a,.wrap:hover a{
  104. transform:scale(1) translatez(0px);
  105. }
  106. a:hover div{
  107. opacity:1;
  108. transform:translatez(0px);
  109. }

猜你在找的HTML相关文章