![HTML5+CSS3+JavaScript从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/699/24172699/b_24172699.jpg)
5.3 案例实战
下面通过几个案例演示如何在页面中应用列表结构和超链接。
注意:本节示例涉及CSS3和JavaScript基础知识,如果读者不熟悉CSS3和JavaScript,建议先跳过本节内容,当学习完本书后面章节内容之后,再回头补学本节内容。
5.3.1 为快捷菜单添加命令
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P107_100883.jpg?sign=1738896676-bjTCBHKToWmSEWvPxc5VWGRU6PhTCqWY-0-aa504079705914fc782d3b1ae63d0503)
视频讲解
在5.1.5节中,构建了弹出菜单的示例,但是没有任何功能,本节将介绍如何使用JavaScript实现这些功能。
【示例】针对5.1.5节示例3的HTML代码,为它添加一个当单击时旋转图像的功能。本例将使用CSS3的transform和transition功能,可以在浏览器中实现旋转功能。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P107_171503.jpg?sign=1738896676-KreSq2nqUSLsjpbRj4iYyPl8SjnHajRe-0-2914aee6e5d3b5da964003483608c1c2)
在上面示例中定义了4个类样式,分别设计将图像旋转指定度数。例如,旋转90度的类样式如此:
.rotate-90 { transform: rotate(90deg);}
为了使用这个样式,需要写一个函数将它应用到图像。
function imageRotation(name) { document.getElementById('image').className = name; }
把这个函数和每一个menuitem的onclick事件处理函数捆绑在一起,并且传递一个参数:'rotate-90'。
<menuitem icon="images/icon1.png" onclick="imageRotation('rotate-90')" >旋转90度</menuitem>
完成这个之后,再创建将图片旋转180度和翻转图片的样式,将每一个函数添加到独立的menuitem中,必须要传递参数。最后,在Firefox浏览器中预览,显示效果如图5.19所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P108_171040.jpg?sign=1738896676-YxWEf8BnrkAU6TXFmEsnMU2mUz8tzOmW-0-2597a1db34dd216d93edfba9893c6bc8)
图5.19 为图片添加快捷旋转功能
5.3.2 设计快捷分享命令
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_101239.jpg?sign=1738896676-SUznd1oj39hSZiTLx3f2esUvIPkp2OBG-0-43d369e438ddf7aef9ef5effb9e039c7)
视频讲解
本节示例设计一个更实用的分享功能,设计效果如图5.20所示。右击页面中的文本,在弹出的快捷菜单中选择“下载文件”命令,可以下载本词相关作者画像;选择“查看源文件”命令,可以在新窗口中直接浏览作者画像;选择“分享|反馈”命令,可以询问是否向指定网址反馈信息;选择“分享|Email”命令,可以在地址栏中发送信息,也可以向指定邮箱发送信息。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_171043.jpg?sign=1738896676-lLQBru5Re3Ms2pf7Uoco3Clfrhe1D2Y6-0-6b8a19afb52062123a4258fe68d64754)
图5.20 定义快捷菜单
本例主要代码如下所示:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_171505.jpg?sign=1738896676-5ODoMauKDEzQfuJQpKbMwgwXSNYhDk8D-0-b253d6ae0514991b0082d802005fd8a8)
5.3.3 设计任务列表命令
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_101478.jpg?sign=1738896676-nN8gd6daqxcubMzBWWRgvJORJsOcn5V2-0-ccedea6c574cf93e2a8d10e0254f0fcf)
视频讲解
本节示例设计一个动态添加列表项目的功能,设计效果如图5.21所示。右击项目列表文本,在弹出的快捷菜单中选择“添加新任务”命令,可以快速为当前列表添加新的列表项目。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_101345.jpg?sign=1738896676-rVDj3AY8PZzeLS5UBJBGiFZdVZddenpR-0-a3a95b3978034f444870db5994f165e2)
图5.21 添加新的列表项目
本例主要代码如下所示:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_171507.jpg?sign=1738896676-Afp2xYOPp8ORiJPm2y2N6SMoe5w6jOzw-0-6ea7c5ce6e2eb6abb0f2464e06d18a25)
5.3.4 设计排行榜列表结构
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101632.jpg?sign=1738896676-v6MdFsGd7uVFeG9IBVbEYyzjUmUYWAja-0-5672e113aaa88accee8472bd2ff33405)
视频讲解
音乐排行榜,主要体现的是当前某个时间段中某些歌曲的排名情况。如图5.22所示为本节示例的效果图,该例展示音乐排行榜在网页中的基本设计样式。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101635.jpg?sign=1738896676-QBZsI9mUCz5IyFdsYMxUUHYAkzcQXOP8-0-ffa1fb62e0d500cfb62d5a1f4d907fd9)
示例效果
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101513.jpg?sign=1738896676-AYBVkh2pIUYnR4VJBJ747SzMvNwwmiEQ-0-fa632b980148b476c1489eab9773d2b9)
图5.22 音乐排行榜栏目
【操作步骤】
第1步,新建网页,保存为index.html,在<body>标签内编写如下结构,构建HTML文档。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_171509.jpg?sign=1738896676-eqHpPjsuMFn3m8VvvGUQyDfOnlYeFtHq-0-a67e3177b80bae97946f4eef3c34cc52)
第2步,厘清设计思路。首先,将默认的显示效果与通过CSS样式修饰过的显示效果进行对比,如图5.23所示,可以发现两者不同之处。
文字的大小。
榜单排名序号的样式。
背景色和边框色的修饰。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101638.jpg?sign=1738896676-wXbozpwWYXvjCemVXNdXt3cR08BdsT0T-0-b6639113778dcbe5f7102e00e5c9dd97)
图5.23 CSS样式修饰后(左)与无CSS样式修饰(右)
通过对比可见,数字序号已经不再是普通的常见文字了,而是经过特殊处理的文字效果,换言之就是这个数字必须使用图片才可以达到预期效果。这个数字图片在列表中处理方式也就是本例中需要讲解的部分,在讲解之前先思考下面两个问题:
10个数字,也就是10张图片,可不可以将这10张图片合并成一张图片;
将10张图片合并成一张图片,但HTML结构中又没有针对每个列表<li>标签添加Class类名,怎么将图片指定到相对应的排名中。
第3步,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表。
第4步,针对第2步分析的两个主要问题,编写如下CSS样式:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P112_171511.jpg?sign=1738896676-Hb6j8LRugDuIFsB5e3cwJaUwOUanndsg-0-412d5c2af1ddf569224460a3bbdad208)
这段CSS样式就是为了实现最终效果而写的,代码设计思路如下:
将有序列表<ol>标签的高度属性值设定一个固定值,这个固定值为列表<li>标签的10倍;并将列表所有的默认样式修饰符取消;利用有序列表<ol>标签中增加左补丁的空间显示合并后的数字背景图。
简单的方法代替了给不同的列表<li>标签添加不同背景图片的麻烦步骤。但这种处理方式的缺陷就是必须调整好背景图片中10个数字图片的间距,而且如果增加了每个列表<li>标签的高度,那么就需要重新修改背景图片中10个数字图片的间距。
第5步,保存页面之后,在浏览器中预览,演示效果如图5.22所示(index.html)。
5.3.5 设计图文列表栏目
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P112_101799.jpg?sign=1738896676-Nzh6OiqHFL4J59M0nNAhyn6j6XeJp9Yq-0-2fa8b974139bc3ee28183d1675160108)
视频讲解
图文列表的结构就是将列表内容以图片的形式在页面中显示,简单理解就是图片列表信息附带简短的文字说明。在图中展示的内容主要包含列表标题、图片和图片相关说明的文字。下面结合示例进行说明。
【操作步骤】
第1步,新建网页,保存为index.html,在<body>标签内编写如下结构,构建HTML文档。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171052.jpg?sign=1738896676-kNryn2lHgHvtZHkaK2dUqWpM9I3WT1yL-0-45e771d3d51090034ec60fe787664270)
第2步,梳理结构。对于列表的内容不再细解,细心的用户应该发现:这个列表的HTML结构如图5.24所示,结构层次清晰而富有条理。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171054.jpg?sign=1738896676-ZN2GPUFgIYKTLFVkCwFfyW0aaqLibUD0-0-b30439fc6ec1c70e93925fd2a94bdfd3)
图5.24 列表结构的分析示意图
该结构不仅在HTML代码中能很好体现页面结构层次,而且更方便后期使用CSS设计。
第3步,梳理设计思路。图文列表的排列方式最讲究的是:宽度属性的计算。横向排列的列表,当整体的列表(有序列表或者无序列表)横向空间不足以将所有列表横向显示时,浏览器会将列表换行显示。这样的情况只有在宽度计算正确时,才足够将所有列表横向排列显示并且不会产生空间的浪费,如图5.25所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171055.jpg?sign=1738896676-gkVN5UANzPH30vQyk3UtlGtSWwJjQEqW-0-b374ee3baeb0bbb7072547fd07667455)
图5.25 列表宽度计算不正确导致的结果
这种情况是必须要避免的,因此准确计算列表内容区域所需要的空间是有必要的。
第4步,设计栏目宽度。在本例中,每张图片的宽度为134px,左右内补丁分别为3px,左右边框分别为1px宽度的线条,且图片列表与图片列表的间距为15px(即右外补丁为15px),根据盒模型的计算方式,最终列表<li>标签的盒模型宽度值为1px+3px+134px+3px+1px+15px=157px,因此图文列表区域总宽度值为157px×6=942px。
第5步,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表。
第6步,编写图文列表区域的相关CSS样式代码:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P114_171545.jpg?sign=1738896676-Z340TG3VPmPC1xsCPBhto5tO4QQc8Zi8-0-6ec39f43ad0127d1b3f19b8bbde3def8)
.pic_list .content作为图文列表内容区域,增加相应的内补丁使其与整体之间有空间感,这个是视觉效果中必然会处理的一个问题。
.pic_list .content li因为具有浮动属性,并且有左右外补丁中一个外补丁属性,在IE6浏览器中会产生双倍间距的bug问题。而神奇的是,添加display:inline可以解决该问题,并且不会对其他浏览器产生任何影响。
第7步,主要的内容设置成功之后就可以对图文列表的整体效果做CSS样式的修饰,例如图文列表的背景和边框以及图文列表标题的高度、文字样式和背景等。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P114_171546.jpg?sign=1738896676-yb1DRmDRnCO0JMzKFM9bwjojR8XGHHdb-0-d1b524f4ec2e99f506cfcb0ab84563c2)
第8步,调整图文列表信息细节以及用户体验的把握,例如图片的边框、背景和文字的颜色等,并且还要考虑当用户在鼠标经过图片时,为了能更好地体现视觉效果,给用户一个全新的体验,添加当鼠标经过图片列表信息时图片以及文字的样式变化。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_171059.jpg?sign=1738896676-vtQJEqIsXbBB7KOiN6r89ZOZu5DNN6KO-0-b566f30ad81711079d25a236d3c5ee75)
第9步,保存页面之后,在浏览器中预览,演示效果如图5.26所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_102371.jpg?sign=1738896676-dDIAjdAH0w416tiiZXdOxsC8KuhOgx2p-0-8b9e91c0f3d02918fefd4ea84afa7840)
示例效果
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_102366.jpg?sign=1738896676-43IW57oz4ZTeJpm95CFtTa6gMB2VdXWS-0-707efd5ef77be446a29e94681b8315da)
图5.26 图文信息列表页面效果