JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<div class="col-xs-7 col-xs-offset-4 text-center" id="texte">
    <h1>Main title</h1>
    <h2>First book</h2>

    <h3>Section 1</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean fringilla in mauris ac posuere. Curabitur vitae faucibus massa. Phasellus a justo in tellus laoreet vestibulum. Mauris lacus ante, aliquam vitae faucibus et, iaculis vitae tortor. Cras porta nisi nisl, a mattis est tristique eget. Nullam eget diam mollis tellus maximus scelerisque sit amet in sem. Cras lectus lectus, tempor ut sapien vel, ornare hendrerit mi. Aenean vestibulum maximus orci, non convallis eros. Integer vehicula facilisis leo. Nulla faucibus iaculis fermentum. Pellentesque in nisi non risus vulputate imperdiet. Cras id turpis lacinia, vehicula nisi non, fermentum orci. Phasellus est est, malesuada in varius sit amet, pellentesque condimentum velit. Vivamus fermentum ut felis non imperdiet. Sed non lacinia sem. Cras eget ipsum justo.</p>

    <h4>Sub-section 1.1</h4>
    <p>Nullam vestibulum ex ac mauris feugiat, eu gravida tortor pharetra. Sed dignissim euismod ex quis rutrum. Pellentesque metus purus, laoreet ac tortor eget, tincidunt hendrerit nulla. Suspendisse ut laoreet turpis. Cras ullamcorper est eget turpis euismod pulvinar. Nam pulvinar mauris a est lacinia posuere. Quisque dapibus imperdiet odio non fringilla. Integer sit amet malesuada nisi. Pellentesque consequat, leo blandit tristique sodales, felis nunc consequat tortor, in efficitur urna magna vel magna. Proin hendrerit leo sit amet lacinia molestie. Nullam felis neque, molestie ut accumsan eget, tincidunt id risus. Etiam in nulla elit. Proin quis interdum ipsum. Quisque vitae nunc bibendum, aliquam tortor aliquam, semper ante. In fringilla ligula vel pretium cursus. Nunc sollicitudin viverra magna, nec condimentum ipsum porta eget.</p>

    <p>Nunc hendrerit urna id fermentum...

CSS

.sdsm-menu li:hover {
    color: #146;
}

.sdsm-menu li.active.first{
    font-weight: bold;
    color: #a19d38;
}

.sdsm-menu li.active {
    color: #a19d38;
}

JavaScript

/*!
 jQuery.sdScrollMenu v0.2
 (c) 2015 Steve David <http://www.steve-david.com>
 MIT-style license.
 */

;(function($) {

    $.fn.extend({
        sdScrollMenu: function(options) {
            if (options && typeof(options) == 'object') {
                options = $.extend({}, $.sdScrollMenu.defaults, options);
            }

            if($(this).length == 1) {
                new $.sdScrollMenu(this, options);
            }

            return this;
        }
    });

    $.lis = [];

    $.sdScrollMenu = function(el, options) {
        var $el = $(el)
            , $menu;

        $menu = $.sdScrollMenu.buildMenu(el, options);

        $menu.find('li').css('cursor', 'pointer').on('click', function(e) {
            $.sdScrollMenu.scrollTo(el, $(this).attr('data-id'), options);
        });

        $(window).on('scroll', function() {
            $.sdScrollMenu.activeLinks(this, $menu, options);
        });

        $(window).on('load', function() {
            $.sdScrollMenu.activeLinks(this, $menu, options);
            $.sdScrollMenu.innerScroll($menu, options);
        });

        $(window).on('resize', function() {
            $.sdScrollMenu.activeLinks(this, $menu, options);
            $.sdScrollMenu.innerScroll($menu, options);
        });

    };

    $.sdScrollMenu.scrollMenu = function($li, $menu, options) {
        if(typeof($li.position()) !== 'undefined') {
            var liTop = $li.position().top;
            if(liTop > $menu.height() || liTop < 0) {
                $menu.animate({
                    scrollTop: liTop
                }, {
                    duration: 500,
                });
            }
        }
    };  

    $.sdScrollMenu.innerScroll = function($menu, options) {
        if($menu.css('overflow-y') == 'scroll') {
            $menu.css({
                'height': 'auto',
                'overflow-y': 'auto',
            })
        } else if($menu.height() > $(window).height()) {
            $menu.css({
               ...