PHP 中的 CMS - 如何将 href 定位到 <div>?

CMS in PHP - How to target href to <div>?

我正在学习 PHP 的工作原理,但同时我必须重新设计自定义 CMS。

CMS 是用 PHP 编写的,我用 CSS 重新设计了默认菜单并添加了侧滑效果。但是现在,当我从菜单中单击 link 时,我需要保持此侧面板打开。我认为,最简单的方法是防止页面重新加载 = 使菜单 link 在页面内容部分 (<div id="content"></div>) 中打开。但是因为在源代码中,有很多函数,变量等,我真的需要你的帮助,如何进行。

/Admin/index.php - 菜单部分的内容(放置在单独的文件中)在此处使用函数

调用

AdminLib/CSS/style.css - 还包含侧面菜单的样式

AdminLib/Include/menu.php - 这里定义了一个侧边菜单 (ul, li)


/Admin/index.php

...
...
...
<body>
<?php if ($page != 'login') { 
    $menu_obj = new AdminMenu(dirname(__FILE__).'/Tabdefs/');

    echo $menu_obj->GetHtml();


?>
    <div class="site-wrap">
<?php
    }
    ContContent();
?>
    </div>
...
...
...

AdminLib/Include/menu.php

...
...
...
//vrati html pro svoje menu
public function GetHtml() {
$html = '<ul class="navigation">';

$html .= $this->GetHtmlRecursive($this->menu_def);
$html .= '</ul>';
$html .= '<input type="checkbox" id="nav-trigger" class="nav-trigger" /><label for="nav-trigger"></label>';

return $html;
}

/********** PRIVATE ***********/
//vrati html pro vsechny polozky menu v poli $arr; Pokud tam nejaka ma sub, tak se vola rekurzivne
private function GetHtmlRecursive($arr) {
    $html = '';
    foreach ($arr AS $item) {
        //neukazovane polozky rovnou preskakuju
        if ($item['show'] != 'Y')   
            continue;

    //ted jestli mam podpolozky, tak rekurzujeme    
    if (isset($item['sub'])) {
        $html .= '<li class="nav-item"><a href="#">'.$item['nazev'].'</a>'.
            '<ul class="nav-item">';
        $html .= $this->GetHtmlRecursive($item['sub']);
        $html .= '</ul></li>';
    }
    else {
         //pokud podpolozky nemam, tak vypisu normalni polozku
        $html .= '<li class="nav-item"><a href="'.$item['url'].'">'.$item['nazev'].'</a></li>';
    }
} //foreach pres polozky $arr

return $html;
}
...
...
...

我试图将这样的东西集成到我的源代码中,使用 jQuery 脚本(How to target the href to div - JsFiddle 上的第 2 和第 3 link),但我需要帮助实现 -我无法让它工作。

您始终可以使用定位标签,而不是让 link 定位到特定的 div。他们使用 a 标签转到页面上的相关点。

锚标签的创建方式如下:

<a name="location1"></a>

要 link 到带有您的 a 标签的那个,您可以这样做:

<a href="#location1">Link Text</a>

然后 link 会将您带到页面上的锚点位置。

如果您真的想通过 div ID 并使用 jQuery(这将使您能够滚动到它而不是直接跳转),那么如果您创建 link 类似于以下内容:

<a href="#" onclick="scrollToLocation('location1')">Link Text</a>

如果页面有 div:

<div id="location1">Contrent of the div</div>

并且您的页面具有该功能(在页面上或在外部文件中):

function scrollToLocation(location_id) {
    $('body').animate({
        scrollTop: $('#' + location_id).offset().top
    }, 500);
}

在以下问题中有更多关于 Stack Overflow 的信息:

  • jQuery .scrollTop(); + animation
  • jQuery jump or scroll to certain position, div or target on the page from button onclick