我目前正在建立一个小型网站,并通过使用教程(link)创建了一个菜单,当它悬停在其上时隐藏了子菜单。我对HTML和CSS有一般的了解,但我自己从未做过任何脚本编写。
我如何才能在点击时进行切换而不是悬停,以便可以在手机和平板电脑上正常浏览,这是计划使用的?
以下代码也可用作jsfiddle。
<div>
<nav>
<div class="menu-item alpha">
<h4><a href="#">Sida 1</a></h4>
<ul>
<li><a href="#">Sida 1</a></li>
<li><a href="#">Sida 2</a></li>
<li><a href="#">sida 3</a></li>
</ul>
</div>
<div class="menu-item">
<h4><a href="#">Sida 2</a></h4>
<ul>
<li><a href="#">Sida 1</a></li>
<li><a href="#">Sida 2</a></li>
<li><a href="#">Sida 3</a></li>
</ul>
</div>
<div class="menu-item">
<h4><a href="#">Sida 3</a></h4>
<ul>
<li><a href="#">Sida 1</a></li>
<li><a href="#">Sida 2</a></li>
<li><a href="#">Sida 3</a></li>
</ul>
</div>
</nav>
</div>
nav {
font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
line-height: 1.5;
margin: 50px auto; /*for display only*/
width: 200px;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
-moz-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
}
.menu-item {
background: #fff;
width: 200px;
}
/*Menu Header Styles*/
.menu-item h4 {
color: #fff;
font-size: 15px;
font-weight: 500;
padding: 7px 12px;
background: #a90329;
}
.menu-item h4 a {
color: white;
display: block;
text-decoration: none;
width: 200px;
}
/*Menu Header Styles*/
.menu-item h4 {
border-bottom: 1px solid rgba(0,0,0,0.3);
border-top: 1px solid rgba(255,255,255,0.2);
color: #fff;
font-size: 15px;
font-weight: 500;
padding: 7px 12px;
/*Gradient*/
background: #a90329; /* Old browsers */
background: -moz-linear-gradient(top, #a90329 0%, #8f0222 44%, #6d0019 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a90329), color-stop(44%,#8f0222), color-stop(100%,#6d0019)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* IE10+ */
background: linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a90329', endColorstr='#6d0019',GradientType=0 ); /* IE6-9 */
}
.menu-item h4:hover{
background: #cc002c; /* Old browsers */
background: -moz-linear-gradient(top, #cc002c 0%, #6d0019 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cc002c), color-stop(100%,#6d0019)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* IE10+ */
background: linear-gradient(top, #cc002c 0%,#6d0019 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc002c', endColorstr='#6d0019',GradientType=0 ); /* IE6-9 */
}
*First Item Styles*/
.alpha p {
font-size: 13px;
padding: 8px 12px;
color:#F00 ;
}/*ul Styles*/
.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
list-style-type: none;
overflow: hidden;
padding: 0px;
}
.menu-item ul a {
margin-left: 20px;
text-decoration: none;
color: #000;
display: block;
width: 200px;
}
/*li Styles*/
.menu-item li {
border-bottom: 1px solid #eee;
}
.menu-item li:hover {
background: #eee;
}
/*ul Styles*/
.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
height: 0px; /*Collapses the menu*/
list-style-type: none;
overflow: hidden;
padding: 0px;
}
/*ul Styles*/
.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
height: 0px;
list-style-type: none;
overflow: hidden;
padding: 0px;
/*Animation*/
-webkit-transition: height 1s ease;
-moz-transition: height 1s ease;
-o-transition: height 1s ease;
-ms-transition: height 1s ease;
transition: height 1s ease;
}
.menu-item:hover ul {
height: 93px;}
答案 0 :(得分:1)
我创建了Fiddle。
$(function() {
$( ".menu-item" ).each(function() {
$( ".menu-item" ).click(function() {
$( "ul",this).slideToggle(75);
});
});
});
答案 1 :(得分:0)
如果你在jsfiddle上设置工作代码,但要回答你的问题,你可以使用简单的javascript来切换onClick类。该类将执行当前在悬停时显示的子菜单。
http://jsfiddle.net/c768Q/21/是你所要求的工作演示小提琴。像这样的东西,
$( ".menu-item" ).click(function() {
$(this).find("ul").toggleClass("add-height");
});
答案 2 :(得分:0)
不幸的是,使用伪属性选择的路径:悬停作为选择器来设置过渡动画,这使我们没有多少工作空间。它们通常用于设置链接样式,但可以应用于其他元素(在本例中为ul) - 但使用其他可用选择器并不能提供所需的效果。 我建议使用Javascript或像jQuery这样的库,这简化了很多动画操作。 请将此示例视为替换,它完全符合您的要求:http://jqueryui.com/accordion/
今天开始使用新网站时,我还会考虑一个像Bootstrap(http://getbootstrap.com)这样的现代模板,它会使用最新技术开始使用最新技术,同时提供向后兼容性,让您节省很多未来调试可能会受挫!
答案 3 :(得分:0)
你可以简单地使用Accordion Jquery插件,其中有很多。 一个例子是:bassistance
但是你可以将这个例子从designshack更改为click,我只是修改了它。 您可以访问:this fiddle
$(function(){
$('.menu-item').click(function(){
var uls = $(this).find("ul");
$('.menu-item').removeClass("active");
$(this).addClass("active");
$('.menu-item').find("ul").slideUp(200, function(){
uls.slideDown(500);
});
});
});
答案 4 :(得分:0)
使用CSS是可能的,尽管你必须稍微改变你的标记。您可以使用复选框和标签以及相邻的同级CSS选择器来获得您正在寻找的效果:
<强> HTML 强>
<input id="sida1" type="checkbox">
<div class="menu-item alpha">
<label for="sida1"><a>Sida 1</a></label>
<ul>
<li><a href="#">Sida 1</a></li>
<li><a href="#">Sida 2</a></li>
<li><a href="#">sida 3</a></li>
</ul>
</div>
<强> CSS 强>
input[type=checkbox]{display:none}
input[type=checkbox]:checked + .menu-item ul {
height: 93px;
}
我已将<h4>
与标签交换出来并将其显示为块。我还删除了每个标题链接的href
属性,因为它会对网址进行哈希处理并阻止复选框被检查。
答案 5 :(得分:0)
你可以用jQuery来做。