在网页不发生跳转的前提下,编写代码实现如下图效果:

实现代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>导航</title>
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <style type="text/css">
        /*全局样式*/
        *{
            margin: 0;    /*清除默认外边距*/
            padding: 0;    /*清除默认内边距*/
            list-style: none;    /*清除ul、li便签前面的点*/
        }
        /*页面整体样式*/
        .nav{
            width: 700px; /*宽度700*/
            margin: 0 auto; /*整体居中*/
            margin-top: 20px; /*距离网页顶端20*/
            border: 1px solid blue; /*加一个1px实线蓝色边框*/
        }
        /*公共导航栏ul标签*/
        ul{
            margin-top: 30px; /*距离上部30px*/
        }
        /*导航栏ul标签的li子标签*/
        ul>li{
            float: left; /*整体左浮动*/
            margin-left: 60px;  /*距离左边元素60*/
            width: 100px; /*宽度100*/
            height: 2em; /*高度两个字符*/
            line-height: 2em; /*垂直居中*/
            text-align: center; /*水平居中*/
            border: 1px solid #efefef; /*加一个1px实线浅灰色边框*/
            border-radius: 1em; /*加一个宽一个字符的圆角*/
        }
        /*鼠标悬停到li标签时*/
        .nav>ul>li:hover{
            border: 1px solid pink; /*加一个1px实线粉色边框*/
        }
        /*网页主体内容公共模块*/
        .nav .one{
            width: 600px; /*宽度60*/
            margin:0 50px 50px; /*距离上部0px,距离左右50px,距离下部50px*/
        }
        /*网页主体内容公共模块下的每个子模块公共样式*/
        .nav .one>div{
            padding: 20px; /*内边距20*/
        }
        /*网页主体内容公共模块下的每个子模块公共样式*/
        .nav .one>div>p{
            line-height: 2em; /*垂直居中*/
            text-indent: 2em; /*文本首行缩进2字符*/
        }
    </style>
</head>
<body>
    <!-- 整体页面 -->
    <div class="nav">
        <!-- 导航栏 -->
        <ul class="ul">
            <!-- 导航栏子标签 -->
            <li>
                <span class="one_icon nav_btn" value="one">one</span>
            </li>
            <!-- 导航栏子标签 -->
            <li>
                <span class="one_icon nav_btn" value="two">two</span>
            </li>
            <!-- 导航栏子标签 -->
            <li>
                <span class="one_icon nav_btn" value="three">three</span>
            </li>
            <!-- 导航栏子标签 -->
            <li>
                <span class="one_icon nav_btn" value="four">four</span>
            </li>
        </ul>

        <!-- 换行使页面可视化效果更好 -->
        <br><br>

        <!-- 分页内容存放区 -->
        <div class="one">

            <!-- 第一页内容 -->
            <div class="onePage page">
                <p>百度、谷歌等网站之所以能很快在海量数据中找到需要的数据,得益于其搜索引擎,本文将介绍搜索引擎的基本知识及中文分词的方法,并通过demo演示如何进行数据检索。</p>
            </div>

            <!-- 第二页内容 -->
            <div class="twoPage page" style="display: none; background: pink">
                <p>本文以示例的形式,由浅入深讲解Nginx限流相关配置,是对简略的 "官方文档" 的积极补充。 Nginx限流使用的是leaky bucket算法,如对算法感兴趣,可移步 "维基百科" 先行阅读。不过不了解此算法,不影响阅读本文。 </p>
            </div>

            <!-- 第三页内容 -->
            <div class="threePage page" style="display: none; color: teal">
                <p>引言 网络上版本管理系统之争持久而喧嚣,依照声量来讲目前应该是Git占了较大的优势。不过我们本文的关注点在于代码的分支管理模型,因为大家无论是用SVN或者Git,目的是为了解决研发过程管理中的实际问题。我这里整理几种分支管理模型,这样大家可以对照自己的痛点选择合适的模型。</p>
            </div>

            <!-- 第四页内容 -->
            <div class="fourPage page" style="display: none; border: 1px solid #ccc">
                <p>本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅,文中若有不正之处,万望告知。 前端的一大工作内容就是去兼容页面在不同内核的浏览器,不同的设备,不同的分辨率下的行为,使页面的能正常工作在各种各样的宿主环境当中。</p>
            </div>    
        </div>
    </div>

    <!-- 不需要网页跳转,可分页显示内容的JS部分 -->
    <script type="text/javascript">
        
        // 定义按钮函数
        $('.nav_btn').click(function(){

            // 获取按钮名字
            var pageName = $(this).attr('value');
            // 获取按钮类名
            var pageClass = '.'+pageName+'Page';

            // 背景跳转
            $('.nav_btn').css('background','');

            // 非按钮对应页面隐藏
            $('.page').css('display','none');

            // 按钮对应页面显示
            $(pageClass).css('display','block');
        })
    </script>
</body>
</html>