现在的HTML页面的编写主要分为三部分:
1.(X)HTML作为结构,由资料方编写。
2.CSS作为样式,由美工方编写。
3.JavaScript作为动态处理,由程序方编写。
分离JavaScript代码与HTML页面是一件很重要的事情,尤其是对于大型网站。设计方和代码方通常是两个人或者两个小组分工合作的。作为一个网页设计者,懂JavaScript不应该是条件之一。所以,如果直接在HTML页面中写入JavaScript的话,势必会造成两方效率均下降。
从另一方面来说,结构与样式现在已经成功的分离开。只要网页设计者在块中加入一行<link href="style.css" type="text/css" rel="stylesheet" />之类的标签,然后就不必再理会样式的问题,样式的问题在css样式表中就全都定义了,只需要通过class属性或者独有的id属性为元素进行意义的标识,不需要任何的样式表知识。而JavaScript就没有这么方便。现在的分离方式通常都是在块中加入一行<script src="script.js" type="text/javascript"></script>然后在script.js文件中定义好预定义变量以及全局函数,然后再HTML页中还要添加事件驱动比如<body onload="'init()'">或者<a href="'javascript:alert('click">click me!</a>等等。但是一个网页设计者并不一定能理解onload的含义。如果记性差点,每隔俩小时敲你办公室门问你onload是干什么用的能把你烦死。所以说,这种简单的分离方法分离得不够彻底。分离JavaScript代码应该像分离CSS样式一样,用户只要对元素的意义进行简单的标识就可以自动做好JavaScript的事件驱动。具体的实现方法可以通过DOM来实现。
举一个简单的例子:鼠标指向小图看大图。
smallpic.js
function initSmallPicture()
{
function arraySearch(ary,ele)
{
for(var i=0;i<ary.length;i++)
{
if(ary[i]==ele)
{
return true;
}
}
return false;
}
if(!document.getElementsByTagName) return false;
//遍历所有的<IMG>元素。
var imgs=document.getElementsByTagName("IMG");
for(var i=0;i<imgs.length;i++)
{
//确认该元素的所有class属性值中含有"makeitsmaller"。
//注意,IE和FF对class属性的获取有差别。
var imgClass;
if(imgs[i].className)
imgClass=imgs[i].className.split(' ');
else
imgclass=imgs[i].getAttribute('class').split(' ');
if(!arraySearch(imgClass,"makeitsmaller")) continue;
//更换图片为缩微版本。
var imgurl=imgs[i].getAttribute("src");
var imgurlseprate=imgurl.split('.');
if(imgurlseprate.length<=1)return false;
imgurlseprate[imgurlseprate.length-2]+="_s";
var imgnewurl=imgurlseprate.join('.');
imgs[i].setAttribute("src",imgnewurl);
//存储图片两个版本的路径。
imgs[i].setAttribute("bigsrc",imgurl);
imgs[i].setAttribute("smallsrc",imgnewurl);
//为图片写入事件处理程序。
var overfunc=function()
{
this.setAttribute("src",this.getAttribute("bigsrc"));
return true;
}
var outfunc=function()
{
this.setAttribute("src",this.getAttribute("smallsrc"));
return true;
}
if(typeof(imgs[i].onmouseover)=="function")
{
var oldfunc=imgs[i].onmouseover;
imgs[i].onmouseover=function()
{
oldfunc();
overfunc();
}
}
else
{
imgs[i].onmouseover=overfunc;
}
if(typeof(imgs[i].onmouseout)=="function")
{
var oldfunc=imgs[i].onmouseout;
imgs[i].onmouseout=function()
{
oldfunc();
outfunc();
}
}
else
{
imgs[i].onmouseout=outfunc;
}
}
}
//在网页读取完毕后初始化。
if(typeof(window.onload)=="function")
{
var oldfunc=window.onload;
window.onload=function()
{
oldfunc();
initSmallPicture();
}
}
else
{
window.onload=initSmallPicture;
}
//以上代码不知道应该怎样写成函数,貌似window.onload这类Handle是传值不是传址。
index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="smallpic.js"></script>
</head>
<body>
<img src="6.jpg" class="makeitsmaller" />
</body>
</html>
这样一来,在HTML业中不需要任何Script代码,不需要改变成缩略图路径,只要在需要做缩略图的图片的class属性中增加一条"makeitsmaller"就可以做到缩略图效果了。
但是这个办法并不是最完美的,比如使用Javascript改变img元素的class属性就不会有效果,除非重新运行一次 initSmallPicture而且只能添加不能去除。而且使用CSS的:hover行为定义比这个简单的多。只不过是用这个作为例子说明分离 JavaScript的方法。
使用JavaScript完全分离还可以做到另外一种效果——定义新属性。
一般来说,网页设计人员中懂(X)HTML的人比懂JavaScript的人要多得多。所以说,如果把JavaScript行为转为HTML行为,势必会受到网页设计人员的欢迎。下面举一个例子,表格<td>元素两种背景颜色交替显示。可以在<table>中定义 ColorTable属性,包含3个部分:行交替还是列交替、颜色1、颜色2,用逗号隔开。具体代码如下。
clrtable.js
// clrtable.js
function colorTable()
{
if(!document.getElementsByTagName) return false;
var tables=document.getElementsByTagName("TABLE");
for(var tb=0;tb<tables.length;tb++)
{
if(!tables[tb].getAttribute("ColorTable"))continue;
var tableMessage=tables[tb].getAttribute("ColorTable");
var tableAttributes=tables[tb].getAttribute("ColorTable").split(",");
if(tableAttributes.length!=3)continue;
if(tableAttributes[0]!='row'&&tableAttributes[0]!='col')continue;
var iscol=(tableAttributes[0]=='col');
var rows=tables[tb].getElementsByTagName("TR");
for(var tr=0;tr<rows.length;tr++)
{
if(iscol)
rows[tr].style.backgroundColor=tableAttributes[1+tr%2];
else
{
cells=rows[tr].getElementsByTagName("TD");
for(var td=0;td<cells.length;td++)
cells[td].style.backgroundColor=tableAttributes[1+td%2];
}
}
}
return true;
}
if(typeof(window.onload)=="function")
{
oldfunc=window.onload;
window.onload=function()
{
oldfunc();
colorTable();
}
}
else
{
window.onload=colorTable;
}
test.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>clrTable.js test</title>
<script type="text/javascript" src="clrtable.js"></script>
</head>
<body>
<table ColorTable="col,white,grey">
<tr><td>0,0</td><td>1,0</td><td>2,0</td><td>3,0</td></tr>
<tr><td>0,1</td><td>1,1</td><td>2,1</td><td>3,1</td></tr>
<tr><td>0,2</td><td>1,2</td><td>2,2</td><td>3,2</td></tr>
<tr><td>0,3</td><td>1,3</td><td>2,3</td><td>3,3</td></tr>
</table>
</body>
</html>
从以上代码可以看出增加的属性和标准HTML属性看起来并无任何区别。同时,对于网页设计人员来说有一个这样的HTML属性会在网页设计中带来很多便利。
以上代码在IE6\FF2\Opera9中测试通过。
分享到:
相关推荐
《网页设计与制作项目教程(HTML+CSS+JavaScript)》是一部综合性的教程,旨在帮助学习者深入理解和掌握网页设计的核心技术。本教程结合了HTML、CSS和JavaScript这三种关键技术,它们是构建现代网页的基石。 HTML...
它允许我们将样式信息(如颜色、字体、布局等)与HTML内容分离,实现内容与表现的解耦。在本课程设计中,CSS将发挥关键作用,帮助你美化页面,创建响应式布局,调整元素间距,以及应用过渡和动画效果。你需要学习盒...
网页设计与开发是数字时代的重要技能之一,涵盖了HTML、CSS和JavaScript这三种核心技术。这些技术共同构成了网页的基础架构,使得我们可以构建出交互式、动态且视觉吸引人的网站。 HTML(HyperText Markup Language...
ASP.NET也支持异步JavaScript和XML(AJAX)技术,通过Partial Postback实现部分页面更新,这在高亮显示代码时特别有用,因为无需刷新整个页面就能更新代码高亮。 8. **MVC架构** ASP.NET MVC(Model-View-...
- **DIV+CSS**: 这种布局方法强调内容与表现分离的原则,即使用`<div>`等容器元素来组织内容,而用CSS来控制这些内容的样式和布局。这种方式使得网页更加灵活、易于维护,并且能够更好地适应不同屏幕尺寸。 - **响应...
接着,CSS(Cascading Style Sheets)是用于控制网页样式的语言,它能分离内容与表现,使网页设计更加灵活和可维护。CSS可以设置颜色、字体、布局和响应式设计等,例如使用`background-color`、`font-size`、`...
CSS通过选择器和属性定义元素的样式,如颜色、字体、布局等,实现了内容与表现的分离,提高了代码的可维护性和复用性。 3.2 DIV+CSS布局实战技巧 DIV作为块级元素,常用于构建网页布局,配合CSS可以实现灵活的布局...
**HTML5与CSS3基础知识** - **HTML5**: 是一种标记语言,用于构建网页结构的基础。它引入了许多新的元素和属性,包括语义化的元素如`<header>`、`<footer>`、`<nav>`等,以及多媒体元素如`<video>`和`<audio>`。 ...
- **CSS引用:** 通过`<link>`标签引入外部样式表,使样式与内容分离,便于管理和维护。 - **头部元信息:** `meta`标签用于定义网页的字符编码等元信息。 - **页面元素:** 如`<div>`用于定义不同的区块,`<a>`用于...
2. **样式与特效**:使用CSS对页面进行了美化,同时通过JavaScript添加了一些动态效果,如图片轮播等。 3. **多媒体运用**:在网站中嵌入了GIF动图、视频和音乐等多媒体元素,增加了网站的趣味性和互动性。 #### 六...
它将内容与样式分离,使得页面的重构变得更加简单。同时,这种布局方式更有利于SEO优化,提升搜索引擎排名。 - **布局技巧**:为了实现顶部导航及底部区域背景色为100%宽度的效果,可以利用CSS中的`width: 100%`属性...
- HTML与XHTML的基础语法和语义化标签。 - CSS的选择器、盒模型、布局方式等基本概念。 - JavaScript的基本数据类型、变量声明、流程控制(如循环和条件判断)等。 - 如何将JavaScript与HTML结合,实现动态效果...
JSP(Java Server Pages)是一种基于Java的动态网页开发技术,它允许开发者将HTML、CSS、JavaScript等静态内容与Java代码结合在一起,以创建交互式的Web应用。在本"JSP开发技术原理与实践教程——代码.rar"压缩包中...
它将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可扩展性。Spring MVC是Java Web中最受欢迎的MVC框架之一,提供了强大的依赖注入、AOP(面向切面编程)等功能。 五、Java EE容器 Java EE容器如Tomcat、...
本项目为HTML5期末考核大作业源码,旨在通过实际动手设计与制作,帮助学生掌握并应用HTML、CSS以及JavaScript基础知识,构建一个具有丰富功能和个人特色的网页。该网页以明星彭于晏为主题,涵盖多种场景(如个人、...
《jQuery JavaScript与CSS开发入门经典》是一本专为初学者设计的编程指南,旨在帮助读者快速掌握前端开发的核心技术——jQuery、JavaScript和CSS。通过学习这本书的源码,你可以深入理解这三个关键技术的工作原理,...
**HTML与CSS基础布局** - **HTML5文档类型声明**:`<!DOCTYPE html>`确保浏览器以标准模式渲染网页。 - **基本HTML结构**:包括`<html>`、`<head>`、`<body>`等基本标签,这些标签构成了HTML文档的基本框架。 - ...
它结合了HTML、脚本语言(如JavaScript)和Java代码,允许开发者构建交互式的Web应用程序。本教程的目标是帮助初学者从零开始理解JSP的核心概念和技术,通过实际操作学习JSP动态网页的开发。 1. **JSP基本结构** ...
【标题】"毕业设计——旅游管理系统源代码"揭示了这个项目是针对旅游管理的一个软件应用,主要用于提升旅游业的运营效率和服务质量。系统的核心是通过软件工程的方法,利用特定的技术框架来实现对旅游业务的数字化...