Ich verwende 2 Sätze Polymer Papier-Tabs + die Eisen-Scroll-Spion benutzerdefinierte Element .Wenn die Registerkarte ausgewählt ist, zeigen Sie die nächste Registerkarte .. wenn die letzte Registerkarte ausgewählt ist, zeige erste Registerkarte (Polymerpapier-Tabs + Scroll-Spion)
Paper Tabs verwendet das Element "Iron-Selector", damit es seinen Status beibehalten kann. Iron Scroll Spy animiert das Scrollen zu den Abschnitten der Seite, wenn auf die Registerkarte geklickt wird, und aktualisiert auch den Status der Papierregisterkarten beim Scrollen. Jetzt möchte ich einen "Paperfab" -Button an der Unterseite hinzufügen, der es dem Benutzer ermöglicht, zum nächsten Abschnitt zu springen.
Mein Ziel:
✔ Wenn "Header Tab 1" ausgewählt, show "Fußzeile Tab 2"
✔ Wenn "Header Tab 2" ausgewählt, show "Fußzeile Register 3"
✔ Wenn "Header Tab 3" ausgewählt, show "Fußzeile Tab 4"
✖ Wenn "Kopflasche 4" ausgewählt, show "Fußzeile Tab 1"
Fast es haben ...
Demo:http://oneezy.com/demo/scroll-spy/index.html
jsfiddle:https://jsfiddle.net/oneeezy/c3ertupe
(Ich bin polygit in jsfiddle verwenden, und ich gibt es einige seltsame Sprunghaftigkeit los mit diesem Beispiel ... warum habe ich den ersten Demo-Link zur Verfügung gestellt).
Standardmäßig sind die Fußzeilentabellen "grau". Ich benutze CSS-Pseudo-Selektoren, um den "ausgewählten" Footer-Tab schwarz zu machen ... Aber ich komme zu kurz. Wenn "Kopfzeilenreiter 4" ausgewählt ist, wird "Fußzeilenreiter 1" nicht angezeigt. Dies ist das letzte Puzzleteil. Ich würde gerne CSS verwenden, wenn überhaupt möglich oder JavaScript deklarativ verwenden.
Was wäre der beste Weg, um dies zum Laufen zu bringen?
Code:
<base href="https://polygit.org/iron-scroll-spy+zecat+v1.0/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
<link rel="import" href="iron-scroll-spy/iron-scroll-spy.html">
<link rel="import" href="iron-scroll-spy/iron-scroll-spy-behavior.html">
<link rel="import" href="app-layout/app-header/app-header.html">
<link rel="import" href="app-layout/app-toolbar/app-toolbar.html">
<link rel="import" href="app-layout/app-scroll-effects/app-scroll-effects.html">
<link rel="import" href="paper-tabs/paper-tabs.html">
<link rel="import" href="paper-tabs/paper-tab.html">
<link rel="import" href="paper-fab/paper-fab.html">
<link rel="import" href="iron-icons/hardware-icons.html">
<!-- DOM Module
---------------------------------------->
<dom-module id="scroll-spy-app">
<template>
<style>
:host {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
position: relative;
height: 100%;
padding-top: 150px;
}
/* Flex Classes */
.flex-horizontal { display: -ms-flexbox; -ms-flex-direction: row; display: -webkit-flex; -webkit-flex-direction: row; display: flex; flex-direction: row; }
.flex-vertical { display: -ms-flexbox; -ms-flex-direction: column; display: -webkit-flex; -webkit-flex-direction: column; display: flex; flex-direction: column; }
/* HEADER TABS (normal order)
***************************************************************************************************************************************************************************/
app-header { background: #009688; position: fixed; top: 0; left: 0; width: 100%; height: 128px; }
app-header app-toolbar { background: #009688; }
app-header app-toolbar.toolbar-top { position: relative; z-index: 1; }
app-header app-toolbar.toolbar-bottom { position: relative; z-index: 2; }
/* FOOTER TABS (Custom Order)
***************************************************************************************************************************************************************************/
footer { position: fixed; bottom: 0; right: 0; width: 100%; z-index: 100; background: #ccc; }
footer paper-tabs { position: relative; height: 70px; }
footer paper-tabs paper-tab paper-fab { background: black; }
/* Inactive */
footer paper-tabs paper-tab { opacity: .25; }
footer paper-tabs paper-tab:nth-of-type(1) { } /* order: 4; */
footer paper-tabs paper-tab:nth-of-type(2) { } /* order: 1; */
footer paper-tabs paper-tab:nth-of-type(3) { } /* order: 2; */
footer paper-tabs paper-tab:nth-of-type(4) { } /* order: 3; */
/* Selected */
footer paper-tabs paper-tab.iron-selected { }
footer paper-tabs paper-tab.iron-selected:nth-of-type(1) ~ paper-tab:nth-of-type(2) { opacity: 1; display: block; }
footer paper-tabs paper-tab.iron-selected:nth-of-type(2) ~ paper-tab:nth-of-type(3) { opacity: 1; display: block; }
footer paper-tabs paper-tab.iron-selected:nth-of-type(3) ~ paper-tab:nth-of-type(4) { opacity: 1; display: block; }
footer paper-tabs paper-tab.iron-selected:nth-of-type(4) ~ paper-tab:nth-of-type(1) { opacity: 1; display: block; }
/* MAIN CONTENT (Scroll Spy)
***************************************************************************************************************************************************************************/
section { min-height: 100vh; }
section iron-scroll-spy { }
section iron-scroll-spy div { min-height: 100vh; padding: 250px 100px; border-bottom: 1px solid grey; }
</style>
<app-header condenses reveals fixed effects="waterfall">
<app-toolbar class="toolbar-top">Iron Scroll Spy</app-toolbar>
<app-toolbar class="toolbar-bottom" sticky>
<paper-tabs selected="{{scrollSelected}}">
<paper-tab>Tab 1</paper-tab>
<paper-tab>Tab 2</paper-tab>
<paper-tab>Tab 3</paper-tab>
<paper-tab>Tab 4</paper-tab>
</paper-tabs>
</app-toolbar>
</app-header>
<section id="scrollTarget">
<iron-scroll-spy selected="{{scrollSelected}}" id="scrollSpy">
<div>
<h1>Section 1</h1>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, provident asperiores. Itaque quas architecto commodi, quam dicta beatae blanditiis obcaecati, voluptatibus, quisquam sint necessitatibus aliquid vero sunt dolor iusto quos!</span>
</div>
<div>
<h1>Section 2</h1>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, provident asperiores. Itaque quas architecto commodi, quam dicta beatae blanditiis obcaecati, voluptatibus, quisquam sint necessitatibus aliquid vero sunt dolor iusto quos!</span>
</div>
<div>
<h1>Section 3</h1>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, provident asperiores. Itaque quas architecto commodi, quam dicta beatae blanditiis obcaecati, voluptatibus, quisquam sint necessitatibus aliquid vero sunt dolor iusto quos!</span>
</div>
<div>
<h1>Section 4</h1>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, provident asperiores. Itaque quas architecto commodi, quam dicta beatae blanditiis obcaecati, voluptatibus, quisquam sint necessitatibus aliquid vero sunt dolor iusto quos!</span>
</div>
</iron-scroll-spy>
</section>
<footer>
<paper-tabs selected="{{scrollSelected}}" align-bottom="true">
<paper-tab tab="hidden">
Tab 1
<paper-fab icon="hardware:keyboard-arrow-up"></paper-fab>
</paper-tab>
<paper-tab tab="active">
Tab 2
<paper-fab icon="hardware:keyboard-arrow-down"></paper-fab>
</paper-tab>
<paper-tab tab="hidden">
Tab 3
<paper-fab icon="hardware:keyboard-arrow-down"></paper-fab>
</paper-tab>
<paper-tab tab="hidden">
Tab 4
<paper-fab icon="hardware:keyboard-arrow-down"></paper-fab>
</paper-tab>
</paper-tabs>
</footer>
</template>
<script>
Polymer({
is: 'scroll-spy-app',
ready: function() {
this.$.scrollSpy.scrollTarget;
}
});
</script>
</dom-module>
<!-- Custom Element
---------------------------------------->
<scroll-spy-app></scroll-spy-app>
nette Lösung! Danke, Mann – Oneezy