You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8新增页面中滚动导航栏点击无效的解决咨询

问题分析
  1. 链接路径错误:导航里的#home这类锚点是相对当前页面路径的,在/city页面点击时,会跳转到/city#home,但该路径下没有对应锚点的内容,而你需要的是跳转到根路径下的/#home。
  2. HTML结构错误:city页面把导航栏<nav>放在了<head>标签里,不符合HTML规范——<head>仅能存放元数据、样式、脚本等,不能放置页面内容元素,会导致渲染异常。
  3. 布局不统一:city页面未继承main布局,导致和welcome页面结构脱节,导航的上下文不一致。
解决方案

步骤1:统一页面布局继承

修改city.blade.php,让它继承main.blade.php,复用统一布局结构,避免重复编写HTML骨架:

@extends('main')

@section('content')
// 城市页面内容
@endsection

步骤2:修正导航链接的绝对路径

把导航里的锚点链接改为绝对路径,使用Laravel的url()辅助函数生成正确路径:

<nav class="navbar">
    <div id="nav-close" class="fas fa-times"></div>
    <a href="{{ url('/#home') }}">home</a>
    <a href="{{ url('/#idea') }}">Idea</a>
    <a href="{{ url('/#about') }}">about</a>
    <a href="{{ url('/#packages') }}">packages</a>
</nav>

如果给根路由设置了名称(比如命名为home),也可以用route()辅助函数:

<a href="{{ route('home') }}#home">home</a>

对应的路由需要补充名称:

Route::get('/', function () {
    return view('welcome');
})->name('home');

步骤3:修正main页面的HTML结构(规范优化)

原main.blade.php把导航放在<head>和<body>之间,不符合HTML规范,应将导航移到<body>内部:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        @include('partials._head')
    </head>
    <body>
        @include('partials._nav')
        @yield('content')
    </body>
</html>

这样welcome.blade.php的内容就能通过@section('content')填充到正确位置。

内容的提问来源于stack exchange,提问作者Narakaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:27