Html+Css 纯CSS实现的导航 (精通CSS高级WEB解决方案)读书笔记

今天看书学习了纯粹的CSS实现的简易导航。

实现效果如下:



整体思路:

1:二级导航基本思路:

第一级 ul 的 li 中嵌套 第二级 的ul 与li , 并对 ul 设置 float:left ,让其中的 li 水平显示, 更改其默认垂直显示的行为。

2:(核心代码)导航的浮动与隐藏:

  将二级导航的li 初始时 进行 absolute 定位(相对于上一个已定位元素),使其脱离基本文本流  left 给予一个极大的值,如 left: -999em; 使其显示在屏幕之外,

示例代码:

ul.nav li ul{
            position: absolute;
			width: 8em;
			left: -999em;
			margin-left: -1px;
        }
      而鼠标悬停或获取焦点时,让其自动定位,恢复正常显示的位置

示例代码

ul.nav li:hover ul{
            left:auto;
        }


3:隐藏问题,利用 负margin 清理浮动; 上级的浮动可用margin为负值进行清理,

示例:

ul.nav li ul{
            position: absolute;
			width: 8em;
			left: -999em;
			margin-left: -1px;
        }


完整示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模块导航测试页</title>
    <style type="text/css">
		body {
		 	font-family: "Myriad Pro", Frutiger, "Lucida Grande", "Lucida Sans", "Lucida Sans Unicode", Verdana, sans-serif;
		  	font-size: 1.4em;
			margin-top: 4em;
		}
		
        ul.nav, ul.nav ul{
            margin: 0;
            padding: 0;
            list-style-type: none;
            float:left;
            border: 1px solid #486B02;
			background-color: #8BD400;
        }

        ul.nav li{
        	width: 8em;
            float:left;
        }

        ul.nav li ul{
            position: absolute;
			width: 8em;
			left: -999em;
			margin-left: -1px;
        }

        ul.nav li:hover ul{
            left:auto;
        }

        ul.nav li a{
			text-decoration: none;
			display: block;
        	color: #2B3F00;
            /*border-right: 1px solid #486B02;
			border-left: 1px solid #E4FFD3;*/
        }

		/*ul.nav li li a {
			border-top: 1px solid #E4FFD3;
			border-bottom: 1px solid #486B02;	
			border-left: 0;
			border-right: 0;
		}

		ul.nav li:last-child a {
			border-right: 0;
			border-bottom: 0;
		}
*/		
        ul a:focus,ul a:hover{
        	color: #E4FFD3;
        	background-color: #6DA203;
        }
    </style>

</head>

<body>
	<div>
	    <ul class="nav">
	        <li>
	            <a href="#">保健品</a>
	            <ul>
	                <li><a href="#">补肾</a></li>
	                <li><a href="#">补脑</a></li>
	                <li><a href="#">养胃</a></li>
	            </ul>
	        </li>
	        <li>
	            <a href="#">饼干</a>
	            <ul>
	                <li><a href="#">压缩饼干</a></li>
	                <li><a href="#">苏打饼干</a></li>
	                <li><a href="#">威化饼干</a> </li>
	            </ul>
	        </li>
	        <li>
	            <a href="#">衣服</a>
	            <ul>
	                <li><a href="#">裤子</a></li>
	                <li><a href="#">裙子</a></li>
	                <li><a href="#">大衣</a></li>
	            </ul>
	        </li>
	    </ul>
	</div>
    <div style="width:600px;">
    	<br/>
    	<h4>
    		另外一类两栏自适应用到的是margin的上下负值,尤其在一栏高度固定,另外一栏高 度不定的两栏或多栏布局中最为常见。高度不固定栏和高度固定的栏上下错开,均无浮动属性,高度不固定的栏margin-top一个负值,大小就是高度固定 栏的高度,实现了两栏在同一水平线上。且宽度自适应,并且不用担心有浮动出现的一系列问题。
    	</h4>
    </div>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值