dede导航栏CSS样式如何自定义?

99ANYc3cd6
预计阅读时长 24 分钟
位置: 首页 DEDE建站 正文

DedeCMS 的导航栏通常由两部分组成:

dede 导航栏css样式
(图片来源网络,侵删)
  1. PHP 模板文件:负责生成导航栏的 HTML 结构。
  2. CSS 样式文件:负责定义导航栏的外观,如颜色、字体、布局等。

下面我将分步为你讲解如何从零开始或修改已有的导航栏样式。


第一步:理解导航栏的 HTML 结构 (由 head.htm 生成)

在 DedeCMS 中,主导航栏的 HTML 结构通常是在 templets/default/head.htm 文件中通过调用 {dede:channelartlist}{dede:type} 等标签生成的。

一个典型的导航栏 HTML 结构可能如下所示:

<div class="header">
    <div class="nav">
        <ul class="nav_ul">
            <!-- 首页 -->
            <li class='nav_li'><a href='/'><span>首页</span></a></li>
            <!-- 一级栏目 -->
            <li class='nav_li on'><a href='/plus/list.php?tid=1'><span>公司简介</span></a></li>
            <li class='nav_li'><a href='/plus/list.php?tid=2'><span>产品中心</span></a></li>
            <!-- 带有子栏目的二级导航 -->
            <li class='nav_li'><a href='/plus/list.php?tid=3'><span>新闻资讯</span></a>
                <ul class="sub_nav_ul">
                    <li><a href='/plus/list.php?tid=4'>公司新闻</a></li>
                    <li><a href='/plus/list.php?tid=5'>行业动态</a></li>
                </ul>
            </li>
            <li class='nav_li'><a href='/plus/list.php?tid=6'><span>联系我们</span></a></li>
        </ul>
    </div>
</div>

关键点解析:

dede 导航栏css样式
(图片来源网络,侵删)
  • <div class="nav"><ul class="nav_ul">:这是导航栏的最外层容器,我们通常在这里设置宽度、居中对齐等。
  • <li class="nav_li">:这是每一个导航项,我们在这里设置间距、背景色、鼠标悬停效果等。
  • <a href="..."><span>...</span></a>:这是导航链接和文字,用 <span> 包裹文字是一个很好的习惯,可以方便地对文字进行单独样式控制,而不会影响整个 <a>
  • class="on":这是当前页面对应的导航项,我们可以用它来高亮显示当前页面所在的栏目。
  • <ul class="sub_nav_ul">:这是二级子菜单,默认通常是隐藏的,当鼠标移到父级菜单上时才显示。

第二步:编写 CSS 样式

CSS 样式可以写在两个地方:

  1. 推荐方式:在 templets/default/style/dedecms.css 文件中添加,这是 DedeCMS 的主样式表,方便统一管理。
  2. 临时方式:在 head.htm 文件的 <head> 标签内使用 <style> 标签写入,适合快速测试。

下面我们通过一个完整的例子,一步步构建一个常见的导航栏样式。

示例目标:

创建一个水平、居中、带悬停效果和二级下拉菜单的导航栏。

基础布局样式 (作用于 .nav_ul)

我们要让导航列表变成水平一行,并居中显示。

dede 导航栏css样式
(图片来源网络,侵删)
/* 在 dedecms.css 中添加 */
/* 导航栏容器 */
.nav {
    width: 1000px; /* 设置一个固定宽度,或使用 max-width: 1000px; */
    margin: 0 auto; /* 水平居中 */
    height: 50px;   /* 设置一个固定高度 */
}
/* 导航列表 - 去掉默认样式,并设置布局 */
.nav_ul {
    list-style: none; /* 去掉列表前的点 */
    margin: 0;
    padding: 0;
    display: flex; /* 使用 Flexbox 布局,轻松实现水平排列 */
    justify-content: center; /* 子元素水平居中 */
    align-items: center; /* 子元素垂直居中 */
}
/* 导航项 - 设置间距 */
.nav_li {
    margin: 0 15px; /* 左右间距 */
    position: relative; /* 这个属性很重要,为二级菜单定位做准备 */
}

导航链接和文字样式 (作用于 .nav_li aspan)

美化导航链接本身。

/* 导航链接样式 */
.nav_li a {
    text-decoration: none; /* 去掉下划线 */
    color: #333; /* 默认文字颜色 */
    font-size: 16px;
    display: block; /* 让 a 标签充满整个 li */
    line-height: 50px; /* 行高等于容器高度,实现垂直居中 */
    padding: 0 10px; /* 增加一点内边距,让点击区域更大 */
    transition: all 0.3s ease; /* 添加平滑过渡效果 */
}
/* 鼠标悬停效果 */
.nav_li a:hover {
    color: #007bff; /* 鼠标移上去时文字颜色变蓝 */
    background-color: #f0f0f0; /* 鼠标移上去时背景变色 */
}
/* 当前页面的导航项高亮 */
.nav_li.on a {
    color: #007bff; /* 当前页面的文字颜色 */
    font-weight: bold; /* 加粗 */
}
/* 如果你用了 <span>,可以单独设置 */
.nav_li a span {
    /* a 标签的样式已经满足,这里可以不写 */
}

二级下拉菜单样式 (作用于 .sub_nav_ul)

这是最关键的一步,我们需要让二级菜单默认隐藏,并在鼠标移到父级时显示。

/* 二级菜单容器 - 默认隐藏 */
.sub_nav_ul {
    list-style: none;
    margin: 0;
    padding: 0;
    position: absolute; /* 绝对定位,相对于设置了 position: relative; 的父级 .nav_li */
    top: 100%; /* 定位在父级 li 的下方 */
    left: 0;
    background-color: #fff; /* 背景色 */
    box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* 阴影效果,增加层次感 */
    display: none; /* 默认隐藏 */
    z-index: 1000; /* 确保菜单显示在其他内容之上 */
}
/* 当鼠标移到父级 li 时,显示二级菜单 */
.nav_li:hover .sub_nav_ul {
    display: block; /* 鼠标悬停时显示 */
}
/* 二级菜单项的样式 */
.sub_nav_ul li {
    width: 150px; /* 设置二级菜单的宽度 */
}
.sub_nav_ul li a {
    display: block;
    line-height: 40px; /* 二级菜单项的高度 */
    text-align: center; /* 文字居中 */
    border-bottom: 1px solid #eee; /* 添加分隔线 */
}
.sub_nav_ul li a:hover {
    background-color: #f8f8f8; /* 鼠标悬停时的背景色 */
}

第三步:整合与最终代码

将以上所有 CSS 代码整合到你的 dedecms.css 文件中,你的导航栏就会变成一个功能完整、外观漂亮的样式了。

dedecms.css 中最终添加的代码:

/* ====================== 导航栏样式 Start ====================== */
.nav {
    width: 1000px;
    margin: 20px auto 0;
    height: 50px;
}
.nav_ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
}
.nav_li {
    margin: 0 15px;
    position: relative;
}
.nav_li a {
    text-decoration: none;
    color: #333;
    font-size: 16px;
    display: block;
    line-height: 50px;
    padding: 0 10px;
    transition: all 0.3s ease;
}
.nav_li a:hover {
    color: #007bff;
    background-color: #f0f0f0;
}
.nav_li.on a {
    color: #007bff;
    font-weight: bold;
}
/* 二级下拉菜单 */
.sub_nav_ul {
    list-style: none;
    margin: 0;
    padding: 0;
    position: absolute;
    top: 100%;
    left: 0;
    background-color: #fff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    display: none;
    z-index: 1000;
}
.nav_li:hover .sub_nav_ul {
    display: block;
}
.sub_nav_ul li {
    width: 150px;
}
.sub_nav_ul li a {
    display: block;
    line-height: 40px;
    text-align: center;
    border-bottom: 1px solid #eee;
}
.sub_nav_ul li a:hover {
    background-color: #f8f8f8;
}
/* ====================== 导航栏样式 End ====================== */

常见问题与技巧

  1. 导航栏文字对不齐?

    • 原因:通常是 line-heightheight 没有设置成一样的值。
    • 解决:确保 .nav_li 的高度和 .nav_li aline-height 相同,例如都是 50px
  2. 二级菜单位置不对?

    • 原因:父级 .nav_li 没有设置 position: relative;
    • 解决:给 .nav_li 添加 position: relative;
  3. 如何修改导航栏的背景色?

    • 解决:给 .nav.nav_ul 添加 background-color 属性。
      .nav {
          background-color: #2c3e50; /* 深蓝色背景 */
      }
  4. 如何让导航栏固定在页面顶部?

    • 解决:给 .nav 的父级(通常是 .header)添加 position: fixed;top: 0; 以及 width: 100%;,为了防止内容被遮挡,需要给 body 添加一个 padding-top,其值等于导航栏的高度。
      .header {
          position: fixed;
          top: 0;
          left: 0;
          width: 100%;
          z-index: 999;
      }
      body {
          padding-top: 50px; /* 因为导航栏高度是 50px */
      }

通过以上步骤,你就可以完全掌控 DedeCMS 导航栏的样式了,核心是理解其 HTML 结构,然后用 CSS 精准地定位和美化每一个元素。

-- 展开阅读全文 --
头像
为何织梦注册手机号码必须唯一?
« 上一篇 今天
全国计算机等级考试C语言题库哪里有?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码