css下拉菜单 有几点不懂,望高手能帮忙解决一下

html-css017

css下拉菜单 有几点不懂,望高手能帮忙解决一下,第1张

1,一般下拉菜单的二级菜单都是绝对定位的,绝对定位的元素脱离了常规流,所以不占位,他们会叠加在其他元素的上面或者下面

2,你可以把这里面的空格当作[内],也就是子孙元素的意思

#menu ul li ---- #menu 内的 ul 内的 li

#menu ul li:first-child a:hover:after ---- #menu 内的 ul 内的 li(并且是ul的第一个子元素) 内的 a 鼠标指向时 after

after/before 的意义在于,他们不存在在html文档中,但是又能被浏览器显示出来,因此,可以用来实现一些效果。

常用的例如:

~文字前面的icon,不用在html中插入多余的空元素,直接使用after或者before,前面后面随便插.......

~清除浮动

~为引用的文字加入引号

~画一些有意思的图标

制作下拉菜单有2种方法:

使用jquery方法实现;实现方法:首先需要引入jquery的版本,引用toggle()的方法,点击当前的一级导航。用this方法来进行当前包含的二级菜单隐藏与显示。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" src="js/jquery-1.7.2.min.js" ></script>

</head>

<style>

*{margin: 0 padding: 0}

ul,li{list-style: none}

a{text-decoration: none}

.menu{width: 1000px margin: 0 auto}

.menu li{float: leftwidth: 100pxline-height: 40px text-align: center}

.menu li a{display: block color:redfont-size: 18px}

.menu-two{display: nonewidth: 100px}

.menu li .menu-two a{font-size: 14pxcolor:#0000FF}

</style>

<body>

<ul class="menu">

<li><a href="#">一级菜单</a>

<ul class="menu-two">

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

</ul>

</li>

<li><a href="#">一级菜单</a>

<ul class="menu-two">

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

<li><a href="#">二级菜单</a></li>

</ul>

</li>

<li><a href="#">一级菜单</a>

<ul class="menu-two">

<li><a href="#">二级菜单</a></li>

</ul>

</li>

<li><a href="#">一级菜单</a>

<ul class="menu-two">

<li><a href="#">二级菜单</a></li>

</ul>

</li>

<li><a href="#">一级菜单</a>

<ul class="menu-two">

<li><a href="#">二级菜单</a></li>

</ul>

</li>

</ul>

</body>

<script type="text/javascript">

$(function(){

$(".menu > li a").toggle(

function(e){

$(this).siblings().show()//对当前的.menu>li a的兄弟节点menu-two进行显示

e.preventDefault()//阻止冒泡事件.

},function(e){

$(this).siblings().hide()对当前的.menu>li a的兄弟节点menu-two进行隐藏

e.preventDefault()

}

)

})

</script>

</html>

2.使用css的伪类样式hover实现,html结构上面的一样,只需要把二级菜单进行隐藏(display:none)然后在用hover方式,鼠标移上去让当前隐藏的(.menu-tow)进行(display:block)显示,纯css的方式:

<style>

*{margin: 0 padding: 0}

ul,li{list-style: none}

a{text-decoration: none}

.menu{width: 1000px margin: 0 auto}

.menu li{float: leftwidth: 100pxline-height: 40px text-align: center}

.menu li a{display: block color:redfont-size: 18px}

.menu-two{display: nonewidth: 100px}/***隐藏当前的二级菜单***/

.menu li .menu-two a{font-size: 14pxcolor:#000}

.menu li:hover .menu-two{display: block}/**鼠标的hover伪类事件对.menu-tow进行显示**/

</style>

3.2种方式都可以实现想要的下拉菜单效果,jquery的实现方式与纯css的实现方式均可以,如果需要有个缓动的动画效果,可以在当前的jquery方式下进行修改,纯css的实现需要用css3的属性来实现。都是很酷炫的(PS:css3的效果只支持ie9及以上)。