css制作抽奖轮盘效果/扇形菜单

先上效果图

附上代码:

<head>
  <meta charset="utf-8" />
  <title>轮盘</title>
  <style type="text/css">
  #L {
  position: relative;
  overflow: hidden;
  width: 400px;
  height: 400px;
  margin: 150px auto;
  background-color: #ddd;
  border-radius: 200px;
  }
  
  #L ul li {
  list-style: none;
  position: absolute;
  width: 200px;
  height: 200px;
  right: 50%;
  top: 0;
  -webkit-transform-origin: 100% 100%;
  -moz-transform-origin: 100% 100%;
  -ms-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  }
  
  #L .L1 {
  background-color: red;
  -webkit-transform: skew(54deg);
  -moz-transform: skew(54deg);
  -ms-transform: skew(54deg);
  transform: skew(54deg);
  }
  
  /* 倾斜54,旋转36 */
  #L .L2 {
  background-color: #FCF6E6;
  -webkit-transform: rotate(36deg) skew(54deg);
  -moz-transform: rotate(36deg) skew(54deg);
  -ms-transform: rotate(36deg) skew(54deg);
  transform: rotate(36deg) skew(54deg);
  }
  
  #L .L3 {
  background-color: red;
  -webkit-transform: rotate(72deg) skew(54deg);
  -moz-transform: rotate(72deg) skew(54deg);
  -ms-transform: rotate(72deg) skew(54deg);
  transform: rotate(72deg) skew(54deg);
  }
  
  #L .L4 {
  background-color: #FCF6E6;
  -webkit-transform: rotate(108deg) skew(54deg);
  -moz-transform: rotate(108deg) skew(54deg);
  -ms-transform: rotate(108deg) skew(54deg);
  transform: rotate(108deg) skew(54deg);
  }
  
  #L .L5 {
  background-color: red;
  -webkit-transform: rotate(144deg) skew(54deg);
  -moz-transform: rotate(144deg) skew(54deg);
  -ms-transform: rotate(144deg) skew(54deg);
  transform: rotate(144deg) skew(54deg);
  }
  
  #L .L6 {
  background-color: #FCF6E6;
  -webkit-transform: rotate(180deg) skew(54deg);
  -moz-transform: rotate(180deg) skew(54deg);
  -ms-transform: rotate(180deg) skew(54deg);
  transform: rotate(180deg) skew(54deg);
  }
  
  #L .L7 {
  background-color: red;
  -webkit-transform: rotate(216deg) skew(54deg);
  -moz-transform: rotate(216deg) skew(54deg);
  -ms-transform: rotate(216deg) skew(54deg);
  transform: rotate(216deg) skew(54deg);
  }
  
  #L .L8 {
  background-color: #FCF6E6;
  -webkit-transform: rotate(252deg) skew(54deg);
  -moz-transform: rotate(252deg) skew(54deg);
  -ms-transform: rotate(252deg) skew(54deg);
  transform: rotate(252deg) skew(54deg);
  }
  
  #L .L9 {
  background-color: red;
  -webkit-transform: rotate(288deg) skew(54deg);
  -moz-transform: rotate(288deg) skew(54deg);
  -ms-transform: rotate(288deg) skew(54deg);
  transform: rotate(288deg) skew(54deg);
  }
  
  #L .L10 {
  background-color: #FCF6E6;
  -webkit-transform: rotate(324deg) skew(54deg);
  -moz-transform: rotate(324deg) skew(54deg);
  -ms-transform: rotate(324deg) skew(54deg);
  transform: rotate(324deg) skew(54deg);
  }
  </style>

  </head>

  <body>
    <div id="L">
      <ul>
        <li class="L1">
        </li>
        <li class="L2">
        </li>
        <li class="L3">
        </li>
        <li class="L4">
        </li>
        <li class="L5">  
        </li>
        <li class="L6">
        </li>
        <li class="L7">
        </li>
        <li class="L8">
        </li>
        <li class="L9">  
        </li>  
        <li class="L10">  
        </li>  
      </ul>
    </div>
  </body>
  
  </html>

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现点击扇形展开效果菜单,需要使用CSStransform和transition属性。以下是一种实现方式: HTML结构: ```html <div class="menu"> <div class="item item1"></div> <div class="item item2"></div> <div class="item item3"></div> <div class="item item4"></div> <div class="item item5"></div> <div class="center"></div> </div> ``` CSS样式: ```css .menu { position: relative; width: 200px; height: 200px; } .item { position: absolute; width: 50px; height: 50px; background-color: #ccc; border-radius: 50%; transition: transform 0.5s ease; } .item1 { top: -25px; left: 75px; } .item2 { top: 35px; left: 35px; } .item3 { top: 75px; left: -25px; } .item4 { top: 35px; left: -85px; } .item5 { top: -25px; left: -45px; } .center { position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; background-color: #333; border-radius: 50%; transform: translate(-50%, -50%); cursor: pointer; } ``` JavaScript代码: ```javascript var menu = document.querySelector('.menu'); var items = document.querySelectorAll('.item'); var center = document.querySelector('.center'); var isOpen = false; center.addEventListener('click', function() { if (isOpen) { // 关闭菜单 menu.classList.remove('open'); items.forEach(function(item, index) { item.style.transform = 'rotate(0deg)'; }); } else { // 打开菜单 menu.classList.add('open'); items.forEach(function(item, index) { item.style.transform = 'rotate(' + (index * 72) + 'deg)'; }); } isOpen = !isOpen; }); ``` 在上面的代码,我们通过JavaScript监听心圆的点击事件,并根据菜单是否打开来决定是展开还是收起菜单。当菜单打开时,我们给菜单容器添加open类名,并将每个菜单项按照一定角度旋转,从而形成扇形展开效果。当菜单关闭时,我们将open类名移除,并将每个菜单项旋转回初始状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值