0

ページのどこかに配置され、ユーザーがページを下にスクロールすると、位置が変更され、メインコンテンツとともにスクロールされ、常に表示されたままになるサイドバーを実装する方法は?

これが例です (下にスクロールしてください)


まあ!次のスタイルを指定する必要がありました(これは私にはあまり明白ではありませんでした):

.affix {
    position: fixed;
}

そしてもちろん、jQuery を追加するには:

$('.leftnav').affix();

私を助けようとしてくれた皆さん、本当にありがとう!

4

4 に答える 4

1

リンク先のページのソースをチェックアウトします。解決策は、メニューの上端が画面の上端に達するのに十分なだけユーザーがスクロールダウンしたときに固定された位置に変更することです (これはscrollイベントをリッスンすることによって行われます)。最初(ページが提供されるとき)、メニューの位置は固定されていません。

編集:またはさらに良いことに...これはまさにそれを行うスクリプトですhttp://twitter.github.com/bootstrap/javascript.html#affix ;)

于 2012-08-23T12:19:29.150 に答える
1

試してくださいposition: fixed

http://jsfiddle.net/FlameTrap/mfyAc/

**編集**

これを試して:

http://jsfiddle.net/FlameTrap/Wqb3g/1/

于 2012-08-23T12:22:55.187 に答える
0

すべてのスクロールイベントをリッスンし、スクロールするときに要素の位置を変更してfixed、しきい値の後に変更するか、継続的に更新する必要があります。

var newPos = Math.max( startPosition, scrollTop + scrollOffset)
于 2012-08-23T12:19:33.377 に答える
0

あなたはこのようなものを見ていますか

デモを見る

JS コード:

        var ns = (navigator.appName.indexOf("Netscape") != -1);
        var d = document;
        function JSFX_FloatDiv(id, sx, sy)
        {
            var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
            var px = document.layers ? "" : "px";
            window[id + "_obj"] = el;
            if(d.layers)el.style=el;
            el.cx = el.sx = sx;el.cy = el.sy = sy;
            el.sP=function(x,y){this.style.left=x+px;this.style.top=y+px;};
        
            el.floatIt=function()
            {
                var pX, pY;
                pX = (this.sx >= 0) ? 0 : ns ? innerWidth : 
                document.documentElement && document.documentElement.clientWidth ? 
                document.documentElement.clientWidth : document.body.clientWidth;
                pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? 
                document.documentElement.scrollTop : document.body.scrollTop;
                if(this.sy<0) 
                pY += ns ? innerHeight : document.documentElement && document.documentElement.clientHeight ? 
                document.documentElement.clientHeight : document.body.clientHeight;
                this.cx += (pX + this.sx - this.cx)/8;this.cy += (pY + this.sy - this.cy)/8;
                this.sP(this.cx, this.cy);
                setTimeout(this.id + "_obj.floatIt()", 40);
            }
            return el;
        }

HTML:

<div id="main">
    <div id="divTopLeft" style="position:absolute">
        <script>JSFX_FloatDiv("divTopLeft", 10,30).floatIt();</script>
        <ul>
            <li id="img1">Image 1</li>
            <li id="img2">Image 2</li>
            <li id="img3">Image 3</li>
            <li id="img4">Image 4</li>
        </ul>
    </div>
</div>

CSS:

    #main {
        width: 1280px;
        height:720px;
        background: url(http://www.designworks.com.pk/example/background/images/1.jpg) left top no-repeat;
        margin: 0;
        position:relative;
        z-index:2;
    }
    ul { margin:20px; display:inline-block; }
    ul li { cursor:pointer; list-style-type: none; color: #fff; background:#000; border:1px solid #fff; font-size:16px; font-weight: bold; padding: 5px; margin:2px 0 0 0;  }
    ul li#img1 { background:#F90; }
   
于 2012-08-23T12:22:54.343 に答える