
前些日子看到小志发表的『xhtml+css实例』不规则导航的制作,刚好今天遇到了一个这样的问题。就对小志的修改完善了一下,相信有很多朋友都会遇到同样的问题。就把这个demo发出来,和大家分享一下。
预览地址:不规则导航条示例
具体技巧说明,请参考小志的博客:
http://www.linxz.cn/blog2/article.asp?id=128

前些日子看到小志发表的『xhtml+css实例』不规则导航的制作,刚好今天遇到了一个这样的问题。就对小志的修改完善了一下,相信有很多朋友都会遇到同样的问题。就把这个demo发出来,和大家分享一下。
预览地址:不规则导航条示例
具体技巧说明,请参考小志的博客:
http://www.linxz.cn/blog2/article.asp?id=128

通常我们在制作上图的时候,会分别给四个div加上不同的css属性,来实现中间间隔。但我们更希望的是不需要对html标签做标识,直接能通过css实现,今天在论坛上小志提出了一个很不错的解决方案。使用overflow:hidden属性。或许很多人已经是这样用了,我没用过,觉得耳目一新。呵呵。其实道理很简单,我们按照正常的设置li的margin-right、margin-bottom属性,这样的结果自然会比我们期望的要多出来右边和下方的,这个时候我们通过ul的父级来设置width/height属性,然后overflow:hidden把多余的隐藏掉。好方法,呵呵!
请看效果预览页面:overflow排版
解决方法请看图:


预览地址:随机显示图片Demo
论坛经常有人会问到用CSS如何美化Select标签,其实但凡你看到很酷的都是用javascript来实现的。昨天试着做了一下,基本实现的初级功能。拿出来和大家一起分享一下。先可以看一下预览效果:js实现select标签美化demo。
【功能需求】
1、调用要方便,做好之后应该像这样:
function loadSelect(selectobj){
//传入一个select对象就能将他的样式美化
}
2、不改变原有表单项,表单的页面代码不去破坏:
【实现思路】
第一步:将表单中的select隐藏起来。
为什么?很简单,因为这家伙太顽固了,用css根本搞不出来你想要的。所以把它杀掉。
第二步:用脚本找到select标签在网页上的绝对位置。
我们在那个位置上用DIV标签做个假的、好看点的来当他的替身。
第三步:用脚本把select标签中的值读出来。
虽然藏起来了,但它里边的options我们还有用呢,统统取过来。
第四步:当用户点击select标签的替身,也就是div的时候。我们再用一个div浮在上一个div的下边,这个就是options的替身了。
大致上就是这样了,接下来我们一步一步去实现它!
【准备工作】
1、想好你要把select美化成什么样子,并准备好相应的图片。我准备了两张小图,就是下拉箭头1和下拉箭头2,1是默认样式,2是鼠标移过来的样式。
2、写好一个普通的表单递交页面,比如下边这个。注意我给select定义了基本的CSS样式、在头部添加了调用js文件的代码、在body中添加了调用函数的脚本。
【编写javascript】
新建一个js文件并保存为select.js,剩下的工作我们全部在这个js中去完成。
函数名:loadSelect(obj);
参数:select对象
相关函数:
function Offset(e)
//取标签的绝对位置
{
var t = e.offsetTop;
var l = e.offsetLeft;
var w = e.offsetWidth;
var h = e.offsetHeight-2;
while(e=e.offsetParent)
{
t+=e.offsetTop;
l+=e.offsetLeft;
}
return {
top : t,
left : l,
width : w,
height : h
}
}
第一步:把select的绝对位置记录下来。一会替身上来就知道应该站那里了。
最后这个比较复杂一点,再解释一下,我们在做这一步之前,select的样子已经出来了,下一步就是再加一个div去模仿select被点击之后出现的下拉选项了。我们可以讲select标签的options通过javascript提取出来,把它写成这样:
基本上就这样了。还有些缺陷,有时间大家可以一起补充!
预览地址:javascript模拟select下拉
脚本下载:select.js
[本文由于在pjblog2wp过程中丢失了一些信息,请大家注意看demo页面的代码。]
今天蓝色的moby问我找一个树型菜单。就随便Google了一遍,没有找到合适的。obout的AJAX树控件做得很好看,也很专业。但不是基于标准设计的,而且代码非常的复杂。
就自己写了个简洁版的,只有二级的。预览地址
很多朋友在写页面代码的时候会过多地去考虑布局如何实现,其实是一种错误的思路,文档结构是可以脱离表现而存在的。先不要去管显示效果,这样才能写出比较好的页面代码,不至于回头一看全是div包着div的。
行为层要完成:
1:展开与收缩功能,其实就是display属性设置是否显示。
2:展开与收缩时的图标变化,用两张图片一个加号一个减号,用javascript变换背景图。
3:选中时的样式,当用户点击展开某一项时,给用户做个记号。
本文讨论的是在web标准普及的形势下,网站程序员的定位以及如何与设计师配合开发符合web标准的网站项目。
本文适合的读者是传统TABLE布局下分工不是非常明晰的程序员。
1:学习web标准,让你的工作变得更加简单。
web标准是大势所趋,所以作为网站程序员。你必须洗脑,必须去学习web标准。去重新认识html标签,去了解如何让程序输出页面需要的代码。
比如:

上边是美工出来的效果图,下边是符合标准的程序代码:
Dim oHtml
set rs=server.createobject("adodb.recordset")
Sql = "select top 10 id,Title From tbl_News order by id desc"
rs.open sql,conn,1,1
oHtml="<ul>"
do while not rs.eof
oHtml=oHtml & "<li><a href=""shownews.asp?id=" & rs("id") & """ title=""" & rs("title") & """>" & rs("title") & "</a></li>"
rs.movenext
loop
oHtml=oHtml & "</ul>"
rs.close
set rs=nothing
response.write (oHtml)
而如果是传统的TABLE布局下,程序员要写的HTML代码就会多很多,要写出TABLE、要判断什么时候输出TR来换行、要在每条新闻的前边加个一个IMG来输出小图标、要用程序去控制输出的标题长度。所有的工作都需要先出页面代码,程序员才能去写出这段程序。
对于程序员而言,你应该把web标准当成是一种福音,你应该把它当圣经一样去读,去了解页面代码到底需要什么,明白之后你就会发现。你比以前要轻松多了。由于web标准注重的是表现与内容相脱离,而程序只负责内容数据。从此你就不再需要考虑用程序代码如何控制隔行换色、一行分几列输出等等。你需要去做的,就是向页面输出最直接的内容,没有任何装饰的内容。
当然如果你是用.net开发的话,你就可以更彻底一点了。你可以完全将工作重点放在建立对象、类库、数据访问等,向表现层提供方法即可。下边的例子是我以前做项目的,应该有点参考价值。
2:网站程序员,别让HTML标签阻挡了你的视线。
如果你觉得你真的非常讨厌繁琐的HTML标签,而且自己的学习方向也不在网站的表现层,那你就和HTML标签彻底地说再见吧。
我曾经在传统桌面软件开发的公司工作,程序员都不会HTML,网站项目紧的时候又不得不让他们来帮忙。我们就拿着Visual Studio .Net 2003自带的几个例子仔细分析,按照面向对象的结构化分层开发模式,也能非常好的进行配合。以新闻模块的开发为例:
第一步:网站程序员可以按需求分析进行数据库设计,你可以负责建表、编写存储过程。这类的事情程序员都非常的熟悉。
第二步:定义对象。将网站的信息对象化,比如:
Public Class News
Protected _id As Integer
Protected _typeId As Integer
Protected _title As String
Protected _author As String
Protected _original As String
Protected _updateTime As DateTime
Protected _content As String
Protected _clickCount As Integer
Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal Value As Integer)
_id = Value
End Set
End Property
Public Property TypeId() As Integer
Get
Return _typeId
End Get
Set(ByVal Value As Integer)
_typeId = Value
End Set
End Property
Public Property Title() As String
End Property
Public Property Author() As String
End Property
Public Property original() As String
End Property
Public Property UpdateTime() As DateTime
End Property
Public Property Content() As String
End Property
Public Property ClickCount() As Integer
End Property
End Class
就像这样,把网站里所有的表都试着对象化。然后再定义对象相关的记录集,上边定义的是单个的新闻对象,再定义一个新闻的记录集。
Public Class Newss ...... End Class
第三步:定义一套公共的数据访问方法。
定义一些操纵数据库、执行存储过程的公共方法。
第四步:编写基于对象的方法层。如:
Public Function ReadNews(ByVal ID As Integer) As News
End Function
函数返回的就是一个新闻对象。根据功能的需要,一般还会定义一些相关的函数,如:
'读取新闻列表 Public Function ReadNewss(ByVal newsType As eNewsType, ByVal nCount As Integer) As News End Function '增加一新闻 Public Function InsertNews(ByVal n As News) As Integer End Function '更新一条新闻 Public Function UpdateNews(ByVal n As News) As Integer End Function '删除一条新闻 Public Function DeleteNews(ByVal ID As Integer) As Integer End Function
这样来做,网站开发可以分成对象层、数据访问层、方法层、表现层。而程序员则只需要提供表现层所需要的方法。这样一来,在表现层需要显示新闻列表时,页面设计师只需要用.net中的Repeater控件,如下代码:
<asp:Repeater ID="topNewsList" runat="server" >
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><a href="shownews.asp?id=<%#Container.DataItem("id")%>"><%#Container.DataItem("title")%></a></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
而在表现层的程序代码中我们只需要加上:
topNewsList.DataSource = New facade.newsFacade().ReadNewss(eNewsType, newsCount)
这样的话,程序员基本上可以与HTML完全脱离了。而且这样的话,整个项目组的成员都可以并行工作了。能非常明显地提高整个项目的开发效率。况且现在web2.0模式的兴起,对后台数据库开发提出了更高的要求。如豆瓣网、365Kit等网站,后台的数据库挖掘工作是非常复杂的。所以在分工明晰的今天,除了HTML代码,其它有很多更重要的工作等待网站程序员去做。
3:以用户为中心的设计,离不开前端开发工程师。
如果你觉得脱离了熟悉的HTML代码,你有点舍不得的话,不要紧。干脆将自己推到web技术的风口浪尖。做一个成产品设计关系密切的前台开发工程师。
随着网络、计算机硬件设施的不断提升,我们正在朝着富客户端的方向前进。为了产品的易用性,给网站程序员提出了非常高的要求。前台开发工程师这个岗位也越来越显得重要。这个职位应该说也是近年才有的,而这个职位也不是一般的网页设计师能胜任的,所以网站程序员也自然分开了,分后台开发工程师和前台开发工程师,这个方向应该说也是一个非常好的选择。而这个则需要你对web标准有一个比较全面的认识。既需要你对javascript非常了解,同时也需要你对DOM文档对象模型、CSS表现层样式代码、ajax异步都非常了解。相关的例子就非常多了,比如:在线注册表单的即时检测、密码强度的提示、多级下拉菜单的联动等。对于改善用户体验、提高网站访问速度都有非常重要的作用。
1、将css与javascript全部用下边的方法分离到外部文件中去。
link rel="stylesheet" type="text/css" href="css/style.css" media="all" /> <script type="text/javascript" src="include/common.js"></script>
让html代码最大可能的只是用来显示实际内容。
2、采用xhtml代码编写页面,抛弃传统Table布局模式,去掉页面中的例如font/bgcolor等格式化控制标签。用符合web标准的代码来制作页面。这样能够让xhtml代码结构化、语义化。提高页面代码的可读性。
3、采用了上边的方法你会发现你的html代码会变得非常小,当然如果可以的话。让它变得更小。太大的页面会影响搜索引擎的处理速度。一般通过xhtml+css设计的网页,html代码应该可以控制在50K以内。大家可以去看一下用web标准重构得比较好的网站。
4、用好图片的alt标签,合理的使用页面关键字去描述图片,这样能增加页面的关键字密度。
5、尽可能少地使用javascript来做与内容相关的事情,例如用document.write去显示正文。这样会影响搜索引擎对页面内容的搜索。
6、千万不要去javascript来实现你网站的导航。那样会让搜索引擎迷失方向。
7、每个页面的关键字尽可能出现在页面的标题,也就是头部的Title标签中。当然,要合理应用,太要太长,更别用大量与页面内容无关的网络热门关键字。因为那就不是优化而是在作弊。
8、尽量在每个页面代码中合理使用<h1><h2>等标签并让你的关键字出现在<h1>标签中,让页面的文档结构更清晰。
我是做网页制作的,所以SEO的诸多专业技术及算法我都不是非常了解。如果您想了解更多关于这方法的知识,建议您访问一些国内知名的SEO优化类的网站,比如点石互动等。在那里你能查阅到很多关于“反向链接”、“页面PR值”等专业知识。这里只是将我在页面制作的过程中涉及到的一些细节问题拿出来和大家探讨一下。由此也可以说明为什么基于web标准设计的网站会更有利于SEO了。
如果您不打算花钱去请专业的SEOer来为您的网站做优化,那么可以让页面制作人员在制作上注意一些细节。相信这样免费的一些细节也能达到一个比较好的效果。
暂时总结以上几点,若有遗漏欢迎补上。
页面制作人员应该了解的知识
如果说美工只负责出效果图,程序员只负责数据处理的话。那么网页制作人员需要负责的东西无疑是最多的。
5-8内容为个人体会,最重要的是上边四点。
我所使用的工具软件列表
我推荐的资源列表
网站
教程
Javascript是什么?二年前,我说它是一个小丑,因为那时候在很多网页制作人员的眼中,它就约等于特效,比如跑马灯效果、弹出窗口、网页关闭时弹出一个欢迎再来等等,还有专门的网站来收集javascript的特效,并将其归类为窗口特效、文字特效、图片特效等。这足以说明几年前javascript在网页制作领域所处于的小丑地位了。
但现在,如果你还说javascript是小丑,我会反对你。自从AJAX应用的兴起、web标准的提倡,可以说javascript和asp、asp.net、jsp等后台开发语言一样,处于不可轻视的地位。这就是“网页前台开发”。
网页,我认为大致可分为二类:一类为呈现内容型的,如一般的内容页面。另一类就是注重应用型的,如以Gmail为首的。当然,一般的网页都是二者都有的,只是孰轻孰重罢了。在注重用户体验、交互的今天,网页前台脚本开发担任了非常重要的角色。
网页制作行业的分工与合作模式现在还处于摸索阶段,所以说,对于行为层代码的编写工作到底属于网页制作人员还是属于开发人员的。我觉得应该看各个开发团队的具体情况而定。不管怎么样,作为页面制作人员我觉得还是应该对Javascript以及DOM有所了解的。