2017-03-11 5 views
2

Ich habe weit und breit gesucht, aber ich kann es nicht auf den Interwebs finden.Force Scroll auf Inhalt Element

Das ist mein Problem.

Ich hätte gerne mein <main> Element, um eine overflow-y:scroll zu haben. Keine Bildlaufleiste auf dem Körper, aber auf der Hauptseite.

Ich habe einen Stift gemacht zu illustrieren: http://codepen.io/magalielinda/pen/rymzBG/

Wie Sie die Scrollbar zeigt sehen können, aber es ist nicht scrollen. Pourquoi? Und wie mache ich es so, dass es scrollt?

Hier ist meine Demo html für diejenigen von Ihnen, dass kann es leicht auf diese Weise mehr beantworten:

<main> 
    <div class="content__container"> 
    </div> 
</main> 

und Demo-CSS:

body { 
    overflow: hidden; 
    height: 100%; 
} 

main, 
.content__container { 
    height: 100%; 
} 

main { 
    overflow-y: scroll; 
    background-color: red; 
    border: 1px solid blue; 
} 

.content__container { 
    max-width: 200px; 
    margin: 0 auto; 
    background-color: aqua; 
    height: 1000px; 
} 

Thanks so much!

UPDATE

ich aus dieser Lösung angepasst. Dies ist das Ergebnis. http://codepen.io/magalielinda/pen/JWyVOM

+0

Sie müssen Javascript dafür. – jmargolisvt

+0

@jmargolisvt nein, du nicht. –

+0

anscheinend nicht. Die Lösung von Michael Coker (was für ein cooler Name) hat funktioniert. –

Antwort

1

height: 100% wird 1000px sein, den Inhalt von .content__container aufzunehmen. Wenn Sie main, .content__container, body inspizieren, sind sie alle 1000px groß. So ist der gesamte Inhalt einfach übergelaufen body und Sie haben overflow: hidden auf body eingestellt - keine Bildlaufleiste.

Sie müssen nur die Höhe von main begrenzen, damit es einen Überlauf zum Durchblättern gibt. Wenn Sie stattdessen 100vh verwenden, scrollen die Dinge wie erwartet.

body { 
 
    overflow: hidden; 
 
    height: 100%; 
 
} 
 

 
main { 
 
    height: 100vh; 
 
    overflow-y: scroll; 
 
    background-color: red; 
 
    border: 1px solid blue; 
 
} 
 

 
.content__container { 
 
    max-width: 200px; 
 
    margin: 0 auto; 
 
    background-color: aqua; 
 
    height: 1000px; 
 
}
<main> 
 
    <div class="content__container"> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    foobar<br> 
 
    </div> 
 
</main>

+0

Sie verdienen ein gutes Karma. Vielen Dank! Das hat sehr gut funktioniert. –

+0

@MagalieLinda du bist willkommen. –

+0

@MagalieLinda Willkommen in SO btw. Stellen Sie sicher, dass Sie die Antworten verbessern, die Ihrer Meinung nach hilfreich waren, und wählen Sie dann eine der Antworten als akzeptierte Antwort aus (Häkchen bei den Antworten), sobald Sie das Gefühl haben, dass das Problem gelöst ist. Upvotes und akzeptierende Antworten geben positives Karma;) –

Verwandte Themen