2016-04-07 20 views
0

Ich habe eine horizontale Fortschrittsleiste, die basierend auf der Bildlaufposition erweitert oder verkleinert wird. horizontale Fortschrittsbalkenbreite = vertikale Scrollposition des Dokuments.Scrollen zur Verwendung des Datenattributwerts

<div class="progress-bar" style="width:50%;"></div> 

Damit habe ich eine Lesezeichen-Funktion, die ein Caret (Element) auf den Fortschrittsbalken anhängt (Element). Es ist absolut relativ zur Fortschrittsbalkenbreite positioniert. Es kann mehrere Lesezeichen geben.

<div class="progress-bar" style="width:50%;"> 
    <div class="caret" style="left:50%;"></div> 
    <div class="caret" style="left:60%;"></div> 
</div> 

Was würde ich tun möchte, ist eine scrollTo Funktion zu konstruieren, wenn ich auf jedem caret klicken Sie auf die linke Position als scrollTo Variable.

Siehe https://jsfiddle.net/jabuka/spevhqxv/

Danke.

Antwort

0

Ich habe in ausgearbeitet, indem die Daten-Titel Targeting

<div class="progress-bar" style="width: 50%;"> 
    <div class="caret" style=" left:50%;" data-title="50"></div> 
    <div class="caret" style=" left:60%;" data-title="50"></div> 
</div> 

Der scrollTo Prozentsatz muss arbeiten.

$('body').on('click', '.caret', function() { 
    var scrollPerc = $(this).attr('data-title')/100; 
    var dh = $(document).height(); 
    var scrollAmount = Math.floor(dh * scrollPerc); 
    $('html,body').animate({ 
     scrollTop: scrollAmount 
    }, 600); 
}); 

JS Fiddle

+1

Schön zu sehen, dass Sie eine Lösung finden konnten. Mein einziger Kommentar wäre, dass Sie falsch auf "Datentitel" zugreifen. Wenn Sie das Präfix 'data-' verwenden, sollten Sie '$ (this) .data ('title')' verwenden, um den Wert zu erhalten. Werfen Sie einen Blick auf diese Antwort für weitere Informationen http://stackoverflow.com/questions/36438237/property-of-dom-element-different-depending-on-selector-jquery/36458025#36458025 – Kevin

+0

Danke - ja und aktualisiert. – Jabuka

Verwandte Themen