![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=1738950024-8jde0SBYqQEh5mYtnCiFqm04JepydIKb-0-8b95dd8512e8957f174367e83caed7aa)
视频讲解
在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=1738950024-sTRC1wkQIyXXsxQFkwqAikdlASdd43cz-0-cdace7b80e7f07905d4def21deb8c4c6)
在上面示例中定义了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=1738950024-gA82VKSJ1HuZuKJVamRy7dpa4rzOncxa-0-9228ba85b8f2e50294d4c382d750d97e)
图5.19 为图片添加快捷旋转功能
5.3.2 设计快捷分享命令
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_101239.jpg?sign=1738950024-iYGfBx6YB2AlrrZ9lhDWsoFXxM56zjHz-0-d2d63917f1a09dab2fe764cedfd5bcae)
视频讲解
本节示例设计一个更实用的分享功能,设计效果如图5.20所示。右击页面中的文本,在弹出的快捷菜单中选择“下载文件”命令,可以下载本词相关作者画像;选择“查看源文件”命令,可以在新窗口中直接浏览作者画像;选择“分享|反馈”命令,可以询问是否向指定网址反馈信息;选择“分享|Email”命令,可以在地址栏中发送信息,也可以向指定邮箱发送信息。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_171043.jpg?sign=1738950024-UhGlwK6DmATt8Gd9vOHYqvOEELBTHNn6-0-45f3891219df3ec0917d9b44273bcae1)
图5.20 定义快捷菜单
本例主要代码如下所示:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P109_171505.jpg?sign=1738950024-sLpGUqYYLS0jmG82GbYPv0qud1jT6WIR-0-d2b3b3889837b2334e81397f1566bd2b)
5.3.3 设计任务列表命令
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_101478.jpg?sign=1738950024-G7cnNJamWRYZR3z9hip33KNNVgxxDim5-0-30616db5253da7acd9f9c2725c1a12c4)
视频讲解
本节示例设计一个动态添加列表项目的功能,设计效果如图5.21所示。右击项目列表文本,在弹出的快捷菜单中选择“添加新任务”命令,可以快速为当前列表添加新的列表项目。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_101345.jpg?sign=1738950024-9EiatEWsmAZhdgTCqGmTE7ftFEwGafFQ-0-69a9b008feee0187766ab9762efc4923)
图5.21 添加新的列表项目
本例主要代码如下所示:
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P110_171507.jpg?sign=1738950024-bZHTnfNbwjKYFi6ZAQS2YaDwu6CwOFNB-0-f6bad83e97cf2200cb1dd6ea0b1bec49)
5.3.4 设计排行榜列表结构
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101632.jpg?sign=1738950024-z3HAjTfLoUpWMYK6OZKuheYKatTqQxxz-0-643465db2dc236e9394fe9d13de4a742)
视频讲解
音乐排行榜,主要体现的是当前某个时间段中某些歌曲的排名情况。如图5.22所示为本节示例的效果图,该例展示音乐排行榜在网页中的基本设计样式。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101635.jpg?sign=1738950024-ICuVUdm0b5HX2Iqz2OZx6pXMSvqMRnI2-0-646fc3c2fb9f6717ed96a1342aa828d3)
示例效果
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101513.jpg?sign=1738950024-ldhRrzDEi8ZjhXfAiDUlbrBxmzr7IPTd-0-f228f02b1f3729acf3695be01091af28)
图5.22 音乐排行榜栏目
【操作步骤】
第1步,新建网页,保存为index.html,在<body>标签内编写如下结构,构建HTML文档。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_171509.jpg?sign=1738950024-3gltBEFJbiJ0rUO8XvBqAcCIf0xsYOmP-0-82d92f6a5c1a24f7f34836df40c7dd79)
第2步,厘清设计思路。首先,将默认的显示效果与通过CSS样式修饰过的显示效果进行对比,如图5.23所示,可以发现两者不同之处。
文字的大小。
榜单排名序号的样式。
背景色和边框色的修饰。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P111_101638.jpg?sign=1738950024-sjCfirGioR2EqFMM9WRmraZVqzq78mY5-0-2205a3a137036ee71e20a0c81ae564bf)
图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=1738950024-VIX1taze1X4vQ0aHguSaelha45d3v1d4-0-7f3c58882dde0381dff7732092f8af20)
这段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=1738950024-zgHJVTTjN9Ht2MoNgamem3kGxni1mWDV-0-9cd2083227b93a9ea9563471bf827f9d)
视频讲解
图文列表的结构就是将列表内容以图片的形式在页面中显示,简单理解就是图片列表信息附带简短的文字说明。在图中展示的内容主要包含列表标题、图片和图片相关说明的文字。下面结合示例进行说明。
【操作步骤】
第1步,新建网页,保存为index.html,在<body>标签内编写如下结构,构建HTML文档。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171052.jpg?sign=1738950024-KqLJ5M1SPbT084z4vTuTazi98ky628Lx-0-3589d9f1350b89ad02fbf28789cc9057)
第2步,梳理结构。对于列表的内容不再细解,细心的用户应该发现:这个列表的HTML结构如图5.24所示,结构层次清晰而富有条理。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171054.jpg?sign=1738950024-WZFEM51nhkn56jdqQCxDZLQFfH79ySHM-0-47d4e85adb22fd183cdf871cdc8df312)
图5.24 列表结构的分析示意图
该结构不仅在HTML代码中能很好体现页面结构层次,而且更方便后期使用CSS设计。
第3步,梳理设计思路。图文列表的排列方式最讲究的是:宽度属性的计算。横向排列的列表,当整体的列表(有序列表或者无序列表)横向空间不足以将所有列表横向显示时,浏览器会将列表换行显示。这样的情况只有在宽度计算正确时,才足够将所有列表横向排列显示并且不会产生空间的浪费,如图5.25所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P113_171055.jpg?sign=1738950024-4HNw4lSinQXL0rvVSd97Dd3CZpXncH8G-0-77a6f002ec9fb01ed8da727a8de42021)
图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=1738950024-E6P0LtrnumAAVs0x0tnLwMF5mEYcrDHo-0-75191b7dbd6cc235fe46a74ddfa56ffd)
.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=1738950024-UIechv7us3OTjquuUEDAwOjdetFmBT2t-0-5d5956609499a453175cfe4972d5b8b0)
第8步,调整图文列表信息细节以及用户体验的把握,例如图片的边框、背景和文字的颜色等,并且还要考虑当用户在鼠标经过图片时,为了能更好地体现视觉效果,给用户一个全新的体验,添加当鼠标经过图片列表信息时图片以及文字的样式变化。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_171059.jpg?sign=1738950024-cJLndhOy6B0tZTo6dtzZwfGYxI62BJyl-0-e247e215ea121fcae98b4cdeba594af3)
第9步,保存页面之后,在浏览器中预览,演示效果如图5.26所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_102371.jpg?sign=1738950024-ll1XBZeha2Jhmy8eyR4V38SmbLGh6tVT-0-5f15a42ae42c38839eeb418e6c2a244e)
示例效果
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P115_102366.jpg?sign=1738950024-a4bbsUyoMwxZVL0KARPju7HdNv9mLLLX-0-7759ed2eb09064e82cef982cc3a0e1a1)
图5.26 图文信息列表页面效果