2014-05-08 9 views
7

volevo usare lo ui-Utils module: scrollfix per avere un <div> all'inizio a 100px, e se lo scorrimento verso il basso, dovrebbe essere fissato a 0px.angolare ui-utils scrollfix

<div ui-scrollfix="+100">test</div> 

Sul sito scrollfix demo è un hintbox, che dice:

ricordare che questa direttiva aggiunge solo una classe ui-scrollfix all'elemento. Spetta a te aggiungere le regole CSS corrispondenti, tuttavia ti dà anche la possibilità di aggiungere altre regole, se preferisci.

Anche su quella pagina demo non funziona davvero ... O mi aspetto qualcosa di sbagliato.

risposta

22

Come hai accennato al suggerimento sul sito demo scrollfix:

Ricorda che questa direttiva aggiunge solo una classe ui-scrollfix all'elemento. Spetta a te aggiungere le regole CSS corrispondenti, tuttavia ti dà anche la possibilità di aggiungere altre regole, se preferisci.

Quindi questa direttiva funziona in modo che una singola classe CSS ui-scrollfix viene aggiunto l'elemento ogni volta che viene raggiunta la condizione di scorrimento, e la classe viene rimosso in altro caso (quando si scorre indietro verso l'alto). Pertanto è tua responsabilità aggiungere stile CSS corretto.

È possibile farlo aggiungendo un'altra classe o ID CSS all'elemento e definire lo stile CSS corretto per i due casi, quello normale e quello fisso mentre si scorre verso il basso. Ad esempio, è possibile avere qualcosa di simile in voi codice:

<div ui-scrollfix="+100" class="yourclass">test</div> 

Si può avere qualsiasi styling applicata in questo stato normale:

.yourclass { 
    /* your CSS code, 100px from the top of the page */ 
} 

Quando i ui-scrollfix incendi condizione (in questo caso abbiamo impostarlo su +100, quindi quando lo scorrimento della pagina è aumentato di 100 px dopo l'elemento), all'elemento <div> verrà aggiunta un'altra classe:

È possibile utilizzare questo per impostare il corretto stile CSS:

.yourclass.ui-scrollfix { 
    position:fixed; 
    top:0; 
} 

Here is a demo che utilizza la direttiva sulla barra di navigazione superiore che è assolutamente posizionato 100px dalla parte superiore della pagina, e mentre si scorre verso il basso che rimanga riparato sulla parte superiore della pagina. Analogamente, il secondo (intitolato "Second Navbar") si colloca al di sotto di quello superiore. Il codice CSS che sto utilizzando per la barra superiore è:

.navbar-fixed-top { 
    position:absolute; 
    top:100px; 
} 

.navbar-fixed-top.ui-scrollfix { 
    position: fixed; 
    top:0; 
} 

Inoltre, penso che sia importante ricordare che ui-scrollfix="+100" significa che la classe ui-scrollfix verrà aggiunta all'elemento quando la parte superiore dei rotoli viewport 100px dopo l'elemento. Se desideri che l'elemento ottenga la classe CSS ui-scrollfix mentre raggiunge la parte superiore della finestra, puoi aggiungere ui-scrollfix="+0".

Spero che questo aiuti.

+0

thx per quel suggerimento !!!! – Joerg

+1

Prego! – van100j

0

Hai impostato il css corretto? So che devi impostare la classe anche per ui-scrollfix.

+0

come dovrebbe un css corretto per questo aspetto? – Joerg

+0

Ci scusiamo per il ritardo. Sembra che jajourda.eclipse ce l'abbia fatta prima di me. – crtjer

2

** ecco una plunker se questo è più facile :) ** http://run.plnkr.co/plunks/FN4s5U9JEFG1VXzy7azQ/

  1. Assicurarsi angolare è bootstrap e funzionante;

    1. Vai alla seguente URL per ottenere i JS: https://github.com/angular-ui/ui-utils/blob/master/modules/scrollfix/scrollfix.js

    2. striscia direttive dall'oggetto del modulo e scriverla sul proprio modulo che è già boostrapped (in html: ng-app = "SampleApp"/in js: sampleApp.directive (...)

    3. incollare il seguente codice HTML come elementi secondari dell'elemento che ha riposto la direttiva ng-app su :(dovuto scrivere il link al funky ottenere attraverso lo stack) https: \ // github.com/angular-ui/ui-utils/blob/master/modules/scrollfix/demo/index.html

  2. incollare il seguente elemento di stile in linea in html basta mettere in atto (stile in linea è solo per esempio scopi):

    .ui-scrollfix { sfondo: verde; larghezza: 100%; posizione: fissa; superiore: 0; lasciato: 0; }

6. GODERE fisso di testata (gli elementi saranno look funky perché hai posizione applicata: fissa a due di loro, ma questo è solo per farti installato e funzionante)