<li li标签的class属性="hover"><a href="//" title="网站首页">网站首页&l

导航菜单吸引了片刻的关注 从鼡于移动设备的汉堡菜单到用于商店的 ,再到用于增强用户体验的 您可以在WordPress网站中呈现的方式有多种选择。

但是如果您想创建一个简單的菜单,其中包含一些顶级项目当用户将鼠标悬停在菜单上时,又有一些其他项目从下拉菜单中删除

在开始对大型菜单(例如,大型菜单和汉堡菜单)进行编码之前最好学习如何创建下拉菜单。 这将在您可能想不到的更多站点上有用(并非每个站点都需要精美的菜單)并且它将为您提供开始构建更高级菜单所需的基础。

在本教程中我将向您展示如何在WordPress主题中创建一个下拉菜单,并使用CSS定位WordPress菜单功能输出HTML 该功能旨在用于您自己编写的主题,而不是用于第三方主题该主题已经有自己的菜单。 但是如果您正在使用菜单不在下拉菜单中的第三方主题,并且要添加此主题则需要创建一个子主题并将菜单代码添加到该主题。

要遵循本教程您需要:

  • 您自己编写的主題,或者要修改菜单的第三方主题的子主题

您需要了解的第一件事是WordPress如何生成菜单 与静态网站不同,菜单不会硬编码到您的网站中 取洏代之的是,WordPress使用PHP函数来查询数据库并获取导航菜单项然后以正确的结构显示它们。

导航菜单中的每个项目实际上都是数据库wp_posts表中的一個帖子-不是普通的帖子而是一种特殊的帖子,仅用于导航菜单项其元数据包括要显示的文本和目标的链接。

在您的主题中打开header.php文件。 您应该可以找到以下行:

根据参数的不同您的函数可能看起来有些不同,但是让我们分解上面的示例看看每个元素的作用:

  • wp_nav_menu()是获取導航菜单并将其输出的函数。
  • 然后将参数包装在array
  • container_li标签的class属性是CSS类,将赋予包装菜单的容器 在这种情况下,它是main-nav 这就是我们稍后将通過CSS定位的目标。
  • theme_location => primary告诉WordPress这是主要的导航 如果我在管理屏幕中创建一个菜单并选中“ 主要”框,则此菜单将用于代码中的该位置

有时,您鈳能想在主题的其他位置(例如在页脚中)添加导航菜单在这种情况下,您不想使用theme_location => primary 您只能将其用于一个菜单。 但是您可能想要使用其他参数可以在的WordPress手册页面中找到这些参数。

这是“ 菜单”管理屏幕中主要导航的复选框:


在添加CSS创建下拉菜单之前熟悉WordPress为菜单生成嘚代码将很有帮助。

这是小型企业的典型菜单显示在“菜单”管理屏幕中:


现在是该菜单HTML输出:

如果检查该代码,您将看到它包含:

  • 每個人还具有唯一的ID其编号对应于数据库中导航菜单项的发布ID。
  • li元素之一内部是另一个ul 其内部具有自己的li元素-第二级菜单项。 当用户將鼠标悬停在顶层菜单项上时我们希望将其删除。

编码CSS以创建下拉菜单

因此现在我们知道WordPress正在输出什么,我们可以确定要使用CSS定位的え素

我们想要实现以下两点:

  • 打开页面时,第二级菜单项被隐藏
  • 当用户将鼠标悬停在顶级项目上时,将显示在其下方的第二级项目

默认情况下隐藏第二级项目

在主题的样式表中,默认情况下先隐藏第二级项目

这会将ul元素隐藏在main-nav元素内的另一个ul元素内。 但是它不会隱藏顶级ul元素,因为它需要将一个ul嵌套在菜单中的另一个ul

现在,如果您打开页面并尝试查看第二级项目则将不可能—它们将被隐藏。 让我们修复它

使第二级项目出现在悬停上

现在,我们需要确保当顶级li悬停在其上方时将显示嵌套在顶级li中的ul

将此添加到您的样式表:

现在将鼠标悬停在顶级项目上时,将显示其下方的列表 但是您会发现它不会以您想要的方式显示。 具体来说它将下推菜单下的內容。 我们希望它看起来像是漂浮在内容之上 要解决此问题,我们需要在ul ul元素中添加一些布局样式

将布局样式添加到第二级列表

您还需要给顶级列表项指定相对位置:

让我们看一下该代码的作用:

  • position: absolute为第二级列表提供绝对定位,将其从页面中的元素流中移出 对于较高级嘚项目, position: relative将顶层列表放在页面流中并允许在其中放置绝对定位的元素。
  • top: 3em将列表的顶部相对于其内部元素的顶部(即顶级列表项)定位 3em值反映了顶级导航栏的高度。 如果顶层导航的高度不同请编辑您的导航。
  • left: 0将列表相对于其上方的项目置于左侧
  • z-index: 99999定义元素在页面的三維模型中的位置。 较高的值99999确保将其显示在所有其他内容的顶部
  • 剩下的代码给出了列表的宽度,并为其添加了显示样式其中包括一个陰影,使其看起来好像在页面顶部

现在让我们看一下将鼠标悬停在顶级项目上会看到什么:


有用! 当我将鼠标悬停在顶层项目上时,将顯示下拉菜单

下拉菜单对于小型多层菜单很有用

当您的站点需要一个具有多个级别的菜单,但是在顶级菜单之外不需要很多链接时下拉菜单是实现此目的的最简单方法。 我用来演示此内容的站点的菜单中只有一个项目而其下还有其他项目,而其中只有三个 使用大型菜单会显得过大,而单级菜单将不允许我显示所需的所有内容

能够将这样的菜单添加到主题中,将为您的菜单提供更大的灵活性并增強用户体验。 您只需要几行CSS就可以做到

随着CSS3变得更加健壮并得到更广泛嘚支持几乎无需图形即可创建的有趣的现代设计元素的选择几乎是无限的! 对于最近的项目,我决定看看是否可以使用纯CSS3创建居中的功能区横幅 本教程将引导您完成操作。

事实证明由于border-width属性的神奇之处,它实际上非常容易仅使用简单的语义HTML和一些CSS3技巧。 唯一需要注意的是:与所有新CSS3技术一样它在某些IE浏览器中可能会表现得有些奇怪……我们将在本教程的最后解决。


我们要创建一个导航链接栏因此我们将从一个简单的无序列表[ul]开始,并在[a]内添加链接 这是最基本的标记构建模块之一; 非常适合创建要以类似方式设置样式的元素列表,例如我们将在此处执行的操作:

我们希望链接在页面上水平浮动因此我们将添加以下样式:

首先,我们要从列表项目中删除项目符號样式并使它们浮动到彼此的左侧,并在它们之间添加一些空间

接下来,我们将添加一些文本阴影删除链接下划线,并添加文本颜銫和大小

我还喜欢在悬停时添加一些柔和的动画效果:

为了添加星星,我放置了一个HTML实体✭ (看起来像?)在每个链接中 这纯粹是装饰性的,不需要功能性

至此,我们已经有了一个不错的可用导航链接部分可以将其添加到页面中。 但是我们将继续创建一个漂亮的功能區以将这些链接放入其中。


我们将要使用的边框宽度技术确实要求我们在标记中添加4个额外的元素 尽管添加多余的元素并不理想,但從长远来看它可能比加载额外的图形更为有效,并且我们将使事情尽可能简单

首先,我们将在链接周围创建一个容器元素 这将允许峩们设置宽度以将所有横幅元素保持在一起:

我们将添加以下样式来设置容器元素的宽度并居中:

接下来,我们将添加将成为功能区主体蔀分的矩形:

我们将添加以下样式来创建功能区主体背景 我们将z索引设置为500,因为矩形需要堆叠在接下来要创建的三角形的顶部 我同時将-moz-box-shadow和box-shadow添加到了Firefox和-webkit / IE9中:

接下来,我们将三角形添加到功能区的边缘:

最后我们将添加一些边框宽度魔术。 关键是为元素的每一侧设置透奣的边框颜色底部(顶部三角形)和顶部(底部三角形)除外。 然后我们将边框宽度设置为50px。 这将创建一个等腰三角形然后将其放置在色带主体的后面:

我们将在右侧执行相同的操作:

我们完成了! 这将在Firefox和Webkit浏览器中完美呈现。 众所周知IE在使用这些CSS3属性方面表现很差,因此无法在其中完美呈现但是我们会尽力使用几个自定义样式表使其更加接近。

对于IE8和IE9我们将通过“ ie.css”样式表添加一些自定义定位规则:

为了安全起见(并且由于我们相信渐进式增强),我们还将添加针对IE7的修复程序该修复程序可以放在页面的头部或单独的IE7样式表中。 我选择的修复方法是在低于IE8的浏览器中简单隐藏三角形 IE7支持browser-width属性,但间距会有些许偏离 是否要花费额外的时间在IE7中重新定位元素取决于您:


背景图像只是出于娱乐目的-您可以添加自己的图像并围绕该文档构建...或只是抓住其上方的所有内容并将其放入您自己的设计Φ。 但是为了全面起见,在这些图像中添加了以下CSS:

鸣谢:图片来自iStockPhoto-我们无法通过演示分发底部的岛屿图片但您可以自行获取。


希望伱们喜欢这个! 请记住这是一组相当新的技术...因此,如果您的目标是在人类已知的所有浏览器上实现100%的稳定性则可以使用更稳定的方法来使用基本图像作为背景来实现此目的。 在下面留下您的评论和问题;)

阅读有关创建丝带或折叠效果的更多信息:

  • 创建3D丝带环绕效果(外加免费PSD!)

    我认为针对今年流行的3d环绕丝带功能创建教程可能会很有趣 这是增加设计深度的好方法,而且很容易完成

  • 快速提示:實用CSS形状

    最近,一种常见的设计技术是创建折叠效果在该效果中,好像标题正包裹在其容器的后面 这通常是通过使用微小的图像来实現的。 但是使用CSS,我们可以很容易地模仿这种效果 我会在四分钟内告诉您。

摘要:share文件夹主要是用来放一些與项目业务逻辑不相关的内容比如unit、pagination、message等(在其他项目也可以使用) public主要是用来放一些与项目的业务逻辑的相关的公共组件(争对当前項目的公共组件,其他项目可能并不适用)

摘要:angular2的异步表单验校验的应用

摘要:在做微信小程序时,原本想的是官方组件可能会提供洎定义模态框当然微信小程序的确有模态框(api里)但是往往不能满足我们的需求。原生手写模态框 wxml js文件 wxss

我要回帖

更多关于 css清除li样式 的文章

 

随机推荐