0

現在、大学在学中に行った作品の一部を紹介するポートフォリオ サイトを構築しており、1 ページのデザインに落ち着いています。私がサイトに望んでいるのは、下にスクロールしてさまざまなセクションに「入る」と、ナビゲーション バーの下にある下向き矢印が (アニメーションとして) 現在アクティブなセクション/ナビゲーション項目の下に水平にスライドすることです。

私は何を試しましたか?正直に言うと、何もありません。私は答えを探しているわけではありませんが、それはいいことですが、出発点が必要です。主な問題は、それを各リスト項目の下に「スナップ」して、テキストの完全に中央に配置し、さまざまなディスプレイ解像度に対応する方法が本当にわからないことです。

HTML

  <div id="header">
        <div class="topbar">
        </div>
        <div class="headbar">
            <nav>
                <div class="wrapper">
                    <ul>
                        <li><a href="#home">Home</a></li>
                        <li><a href="#about">About</a></li>
                        <li><a href="#work">Projects</a></li>
                        <li><a href="#contact">Contact</a></li>
                        <li><a href="#">Blog</a></li>
                    </ul>
                </div>
            </nav>
        </div>
        <div class="shadow">
        </div>
        <div class="current"></div>
    </div>

CSS

.wrapper {
width: 920px;
margin: 0 auto;
}

#header {
position: fixed;
width: 100%;
}

#header .topbar {
height: 10px;
background-color: #386c93;
}

#header .headbar {
height: 60px;
background: #f2f2f2;
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmMmYyZjIiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjY2JlYmZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
background: -moz-linear-gradient(top, #ffffff 0%, #f2f2f2 100%, #cbebff 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f2f2f2), color-stop(100%,#cbebff));
background: -webkit-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: linear-gradient(to bottom, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cbebff',GradientType=0 );
border-bottom: 1px solid #9b9999;
}

#header .shadow {
height: 17px;
background-image: url('shadow.png');
background-repeat: none;
background-position: center;
}

#header a {
color: #5c5959;
text-decoration: none;
}

#header a:hover {
color: #0092ff;
}

#header .current {
background-image: url('nav-pointer.PNG');
height: 19px;
width: 22px;
margin-top: -18px;
margin-left: 715px;
}

#header ul{
padding-top: 20px;
text-align: center;
list-style: none;
}

#header li {
font-size: 16px;
//float: left;
display: inline;
color: #5c5959;
padding: 30px;
}

誰もが簡単に生活できるようにするためだけに JSFiddle を作成しました - http://jsfiddle.net/GW6CG/2/ - CSS が少し面倒な場合は申し訳ありません。

または、ここでサイトをライブで見ることができます: http://www.jonline.me.uk/dev/

お時間をいただきありがとうございました!

4

2 に答える 2

2

この機能をゼロから作成しても意味がありません。これを実現するために、すでに多くのプラグインが作成されています。1 つはscrollit.jsです。

また、スクロール時におならの音を追加したい場合は、fartscroll.jsを確認してください。

私が助けたことを願っています。

于 2013-09-25T16:45:11.267 に答える
1

少し前に、これのスケルトンとして簡単に使用できるものを書きました: http://jsfiddle.net/LYqVk/2/

JQuery は次のようになります。

$('a[href*=#]').click(function (e) {
    e.preventDefault();

    var id = $(this).attr('href');
    var scrollTo = $(id).offset().top;

    $('html,body').animate({
        'scrollTop': scrollTo
    }, 500);
});

$(document).scroll(function () {
    highlightSection();
});

function highlightSection() {
    // Where's the scroll at?
    var currentPosition = $(this).scrollTop();

    // Remove highlights from all
    $('a[href*=#]').removeClass('highlighted');

    // Loop over each section
    $('#content .section').each(function () {
        // Calculate the start and end position of the section
        var sectionStart = $(this).offset().top;
        var sectionEnd = sectionStart + $(this).height();

        // If the current scroll lies between the start and the end of this section
        if (currentPosition >= sectionStart  && currentPosition < sectionEnd) {
            // Highlight the corresponding anchors
            $('a[href=#' + $(this).attr('id') + ']').addClass('highlighted');
        }
    });
};

highlightSection();

コード内のコメントをよく読んでください。うまくいけば十分に説明できますが、基本的なプロセスではない場合に備えて、次のようにします。

  1. ページのどこにいるかを調べます -.scrollTop()
  2. ループオーバー.sections
  3. 現在の位置がセクションの上部と下部の間にある場合、それが強調表示したいものです*

    • あなたの場合、それは矢印になります。
于 2013-09-25T16:45:11.613 に答える