html+css+javascript打造网页内容浮动导航菜单

1需求分析

前段时间把“圳品”信息发布到网站上了,内容包括四大块:

  1. 按分布区域统计分析
  2. 按产品类别统计分析
  3. 按认定时间统计分析
  4. 河池市“圳品”清单


导致网页很长,有同事反映说查看起来不是很方便,于是决定加上一个网页内容浮动导航菜单,把上面这四大块列为菜单项,用户点击相应的菜单项,就跳转到相应的内容,并且提供关闭和收缩、展开导航菜单的功能。如下图:

2 制作菜单

为了让菜单显示统一美观,我们使用了css。

2.1 css的三种使用方式

2.1.1内部样式表

将CSS代码写在HTML文档的head标签中,并且用style标签定义

<head>
<style type="text/css">
选择器{属性1:属性值1;属性2:属性值2;属性3:属性值3;}
</style>
<head>

2.1.2 行内式(内联样式)

通过标签的style属性来设置元素的样式,只对其所在的标签及嵌套在其中的子标签起作用。

<标签名 style="属性1:属性值1;属性2:属性值2;……属性n:属性值n;">内容</标签名>


2.1.3 外部样式表(外链式)

将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中

<head>
        <link href="CSS文件的路径" rel="stylesheet" />
</head>

由于网页系统不是我们自己搭建的,所以使用了行内式(内联样式)。


2.2 实现菜单浮动


用了css中的position和z-index,即:

position: fixed; z-index:2;

2.3 实现菜单半透明效果

使用了css中的opacity,即:

opacity:.8

2.4 实现字体阴影效果


使用了css中的text-shadow,即:

text-shadow: 1px 1px 2px black;

2.5 关闭菜单图标

用<div>显示x,即:

      <div style="cursor: pointer; float:right; margin-right:10px;"  title="关闭">x</div>


2.6 收缩/展开菜单的图标

用<div>显示+或-,即:

    <div id="oc" style="cursor: pointer;float:right;margin-right:10px;" title="收缩">-</div>


2.7 网页内容浮动导航菜单显示代码

如下:  

<div id="nav" style="width:215px; height:155px; border:3px double green;top:400px; left:1000px;position:fixed;z-index:2;">
	<div style="width:210px; text-align:center;background: green; font-weight:bold; color: white;padding:3px">
		内容导航
		<div style="cursor: pointer; float:right; margin-right:10px;"  title="关闭">
			x
		</div>
		<div id="oc" style="cursor: pointer;float:right;margin-right:10px;" title="收缩">
			-
		</div>
	</div>
	<div id="mn" style="padding:5px;background: #ccffff; opacity:.8; visibility:block">
		<p style="white-space: normal;">
			<a href="#a1" style="text-decoration:none;color:black; text-shadow: 1px 1px 2px black">一、按分布区域统计分析</a>
		</p>
		<p style="white-space: normal;">
			<a href="#a2" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black">二、按产品类别统计分析</a>
		</p>
		<p style="white-space: normal;">
			<a href="#a3" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black">三、按认定时间统计分析</a>
     	</p>
		<p style="white-space: normal;">
			<a href="#a4" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black">四、河池市“圳品”清单</a>
		</p>
	</div>
</div>

2.3 JavaScript代码也有三种使用方式

要实现关闭和收缩、展开导航菜单的功能,需要使用JavaScript代码来实现。

与css相似,在网页中使用JavaScript代码也有三种使用方式。

2.3.1 嵌入式(或称内嵌式)

将使用<script>标签包裹JavaScript代码,直接编写到HTML文件中,通常将其放到<head>标签或<body>标签中。

<script type="text/javascript">
    JavaScript代码
</script>


<script>标签的type属性用于告知浏览器脚本类型,HTML.5中该属性的默认值为“text/javascript”,因此在使用HTML5时可以省略ype属性。


2.3.2 行内式

将JavaScript代码作为HTML标签的属性值使用。

<标签名 onclick="javaScript语句1;javaScript语句2;……javaScript语句n;">内容</标签名>

需要注意的是说明的是,因为行内式有如下缺点。

  1. 行内式代码可读性较差,尤其是在HTML文件中编写大量JavaScript代码时,不方便阅读。
  2. 行内式代码在遇到多层引号嵌套的情况时,引号非常容易混淆,导致代码出错。

所以,行内式通常只有在临时测试或者特殊情况下使用,一般情况下不推荐使用行内式

2.3.3 外链式(或称外部式)

将JavaScript 代码写在一个单独的文件中,一般使用“js”作为文件的扩展名,在HTML页面中使用<script>标签的src属性引人“js”文件。

<script src="脚本文件文件说明衔"></script>

外链式适合javascript代码量较多的情况。

由于网站平台不是自己开发和运维的,所以使用了行内式。

2.4 实现关闭导航菜单的功能

要关闭内容浮动导航菜单,也就是不让内容浮动导航菜单显示出来,可以通过css的display或visibility来实现。

2.4.1 display的用法

这里我们用了display来实现。

CSS 语法

display: value;

属性值

描述
none 此元素不会被显示。
block 此元素将显示为块级元素,此元素前后会带有换行符。
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block 行内块元素。(CSS2.1 新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
table-row 此元素会作为一个表格行显示(类似 <tr>)。
table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
table-column 此元素会作为一个单元格列显示(类似 <col>)
table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
table-caption 此元素会作为一个表格标题显示(类似 <caption>)
inherit 规定应该从父元素继承 display 属性的值。

2.4.2 实现关闭功能

 当用户点击关闭导航菜单的按钮x时,我们将导航菜单最外层的<div>(其id为nav)的display值设置为none。

<div id="nav" style="width:215px; height:200px; border:3px double green;top:400px; left:1000px;position:fixed;z-index:2;">
……
        <div style="cursor: pointer; float:right; margin-right:10px;" onclick="document.getElementById('nav').style.display='none'" title="关闭">
            x
        </div>
……
</div>

2.4 实现导航菜单的收缩、展开

2.4.1 收缩

当前用户点 - (<div> id="oc",Open、Close)来收缩菜单时,我们设置包含4个菜单项的<div> (id="mn",menu)的display值设置为none,将 -  改为+(<div> id="oc"),修改tilte值为“展开”,修改导航菜单最外层的<div>(其id为nav)的高度(height)。

        <div id="oc" style="cursor: pointer;float:right;margin-right:10px;"
	onclick="
	var nav=document.getElementById('nav');
	var mn=document.getElementById('mn');
	var oc=document.getElementById('oc');
	with (mn.style) 
	{
		if (display != 'none') 
		{
			 //收缩菜单
		     display='none'; 
			 nav.style.height='26px'; 
			 oc.title='展开';
			 oc.innerText='+';
		}
		else
		{
			//展开菜单
			//……
		}
	}"
   >
	-
	</div>

2.4.2 展开

当用户当前用户点 + (<div> id="oc",Open、Close)来展开菜单时,我们设置包含4个菜单项的<div> (id="mn",menu)的display值设置为'block',将 +  改为 -(<div> id="oc"),修改tilte值为“收缩”,修改导航菜单最外层的<div>(其id为nav)的高度(height)。

        <div id="oc" style="cursor: pointer;float:right;margin-right:10px;"
	onclick="
	var nav=document.getElementById('nav');
	var mn=document.getElementById('mn');
	var oc=document.getElementById('oc');
	with (mn.style) 
	{
		if (display != 'none') 
		{
			//收缩菜单
		    //……
		}
		else
		{
			//展开菜单
			display='block';
			oc.title='收缩'; 
			nav.style.height='155px';
			oc.innerText='-';
		}
	}"
   >
	-
	</div>

3 菜单使用效果

 

4 完整代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- 强制Chromium内核,作用于360浏览器、QQ浏览器等国产双核浏览器,默认使用极速模式 -->
    <meta name="renderer" content="webkit">
    <!-- 强制Chromium内核,作用于其他双核浏览器 -->
    <meta name="force-rendering" content="webkit">
    <!-- 如果有安装Google Chrome Frame插件则强制为Chromium内核,否则强制本机支持的最高版本IE内核,作用于IE浏览器 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
    <title>河池市“圳品”信息</title>
    </head>
<body>
<div id="nav" style="width:215px; height:155px; border:3px double green;top:400px; left:550px;position:fixed;z-index:2;">
    <div style="width:210px; text-align:center;background: green; font-weight:bold; color: white;padding:3px">
        内容导航
        <div style="cursor: pointer; float:right; margin-right:10px;" onclick="document.getElementById(&#39;nav&#39;).style.display=&#39;none&#39;" title="关闭">
            x
        </div>
        <div id="oc" style="cursor: pointer;float:right;margin-right:10px;"
	onclick="
	var nav=document.getElementById('nav');
	var mn=document.getElementById('mn');
	var oc=document.getElementById('oc');
	with (mn.style) 
	{
		if (display != 'none') 
		{
			//收缩菜单
		        display='none'; 
			 nav.style.height='26px'; 
			 oc.title='展开';
			 oc.innerText='+';
		}
		else
		{
			//展开菜单
			display='block';
			oc.title='收缩'; 
			nav.style.height='155px';
			oc.innerText='-';
		}
	}"
   >
	-
	</div>
</div>
    <div id="mn" style="padding:5px;background: #ccffff; opacity:.8; visibility:block;line-height:10px">
        <p style="white-space: normal;">
            <a href="#a1" style="text-decoration:none;color:black; text-shadow: 1px 1px 2px black;">一、按分布区域统计分析</a>
        </p>
        <p style="white-space: normal;">
            <a href="#a2" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black;">二、按产品类别统计分析</a>
        </p>
        <p style="white-space: normal;">
            <a href="#a3" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black">三、按认定时间统计分析</a>
        </p>
        <p style="white-space: normal;">
            <a href="#a4" style="text-decoration:none;color:black;text-shadow: 1px 1px 2px black">四、河池市“圳品”清单</a>
        </p>
    </div>
</div>
<p style="font-size:32pt;text-align:center;">河池市“圳品”信息</p>
<p style="white-space: normal; text-indent: 2em;">
    <anchor id="a1">
        一、<strong>按分布区域统计分析</strong>
    </anchor> 
</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p style="text-indent: 2em;">
    <strong> 
    <anchor id="a2">
        二、按产品类别统计分析
    </anchor> </strong>
</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p style="margin-top: 0px;white-space: normal;text-indent: 2em">
    <strong> 
    <anchor id="a3">
        三、按认定时间统计分析
    </anchor> </strong><br/>
</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p style="white-space: normal;text-indent: 2em">
    <strong>
    <anchor id="a4"> 
        <span style="font-family: 宋体; font-size: 16px; text-indent: 32px;">四、河池市“圳品”清单</span></strong></anchor></span>
</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
</body>

</html>

猜你喜欢

转载自blog.csdn.net/Purpleendurer/article/details/134330715