﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-花生的BLOG-文章分类-CSS/JAVASCRIPT</title><link>http://www.blogjava.net/supernaturalmagician/category/21015.html</link><description>一切皆有可能</description><language>zh-cn</language><lastBuildDate>Tue, 27 Mar 2007 11:48:57 GMT</lastBuildDate><pubDate>Tue, 27 Mar 2007 11:48:57 GMT</pubDate><ttl>60</ttl><item><title>使用HTML＋CSS编写一个灵活的Tab页(转贴)</title><link>http://www.blogjava.net/supernaturalmagician/articles/css.html</link><dc:creator>花生</dc:creator><author>花生</author><pubDate>Tue, 27 Mar 2007 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/supernaturalmagician/articles/css.html</guid><wfw:comment>http://www.blogjava.net/supernaturalmagician/comments/106583.html</wfw:comment><comments>http://www.blogjava.net/supernaturalmagician/articles/css.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supernaturalmagician/comments/commentRss/106583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supernaturalmagician/services/trackbacks/106583.html</trackback:ping><description><![CDATA[
		<div style="MARGIN-TOP: 1px; MARGIN-LEFT: 15px">
				<h2> </h2>
		</div>
		<div style="MARGIN-TOP: 10px; MARGIN-LEFT: 15px; OVERFLOW: auto">
				<table width="100%">
						<tbody>
								<tr>
										<td>
												<p>首先看一下预览界面： <br /><img src="http://www.demo2do.com/pics/cssed.jpg" border="0" /><br />样例HTML可以访问：http://www.demo2do.com/htmldemo/school/attendance/AttendanceGlobal.html </p>
												<p>下面开始讲述一下完成上述页面的步骤。</p>
												<p>1. 构建HTML <br />构建HTML是整个过程最基础的部分。我们构建HTML比较关键的一个原则就是“还HTML标签其本来的含义”。所以在这里，我们应该合理分析一下期望做到的HTML的结构的情况，并加以分析，选择比较合适的HTML标签，而不是采用非标准的Table布局或者充斥着大量div和class的布局方式。事实上，现在存在着一种误区，就是凡事采用了DIV＋CSS的方式进行页面编程的就是Web标准的，其实这是完全错误的观点，很容易就导致了“多div症”（divitus）或者“多类症”（classitis）。 <br />回到正题，我们分析一下页面样式，可以将整个Tab页分成2个部分，分别是一级菜单和二级菜单，他们有类似的特点，并以横向方式排列。HTML标签中的无序列表就可以反映出这种逻辑关系。所以我们分别采用2个无序列表来表示一级菜单和二级菜单。代码如下： <br /></p>
												<div class="code_title">代码</div>
												<div class="code_div">
														<div class="dp-highlighter">
																<div class="bar">
																</div>
																<ol class="dp-xml">
																		<li class="alt">
																				<span>
																						<span class="tag">&lt;</span>
																						<span class="tag-name">div</span>
																						<span> </span>
																						<span class="attribute">class</span>
																						<span>=</span>
																						<span class="attribute-value">"navg"</span>
																						<span class="tag">&gt;</span>
																						<span>  </span>
																				</span>
																		</li>
																		<li class="">
																				<span>    </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">div</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"attendance"</span>
																				<span> </span>
																				<span class="attribute">class</span>
																				<span>=</span>
																				<span class="attribute-value">"mainNavg"</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>        </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">ul</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"attendanceNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>考勤管理</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"teachNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>教学管理</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"communicationNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>家校互通</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"systemNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>系统管理</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>        </span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">ul</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>    </span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">div</span>
																				<span class="tag">&gt;</span>
																				<span>     </span>
																		</li>
																		<li class="">
																				<span>    </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">div</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"dailyAttendance"</span>
																				<span> </span>
																				<span class="attribute">class</span>
																				<span>=</span>
																				<span class="attribute-value">"secondaryNavg"</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>        </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">ul</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"dailyAttendanceNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>当天考勤</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"leaveApproveNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>请假审批</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"attendanceStatisticsNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>考勤统计</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>            </span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">li</span>
																				<span> </span>
																				<span class="attribute">id</span>
																				<span>=</span>
																				<span class="attribute-value">"attendanceCollectNavg"</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;</span>
																				<span class="tag-name">a</span>
																				<span> </span>
																				<span class="attribute">href</span>
																				<span>=</span>
																				<span class="attribute-value">"#"</span>
																				<span class="tag">&gt;</span>
																				<span>考勤汇总</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">a</span>
																				<span class="tag">&gt;</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">li</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>        </span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">ul</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="alt">
																				<span>    </span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">div</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>
																				</span>
																				<span class="tag">&lt;/</span>
																				<span class="tag-name">div</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</li>
																</ol>
														</div>
												</div>
												<script><![CDATA[ender_code();]]&gt;</script>
												<p>
												</p>
												<p>其中，2个div将菜单级别划分开。其实在以后还会有其他的功效。此时，我们不妨View一下这张页面，我们可以惊喜的发现，这张页面就想Word文档一样，是可读的，这一点我们可以在整个过程做完以后再一次验证。</p>
												<p>
														<img src="http://www.demo2do.com/pics/nocss.jpg" border="0" />
												</p>
												<p>2. 构建基本CSS</p>
												<p>先简单的让ul横向排列，这里面要注意元素float之后要注意清理</p>
												<p>然后通过分别在LI 和 A 元素上应用背景来实现主菜单样式，这里有个比较重要的地方是A这个元素变成块级元素（display: block），这样可以便于我们下面做一些处理，也能使整个菜单应用到链接样式。 <br />而其中的line-height，恰恰可以使A中的字纵向居中。text-align使得A中的字横向居中。 <br /></p>
												<div class="code_title">代码</div>
												<div class="code_div">
														<div class="dp-highlighter">
																<div class="bar">
																</div>
																<ol class="dp-j">
																		<li class="alt">
																				<span>
																						<span>.navg .mainNavg UL {   </span>
																				</span>
																		</li>
																		<li class="">
																				<span>    margin: </span>
																				<span class="number">0</span>
																				<span>;   </span>
																		</li>
																		<li class="alt">
																				<span>    padding: </span>
																				<span class="number">0</span>
																				<span>;   </span>
																		</li>
																		<li class="">
																				<span>    list-style: none;   </span>
																		</li>
																		<li class="alt">
																				<span>}   </span>
																		</li>
																		<li class="">
																				<span>.navg .mainNavg UL LI {   </span>
																		</li>
																		<li class="alt">
																				<span>    </span>
																				<span class="keyword">float</span>
																				<span>: left;       </span>
																		</li>
																		<li class="">
																				<span>    background-color: #E1E9F8;   </span>
																		</li>
																		<li class="alt">
																				<span>    background: url(../images/tab_right.gif) no-repeat right top;   </span>
																		</li>
																		<li class="">
																				<span>    margin: 10px 3px;   </span>
																		</li>
																		<li class="alt">
																				<span>    height: 25px;   </span>
																		</li>
																		<li class="">
																				<span>}   </span>
																		</li>
																		<li class="alt">
																				<span>  </span>
																		</li>
																		<li class="">
																				<span>.navg .mainNavg UL LI A {   </span>
																		</li>
																		<li class="alt">
																				<span>    display: block;   </span>
																		</li>
																		<li class="">
																				<span>    height: 25px;   </span>
																		</li>
																		<li class="alt">
																				<span>    padding: </span>
																				<span class="number">0</span>
																				<span> 25px;   </span>
																		</li>
																		<li class="">
																				<span>    line-height: 24px;   </span>
																		</li>
																		<li class="alt">
																				<span>    background-color: #E1E9F8;   </span>
																		</li>
																		<li class="">
																				<span>    background: url(../images/tab_left.gif) no-repeat left top;   </span>
																		</li>
																		<li class="alt">
																				<span>    text-decoration: none;   </span>
																		</li>
																		<li class="">
																				<span>    </span>
																				<span class="keyword">float</span>
																				<span>: left;   </span>
																		</li>
																		<li class="alt">
																				<span>    text-align:center;   </span>
																		</li>
																		<li class="">
																				<span>    color: #fff;   </span>
																		</li>
																		<li class="alt">
																				<span>    font-weight: bold;     </span>
																		</li>
																		<li class="">
																				<span>}   </span>
																		</li>
																</ol>
														</div>
												</div>
												<script><![CDATA[ender_code();]]&gt;</script>
												<p>
												</p>
												<p>3. 使宽度自适应</p>
												<p>我们在这里使用滑动门技术来做宽度自适应。下面简单介绍一下滑动门技术</p>
												<p>简单来说，就是在LI上应用一幅大图像背景，并让这个背景居于右侧</p>
												<p>
														<img src="http://www.demo2do.com/htmldemo/images/tab_right.gif" border="0" />
												</p>
												<p>然后在A上应用一个小图像背景，并让这个背景居于左侧，遮住大图像边缘</p>
												<p>
														<img src="http://www.demo2do.com/htmldemo/images/tab_left.gif" border="0" />
												</p>
												<p>这样无论菜单文字内容长度怎么变，都不会破坏原来的结构了。</p>
												<p>4. 当前菜单高亮显示</p>
												<p>如果高亮当前页面，这个有很多种做法，最死板的是在每个页面上显式的定义类。 <br />但是对于web项目来说，页面多数是动态的，所以这样不是最理想的方法。</p>
												<p>我这里采用的方法是CSS选择器的灵活使用</p>
												<p>
												</p>
												<div class="code_title">代码</div>
												<div class="code_div">
														<div class="dp-highlighter">
																<ol class="dp-j">
																		<li class="alt">
																				<span>
																						<span>#attendance #attendanceNavg,   </span>
																				</span>
																		</li>
																		<li class="">
																				<span>#teach #teachNavg,   </span>
																		</li>
																		<li class="alt">
																				<span>#communication #communicationNavg,   </span>
																		</li>
																		<li class="">
																				<span>#system #systemNavg {   </span>
																		</li>
																		<li class="alt">
																				<span>    background: url(../images/tab_right_on.gif) no-repeat right top;   </span>
																		</li>
																		<li class="">
																				<span>}   </span>
																		</li>
																		<li class="alt">
																				<span>#attendance #attendanceNavg A,   </span>
																		</li>
																		<li class="">
																				<span>#teach #teachNavg A,   </span>
																		</li>
																		<li class="alt">
																				<span>#communication #communicationNavg A,   </span>
																		</li>
																		<li class="">
																				<span>#system #systemNavg A {   </span>
																		</li>
																		<li class="alt">
																				<span>    background: url(../images/tab_left_on.gif) no-repeat left top;   </span>
																		</li>
																		<li class="">
																				<span>    color: #0000ff;   </span>
																		</li>
																		<li class="alt">
																				<span>}   </span>
																		</li>
																</ol>
														</div>
												</div>
												<script><![CDATA[ender_code();]]&gt;</script>
												<p>
												</p>
												<p>在&lt;div id="attendance" class="mainNavg"&gt;的代码中，我们可以使用不同的id作为选择器，由于CSS中的选择器id的优先级将大于class，所以只要根据id配合上li上面的id，就可以达到动态选择高亮选中的目的。</p>
												<p>事实上，由于我们的页面都是动态的，所以id可以由后台生成，这样就可以通过id的不同组合非常精巧的实现了我们的需求。</p>
												<p>5. 小技巧</p>
												<p>最后可能还有一个问题你在想怎么实现的，就是高亮的tab如何把下面的横线遮掉的</p>
												<p>很简单，图片上的小技巧。将高亮的图片高度设置为25px，而普通的图片设置为24px。然后通过padding，就可以将那根横线遮去了。</p>
												<p>我们可以使用类似的方式，把二级菜单也做出来，这里就不详细叙述了。大家可以结合源码试一下。</p>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/supernaturalmagician/aggbug/106583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supernaturalmagician/" target="_blank">花生</a> 2007-03-27 09:31 <a href="http://www.blogjava.net/supernaturalmagician/articles/css.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>