html菜单点击php信息在,如何使用php将class ='active'添加到html菜单

本文介绍了一种在PHP中实现导航栏高亮显示的技术。通过比较当前页面URL与导航链接,可以自动为当前选中的导航项添加样式。文章提供了几种实现方法,包括使用heredoc语法、函数封装和条件判断等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你的index.php代码是正确的。我在下面包含了common.php的更新代码,然后我会解释这些差异。

$class = ($page == 'one') ? 'class="active"' : '';

$nav = <<

EOD;

?>

第一个问题是你需要确保heredoc的结束声明 - EOD; - 根本没有缩进。如果它是缩进的,那么你将得到错误。

至于你的问题是没有在heredoc语句中运行的PHP代码,那是因为你看错了。使用heredoc语句与关闭PHP标记不同。因此,您无需尝试重​​新打开它们。那对你没什么用。 heredoc语法的工作方式是打开和关闭之间的所有内容都与写入完全一样,但变量除外。这些被替换为相关值。我从heredoc中删除了你的逻辑,并使用了一个三级函数来确定类,以便更容易看到(虽然我不相信任何逻辑语句都可以在heredoc中工作)

要理解heredoc语法,它与将它包含在双引号(“)中相同,但不需要转义。所以你的代码也可以像这样编写:

$class = ($page == 'one') ? 'class="active"' : '';

$nav = "

";

?>

它会做同样的事情,只是写得有些不同。 heredoc和字符串之间的另一个区别是你可以从中间的字符串中逃脱,你不能在heredoc中。使用此逻辑,您可以生成以下代码:

$nav = "

";

?>

然后,您可以将逻辑直接包含在字符串中,就像您最初预期的那样。

无论您选择哪种方法,脚本的性能都会产生很小的(如果有的话)差异。它主要归结为偏好。无论哪种方式,您都需要确保了解每种方法的工作原理。

你为什么不这样做:

在页面中:

在navigation.php中

  • href="index1.php">Tab1/

  • href="index2.php">Tab2/

  • href="index3.php">Tab3/

实际上,您可以控制导航页面中的位置以及传递给它的参数。

稍后编辑:修复语法错误。

解决此问题的一个非常简单的方法就是执行此操作。

哪个会输出

我想你需要把你的$page = 'one';放在require_once之上..否则我不明白这个问题。

我知道这是旧的,但这些答案都不是很好(sry ppl)

最好的方法(不写出复杂的类)是将当前的$ _SERVER ['REQUEST_URI']与链接的href进行比较。你快到了。

试试这个。 (摘自http://ma.tt/scripts/intellimenu/)

$nav = <<

EOD;

$lines = explode("n", $nav);

foreach($lines as $line)

{

if(preg_match('/href="([^"]+)"/', $line, $url)) {

if(substr($_SERVER['REQUEST_URI'], 0, 5) == substr($url[1], 0, 5)) {

$line = str_replace('>

}

}

echo $line . "n";

}

为什么不为此导航创建函数或类并将活动页面作为参数放置?这样你就可以称之为,例如:

$navigation = new Navigation( 1 );

要么

$navigation = navigation( 1 );

$page='one'应该在你之前require_once()之后发生。太晚了 - 代码已经被要求了,并且已经定义了$nav。

您应该使用include('header.php');和include('footer.php');而不是在早期设置$nav变量。这增加了灵活性。

做更多功能。这样的事情真的让事情更容易理解:

function maybe($x,$y){return $x?$y:'';}

function aclass($k){return " class="$k" "; }

然后你可以像这样写下你的“条件”:

CALL common.php

.ddsmoothmenu ul li{float: left; padding: 0 20px;}

.ddsmoothmenu ul li a{display: block;

padding: 40px 15px 20px 15px;

color: #4b4b4b;

font-size: 13px;

font-family: 'Open Sans', Arial, sans-serif;

text-align: right;

text-transform: uppercase;

margin-left: 1px; color: #fff; background: #000;}

.current .test{ background: #2767A3; color: #fff;}

add each page

  • href="user.php" >Article
  • href="newarticle.php">New Articles

我正在使用的解决方案如下,允许您设置每个PHP页面的活动类。

给每个菜单项一个独特的类,我使用.nav-x(nav-about,here)。

About

在每个页面的顶部(about.php这里):

<?php $activeClass = '.nav-about > a'; ?>

其他地方(header.php / index.php):

<?php echo $activeClass; ?> {

color: #fff !important;

}

例如,只需更改每页.nav-about > a,.nav-forum > a。

如果您想为每个导航项目设置不同的样式(颜色等),只需将内联样式附加到该页面而不是索引/标题页面。

从导航栏中分离您的页面。

pageOne.php:

$page="one";

include("navigation.php");

navigation.php

if($page=="one"){$oneIsActive = 'class="active"';}else{ $oneIsActive=""; }

if($page=="two"){$twoIsActive = 'class="active"';}else{ $twoIsActive=""; }

if($page=="three"){$threeIsActive = 'class="active"';}else{ $threeIsActive=""; }

我发现我也可以用这种方法设置我的页面标题。

$page="one";

$title="This is page one."

include("navigation.php");

然后抓住$ title var并将其放在“title”标签之间。虽然我将它发送到导航栏上方的标题页。

你可以使用这个PHP,希望它有所帮助。

<?php if(basename($_SERVER['PHP_SELF'], '.php') == 'home' ) { ?> class="active" <?php } else { ?> <?php }?>

所以列表如下所示。

  • class="active" <?php } else { ?> <?php }?>> Home
  • class="active" <?php } else { ?> <?php }?>> Other
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值