关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » UI前端 »如何制作一个滑动门导航菜单?

    如何制作一个滑动门导航菜单?

    2016-02-21 17:13:49 出处:IT技术网
    分享

    一个好的导航菜单不仅要在使用的时候方便直观,还要有良好的视觉体验,如果再利用特效效果,将会是的网站不仅美观,而且灵动。

    一、什么是“滑动门”导航菜单

    1.1 “滑动门”处处可见

    现在流行的网站设计中,水平导航菜单占据了大壁江山。的确,无论是门户网站还是企事业单位网站,都大量的采用水平的导航菜单设计。而水平导航菜单中,又有绝大多数网站采用“滑动门”设计。什么是滑动门呢?来看下图,是笔者任教的学校的官方主页:

    从图中可见,这是一个蓝色背景的导航条,各个栏目的名称依次排列。浏览者当前所在的栏目会有一种“玻璃材质”的3D凸起的效果。与此相同的,用户用鼠标滑过的链接,也有这样的效果。

    这就是“滑动门”技术,它被广泛的应用在各种网站的设计中。

    1.2  为什么要用滑动门技术

    首先需要确定的是,制作滑动门导航菜单效果,不需要使用JavaScript,而仅仅需要使用p+CSS技术即可。这对于很多同学来说,是值得兴奋的。

    然后很多同学都会问了,邵老师,这个“门”在哪儿呢?它是怎么“滑动”的啊?为什么叫它“滑动门”啊。这个问题非常的好,解答这个问题,需要从滑动门效果的的技术难点谈起。

    “滑动门”效果的难点在于,每个导航栏目的文字个数不一样多,有的长,有的短,如下图所示:

     

     2个文字  4个文字  6个文字

    所以这就是一个技术难点,直觉上,我们会认为,不能用“定死”的一个图片当做鼠标滑过的时候切换的背景图片。因为我们这是因为文字的个数不一样多,如果“定死”一个图片,那不就会出现下图的问题么?

    背景图片被重复绘制,产生了错误

    但是如果为每个栏目按照字数多少,都绘制一个不同长度的背景图片,这也会带来两点问题:

    1. 将会影响页面的加载速度;

    2. 需求一旦改变,比如将4个字的栏目名称,变成5个字的栏目,难以及时适应这种改变。

    那有没有一种办法,能够满足“用一张背景图片,适应不同字数”的导航条呢?

    答案大家已经猜到了,这就是滑动门技术。

    1.3  滑动门技术的核心原理

    “滑动门”设计的非常巧妙,采用两个相同的背景图像,一左一右,一个负责提供左边框,一个负责提供右边框。如下图所示,较深颜色区域表示二者重叠的部分,当需要容纳较多文字时,重叠就少一些,而需要较少文字时,重叠就多一些。两个图像可以滑动,重叠的部分的宽度会根据里面的文字的字数而自动调整,就像两扇推拉门一样,因此这种技术就叫做“滑动门”。

     

    二、制作“滑动门”效果

    2.1  图片准备

    制作滑动门效果,需要准备好两张图片,一个是用来做整个菜单的背景色平铺使用的;一个是是当鼠标经过某个菜单项的时候显示出来的。

    2.2  书写p+CSS设置菜单的整体效果

    先搭HTML框架,这里的代码很简单,直接给大家贴出:

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>利用p+CSS制作滑动门导航菜单 原来如此简单</title>
    6. <style>
    7. #menu {
    8.   font-family:Arial;
    9.   font-size:14px;
    10.   margin:0 auto 0 0;
    11.   background:url(bg.png);
    12. }
    13.  
    14. #menu ul {
    15.   display:block;
    16.   width:500px;
    17.              padding:0 0 0 8px; 
    18.               margin:0; 
    19.           list-style:none; 
    20.           height:47px; 
    21.         }
    22.   
    23.     #menu ul li {
    24.   float:left;
    25. }
    26.     #menu ul li a{
    27.   display:block;
    28.   float:left; 
    29.              line-height:47px; 
    30.   color:#ddd;
    31.   text-decoration:none;
    32.   padding:0 14px 0 14px;
    33. }
    34. #menu ul li a:hover{
    35.   color:#fff; 
    36.               background: url(hover.png);
    37.             }
    38.   
    39. #menu ul li a b{
    40.   display:block;
    41.   padding:0 14px 0 0;
    42.             }
    43.   
    44.           #menu ul li a:hover b{
    45.   color:#fff; 
    46.               background: url(hover.png) no-repeat right top;
    47.             }
    48.            </style>
    49. </head>
    50. <body>
    51.     <p id="menu">
    52. <ul>
    53.    <li><a href="#"><b> 首页 </b></a></li>
    54.        <li><a href="#"><b> 北京校区 </b></a></li>
    55.        <li><a href="#"><b> 上海校区 </b></a></li>
    56.        <li><a href="#"><b>网页平面学科  </b></a></li>
    57. </ul>
    58.     </p>
    59. </body>
    60. </html>

    每一个链接都是一个列表项目的<li>标签,并且设置了它们的左浮动,来让各列表项横向排列而不是默认的竖直排列。并且值得注意的一点是,要将a元素设置成为块级元素,这样整个矩形的范围内都会响应鼠标事件。我们还要设置行高line-height属性,设置行高可以是文字竖直方向居中排列。

    利用a:hover伪类选择器来为它添加鼠标悬停之后的效果。

    2.3  制作另一个“钩子”

    我们在每个<li>标签中设置一个文字加粗标记<b>。基本思想就是把<b>标记作为“钩子”来设置CSS样式,这个图片采用的就是hover.png文件,不过不同的在于,这个图片的背景图片是从右向左展开,这样就可以出现右边的边框了。具体代码如下:

    1. #menu ul li a b{
    2.   display:block;
    3.   padding:0 14px 0 0;
    4. }
    5.   
    6. #menu ul li a:hover b{
    7.   color:#fff; 
    8.               background: url(hover.png) no-repeat right top;
    9. }
    10. HTML部分:
    11. <ul>
    12.    <li><a href="#"><b> 首页 </b></a></li>
    13.        <li><a href="#"><b> 北京校区 </b></a></li>
    14.        <li><a href="#"><b> 上海校区 </b></a></li>
    15.        <li><a href="#"><b> 网页平面学科  </b></a></li>
    16. </ul>

    这样,我们非常巧妙的就为滑动门设置好了第二个门。在浏览器中浏览,发现效果良好。

    至此,效果全部完成,完整代码如下:

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>利用p+CSS制作滑动门导航菜单 原来如此简单</title>
    6. <style>
    7. #menu {
    8.   font-family:Arial;
    9.   font-size:14px;
    10.   margin:0 auto 0 0;
    11.   background:url(bg.png);
    12. }
    13.  
    14. #menu ul {
    15.   display:block;
    16.   width:500px;
    17.              padding:0 0 0 8px; 
    18.               margin:0; 
    19.           list-style:none; 
    20.           height:47px; 
    21.         }
    22.   
    23.     #menu ul li {
    24.   float:left;
    25. }
    26.     #menu ul li a{
    27.   display:block;
    28.   float:left; 
    29.              line-height:47px; 
    30.   color:#ddd;
    31.   text-decoration:none;
    32.   padding:0 14px 0 14px;
    33. }
    34. #menu ul li a:hover{
    35.   color:#fff; 
    36.               background: url(hover.png);
    37.             }
    38.   
    39. #menu ul li a b{
    40.   display:block;
    41.   padding:0 14px 0 0;
    42.             }
    43.   
    44.           #menu ul li a:hover b{
    45.   color:#fff; 
    46.               background: url(hover.png) no-repeat right top;
    47.             }
    48.            </style>
    49. </head>
    50. <body>
    51.     <p id="menu">
    52. <ul>
    53.    <li><a href="#"><b> 首页 </b></a></li>
    54.        <li><a href="#"><b> 北京校区 </b></a></li>
    55.        <li><a href="#"><b> 上海校区 </b></a></li>
    56.        <li><a href="#"><b> 网页平面学科 </b></a></li>
    57. </ul>
    58.     </p>
    59. </body>
    60. </html>

    本文作者是邵阳老师。

    本站收集和整理了许多基于js、css、html 5的特效动画代码,希望大家喜欢,IT技术网www.itjs.cn,一直致力于分享学习,请关注我们!

    返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。