JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

news/2024/5/21 3:49:12/文章来源:https://blog.csdn.net/weixin_33724659/article/details/93405186

一、(一)中的代码还可以修改的地方。

在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include进来。这样,当要对导航栏进行修改时,只需要修改一个文件,而不用修改所有相关的页面文件。不过,我这里没有这样做,没有抽取出来。

二、实现当前页面的标识+不同页面的head头部背景图片的改变

现在在(一)实现的基础之上,来实现导航栏当前所选页面的菜单项高亮显示,让访问者一路了然知道“我正在这里”。

首先,修改color.css文件,给菜单项增加一个class="here"属性,也就是说等一下这个here是使用javascript动态增加的一个属性。现在先在控制颜色的color.css中设置here的样式声明。追加这个代码:

复制代码
#navigation a.here:link,
#navigation a.here:visited,
#navigation a.here:hover,
#navigation a.here:active{color:#eef;background-color: #799;
}
复制代码

此时,你或者可以先尝试一下,给导航栏中的其中一个<a>标签添加一个class="here"的属性,可以看到该菜单项高亮显示。

 

然后,来创建一个global.js,存放所有页面会用到的js。

在《JavaScript DOM编程艺术》里面,前面几章给我们写了很多个可以使用的函数。现在把这几个有用的函数添加到global.js的文件里面来。

复制代码
/******************绑定函数到onload事件上的函数*************************/
function addLoadEvent(func){                               //参数func为页面加载完成要执行的函数var oldonload = window.onload;                         //把现有的window.onload事件处理函数的值存入变量oldonload中if(typeof window.onload != 'function'){                //判断  如果onload处理函数没绑定任何函数,则添加新函数;否则,追加新函数window.onload = func;}else{window.onload = function(){                        //这里使用了匿名函数包纳两个函数
            oldonload();func();}}
}/*******************跟JavaScript中的insertBefore方法对应的一个函数*******************/
function insertAfter(newElement,targetElement){var parent = targetElement.parentNode;if(parent.lastChild == targetElement){parent.appendChild(newElement);}else{parent.insertBefore(newElement,targetElement.nextElementSibling);}
}/******************动态添加class属性的函数*****************************/
function addClass(element,value){                                    //调用该函数,就是创建一个例如:class="here",给标签增加了增加了这么一个属性if(!element.className){element.className = value;}else{newClassName = element.className;newClassName +=" ";newClassName += value;element.className = newClassName;}
}
复制代码

 

 添加高亮显示的函数

复制代码
/*****************高亮显示导航栏当前点击菜单***************************/
function highlightPage(){//判断if(!document.getElementById) return false;if(!document.getElementsByName) return false;if(!document.getElementById("navigation")) return false;//获取var nav = document.getElementById("navigation");var links = document.getElementsByTagName("a");//逻辑操作for(var i =0; i<links.length; i++){var linkurl = links[i].getAttribute("href");            //获取具有href的属性值var currenturl = document.location.href;                //获取当前的href属性值if(currenturl.indexOf(linkurl) != -1){links[i].className = "here";var linktext = links[i].lastChild.nodeValue.toLowerCase();  //把提取出来的文本转换为小写document.body.setAttribute("id",linktext);}}
}
addLoadEvent(highlightPage);                                   //最后调用该函数
复制代码

 

(1) if(currenturl.indexOf(linkurl) != -1) indexOf()方法,可以在一个字符串中找一个子串的位置,,没有找到,返回-1,找到返回所在的位置。
(2)
var linktext = links[i].lastChild.nodeValue.toLowerCase(); //把提取出来的文本转换为小写
document.body.setAttribute("id",linktext);  获取到当前链接的最后一个子节点的值——也就是说当前链接的标识文本。 当前链接的是如此这般的:<li><a href="webDesign.html">Home</a></li>,那么获取到的最后一个子节点的值就是”Home“,此时再转换为小写,最后设置到body元素里。
这两行代码可以给body元素分别设置一个唯一的id属性值。如图:  此时主页的body是有一个id=”home“,另外我们还有一个id="header"的div,结合这两个id,就可以给不同的页面设置不同的背景图片 
3、在webdesign.css添加设置每个页面的header的背景图片
复制代码
#about #header{background-image: url(../images/basshead.jpg);
}
#photos #header{background-image: url(../images/bassist.jpg);
}
#live #header{background-image: url(../images/drummer.jpg);
}
#contact #header{background-image: url(../images/lineup.jpg);
}
复制代码

 

4、为了看到效果,我们先写出一个about.html的页面,来看看导航栏菜单项和header的背景图片是否改变了
about.html
复制代码
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>webDesign</title><link rel="stylesheet" href="style/webdesign.css" /><link rel="stylesheet" href="style/color.css" /><link rel="stylesheet" href="style/typography.css" /><script type="text/javascript" src="js/global.js" ></script></head><body><div id="header"><img src="images/weblogo.gif" /></div><div id="navigation"><ul><li><a href="webDesign.html">Home</a></li><li><a href="about.html">about</a></li><li><a href="photos.html">Photos</a></li><li><a href="live.html">Live</a></li><li><a href="contact.html">Contact</a></li></ul></div><!--header部分结束--><div id="content"><h1>About the band</h1><ul id="internalnav"><li><a href="#jay">Jay Skript</a></li><li><a href="#domsters">The Domsters</a></li></ul><div class="section" id="jay"><h2> Jay Skipt</h2><p>Jay Skript is going to rock your world</p><p>Jay Skript is going to rock your world</p><p>Jay Skript is going to rock your world</p><p>Jay Skript is going to rock your world</p><p>Jay Skript is going to rock your world</p></div><div class="section" id="domsters"><h2> The Domsters</h2><p>The Domsters have been around,in one form or another,for almost as long.It's only in the past few years taht The Domsters.</p></div></div></body>
</html>
复制代码
效果截图:两个效果都实现了 

转载于:https://www.cnblogs.com/MarchThree/p/3734723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_805811.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web安全 DDoS攻击.(让网站无法正常地提供服务.)

DDoS攻击的概括 分布式拒绝服务 (英文意思是Distributed Denial of Service&#xff0c;简称DDoS) 是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击.&#xff08;消耗目…

网络安全 社会工程学--钓鱼网站的制作和利用(让你了解整个钓鱼网站 背后的秘密.)

钓鱼网站的概括 顾名思义钓鱼网站&#xff0c;就是愿者上钩的网站一般的这些网站都是有鱼饵。一般都是贪图小便宜的人才会损失很大&#xff0c;所以在我们进行网购的时候&#xff0c;一定要仔细识别网站平台的真假。不能因为便宜就轻易相信并交易。而这些钓鱼网站即使做的再惟…

Web安全 BurpSuite渗透常用工具.(包含:截包分析,暴力破解,修改包数据,扫描网站等很多功能)

BurpSuite概括 BurpSuite是一款集成化的渗透测试工具&#xff0c;用起来也很简单、方便。包含了很多功能&#xff08;包含&#xff1a;截包分析&#xff0c;暴力破解&#xff0c;修改包数据&#xff0c;扫描网站等很多功能&#xff09;&#xff0c;用得最多的应该是开代理截包…

Day27-Http实现客户端登录网站案例

文章目录&#x1f4e2;题目&#x1f4e2;效果图&#x1f431;‍&#x1f680;一、开发主页面MainActivity&#x1f3af;1.编写主页布局activity_main.xml&#x1f3af;2.编写主页MainActivity.java&#x1f431;‍&#x1f680;二、开发LoginOkActivity页面&#x1f3af;1.编写…

前端的第二十六天(初识AJAX、客户端和服务器、网络相关概念、通信协议、服务器环境的安装、网站、PHP基础语法)

一、初识AJAX 1.url地址 展示网页 、提供数据 2.异步刷新 避免整个界面刷新&#xff0c;加载更快、省流量 3.同步刷新 不影响当前界面现有的操作 二、客户端与服务器 一般情况下服务器的硬件配置都要高一些&#xff0c;因为访问量大的话容易宕机。 像淘宝双11的时候&a…

微软发布IIS漏洞补丁,影响我国五分之一网站

2015年4月14日&#xff0c;微软发布月度例行安全公告&#xff0c;共释放出11项更新&#xff0c;一举修复包括Windows操作系统、IE浏览器、Office办公软件、.NET Framework、Server软件、Office Services和Web Apps在内的26个安全漏洞。在这11项更新中&#xff0c;有4项更新综合…

荷露叮咚wp建站系列视频课程2.wordpress安装

偶们中国人的网站&#xff0c;当然是下载中文版的啦&#xff0c;官方最新的通常是英文版的&#xff0c;当然我们也是有专门的团队会第一时间汉化的&#xff0c;你只需下载其安装文件即可。&#xff08;下载安装主要是为了学习了调试主题或插件&#xff0c;如果直接配置可用的网…

html新手常见错误,五个常见的SEO错误:新手SEO都会遇到的问题!

进入搜索引擎优化领域&#xff0c;门槛其实并不高&#xff0c;基础性的知识就那么多&#xff0c;但有个小问题是&#xff0c;很多SEO教程对部分内容解释并不详尽&#xff0c;容易造成很多错误的观念&#xff0c;特别是对于SEO初学者而言&#xff0c;正确的理解SEO基础知识很重要…

Java查问题网站,JAVA线上故障排查套路

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…

从腾讯视频看大数据与网站运营

2015年大数据可谓炙手可热&#xff0c;大到政府服务&#xff0c;小到个人生活&#xff0c;无一不深受大数据影响。各行各业也都试图在大数据的指引下找寻新的方向&#xff0c;作为与社会潮流趋势脱不开轨的广大站长们&#xff0c;一定也在为大数据与网站运营相结合而绞尽脑汁。…

网站文件下载链接

如何将网站上的文件让别人下载呢&#xff1f; 最简单的方式就是直接把文件的链接地址放到页面上&#xff0c;如一个a链接&#xff0c;点击该链接直接访问文件&#xff0c;即会下载。 经过测试&#xff0c;不提供文件地址&#xff0c;访问一个servlet&#xff0c;返回该文件地址…

细谈Joomla建站之旅----我的启示录

2019独角兽企业重金招聘Python工程师标准>>> 欢迎来到Joomla建站之旅。 介绍一个自由免费的优秀建站软件Joomla&#xff0c;以及怎样自行管理用Joomla所构建的网站。当然顺带着我们也会在网站的规划和建设上给读者一些非常给力的建议。 为了方便大家认识Joomla&am…

使用git提交部署静态网站

15 本地网站上传 git gitee git软件可以将我们的本地网站提交上传到远程仓库&#xff08;码云gitee里面&#xff09; 码云就是远程仓库&#xff0c;类似于服务器。 15.1 使用方法 下载安装git 如果第一次用git&#xff0c;要先配置好全局选项 git config --global user.na…

阿里云部署Java网站和微信开发调试心得技巧(上)

阿里云部署Java网站和微信开发调试心得技巧&#xff08;上&#xff09;本篇手记旨在帮助大家从0开始&#xff1a; 申请阿里云服务器搭建出程序的执行环境在服务器上发布并运行自己的web project域名解析微信测试号的申请与连接以获取微信用户信息全篇文章主要以如何去完成目标为…

美参议院已启用全网站HTPPs加密

美国参议员的网站&#xff0c;近日悄然发生了一个变化。当你在访问的时候&#xff0c;可能会留意到浏览器地址栏会显示一个绿色的锁状图标 —— 没错&#xff0c;其已经加强了整个网站域名的安全性。现在&#xff0c;百余名参议员的网站&#xff0c;都已经默认启用 HTTPs 加密通…

使用 Hexo 创建项目文档网站

当我们发布一个开源项目的时候&#xff0c;最重要的事情之一就是要创建项目文档。对使用项目的用户来说&#xff0c;文档是非常有必要的&#xff0c;通常我们可以使用下面这些方式来创建文档&#xff1a; GitHub Wiki&#xff1a;在 Github 上我们可以为每个项目都创建一个 wik…

三级目录怎么做html,Laravel 实现前台网站三级目录

友情提示&#xff1a;此篇文章大约需要阅读 6分钟24秒&#xff0c;不足之处请多指教&#xff0c;感谢您的阅读。效果展示PS&#xff1a;由于是模仿联想电商前台&#xff0c;前端代码借鉴官网代码。联想商城三级目录数据库设计CREATE TABLE dzushop_types (id int(10) unsigned …

支付宝手机网站支付开发指引

支付宝手机网站支付 支付宝手机网站支付是支付宝提供的多种支付方式之一。适用于在手机端网站配合业务流程完成支付宝支付。此接口不仅可以在手机网页中唤起“支付宝app”客户端。也可以继续使用手机浏览器版的收银台完成支付。 一、前期准备 1.1签约“手机网站支付”功能。 使…

自己的个人网站js中国正逐步完善着。

我的个人网站js中国正在逐步完善着,现在网站系统已经确定。系统采用免费开源的php系统。 现在系统架构为cmsbbswiki 将这些版块的logo放在这里秀一下&#xff01; 这是js中国主站的logo js中国 坛子的logojsbbs这当然是wiki的了jswiki这个wiki程序是最近刚放上去的,目的很简单,…

[Go]基于Go语言的Web路由转发,多个网站共享一个端口(新版本,支持WebSocket)

之前编写过一个Web路由转发&#xff0c;可以参考我之前的博客 之前的版本具有很多问题&#xff0c;所前段时间一直很忙&#xff0c;在做我的新东西和实习&#xff0c;所以就一直没更新 今天忙里偷闲&#xff0c;就更新一下Web路由 主要解决的还是多语言Web开发时&#xff0c;整…