简单实现点击可展开、关闭的CSS竖向菜单

本文介绍了一个使用HTML和JavaScript实现的动态显示与隐藏子菜单的示例。通过点击不同的菜单项标题,可以展开或收起对应的子菜单,便于网站导航栏的设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<html>
<head>
<title></title>
<style type="text/css">
.menutitle{
cursor:pointer;
margin-bottom: 5px;
background-color:#eeeeee;
width:188px;
padding:2px;
text-align:center;
font-weight:bold;
}
.submenu{
margin-bottom: 0.5em;
}
</style>
<script type="text/javascript">
if (document.getElementById){ //http://www.codefans.net
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}

function SwitchMenu(obj){
if(document.getElementById){
var el = document.getElementById(obj);
var ar = document.getElementById("masterdiv").getElementsByTagName("span"); //DynamicDrive.com change
 if(el.style.display != "block"){ //DynamicDrive.com change
  for (var i=0; i<ar.length; i++){
 if (ar[i].className=="submenu") //DynamicDrive.com change
   ar[i].style.display = "none";
  }
  el.style.display = "block";
 }else{
 el.style.display = "none";
 }
 }
}
</script>
</head>
<body>
<!-- Codes by http://www.codefans.net-->
<div id="masterdiv">
 <div class="menutitle" onclick="SwitchMenu('sub1')">CodeFans.net's Menu</div>
 <span class="submenu" id="sub1">
  - <a href="http://www.codefans.net">CodeFans.NET</a>
  - <a href="http://www.codefans.net">What's hot</a>
  - <a href="http://www.codefans.net">CodeFans.NET</a>
  - <a href="http://www.codefans.net">More Zone</a>
 </span>
 <div class="menutitle" onclick="SwitchMenu('sub2')">FAQ/Help</div>
 <span class="submenu" id="sub2">
  - <a href="http://www.codefans.net">CodeFans.NET</a>
  - <a href="http://www.codefans.net">DHTML FAQs</a>
  - <a href="http://www.codefans.net">Scripts FAQs</a>
 </span>
 <div class="menutitle" onclick="SwitchMenu('sub3')">Help Forum</div>
 <span class="submenu" id="sub3">
  - <a href="http://www.codingforums.com">Coding Forums</a>
 </span>
 <div class="menutitle" onclick="SwitchMenu('sub4')">Cool Links</div>
 <span class="submenu" id="sub4">
  - <a href="http://codefans.net">JavaScript Kit</a>
  - <a href="http://codefans.net">CodeFans.NET</a>
  - <a href="http://codefans.net">Cool Text</a>
  - <a href="http://codefans.net">CodeFans.NET</a>
 </span>
 <img src="http://www.codefans.net/images/logo.gif" onclick="SwitchMenu('sub6')">

 <span class="submenu" id="sub6">
  - <a href="http://codefans.net">Link to DD</a>
  - <a href="http://codefans.net/">CodeFans.NET</a>
  - <a href="http://codefans.net">Email Us</a>
 </span>
</div>
</body>
</html>

转载于:https://www.cnblogs.com/juan/archive/2009/04/21/1440263.html

实现点击扇形展开效果菜单,需要使用CSS中的transform和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类名移除,并将每个菜单项旋转回初始状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值