学习笔记

  > 导航的二级菜单弹出的代码编写(第一部分,PC部分)

导航的二级菜单弹出的代码编写(第一部分,PC部分)

通过JavaScript来进行导航的添加,实际上就是对position的绝对定位和相对定位的理解。

分为两个方面,一个PC端的,一个手机端的。

通过响应式来处理手机端的代码样式改写。

我还是针对本站http://study.caisangzi.com进行改写导航改写:

pc端原导航代码:

<nav class="pc">
	<ul class="clearfix">
		<li><a href="/">首页</a></li>
		<?php foreach ($menu as $k => $v): ?>
		<li>
		    <a href="<?php echo $v['url']; ?>"><?php echo $v['name']; ?></a>
		</li>	
		<?php endforeach ?>
	</ul>
</nav>

然后我们要在li的层级里面加上一个绝对定位的块,作为弹出层。

<nav class="pc">
	<ul class="clearfix">
		<li><a href="/">首页</a></li>
		<?php foreach ($menu as $k => $v): ?>
		<li>
			<a href="<?php echo $v['url']; ?>"><?php echo $v['name']; ?></a>
			<div class="pop">
				<ul>
					<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>
			</div>
		</li>	
		<?php endforeach ?>
	</ul>
</nav>

然后我们为了操作容易,加上了一些代码样式,同时把主导航的li,属性加上position:relative;

nav ul li {
    position:relative;
    float: left;
    width: auto;
    margin: 0 10px;
}

nav .pop {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
}

nav .pop .children {
    display: block;
}

html代码

<nav class="pc">
	<ul class="clearfix">
		<li><a href="/">首页</a></li>
		<?php foreach ($menu as $k => $v): ?>
		<li>
			<a href="<?php echo $v['url']; ?>"><?php echo $v['name']; ?></a>
			<div class="pop">
				<ul class="clearfix">
					<li class="children"><a href="">二级菜单</a></li>
					<li class="children"><a href="">二级菜单</a></li>
					<li class="children"><a href="">二级菜单</a></li>
					<li class="children"><a href="">二级菜单</a></li>
					<li class="children"><a href="">二级菜单</a></li>
				</ul>
			</div>
		</li>	
		<?php endforeach ?>
	</ul>
</nav>

然后我们修正弹出层的样式

nav ul li:hover .pop{
    display: block;
}

nav .pop {
    z-index: 299;
    display: none;
    position: absolute;
    background: #fff;
    top: 50px;
    left: 0;
    box-shadow: 10px 10px 5px #888888;
}

nav .pop ul {
    color: #fff;
    width: auto;
    line-height: 35px;
    min-width: 150px;
}

nav .pop .children {
    float: none;
    position: static;
    display: block;
    text-align: left;
}

nav .pop .children a {
    text-align: center;
    color: #333;
    font-size: 0.8em;
}

使用伪类的方式来处理是比较快的方案。

nav ul li:hover

这样的话我们的样式就完全完毕了,如果导航迟迟显示不出来,建议查看父类是否有overflow:hidden;的情况。

PC部分就先到这里,然后我会继续移动端的修改。



发布时间:2017-09-27,10:43:39

导航在一个网站中的重要性不言而喻,所以,这次我们来处理导航和二级导航,菜单的编写。

作者:澎蠡

让学习成为一种习惯,让知识交流变成一种生活方式。