Kann mir jemand einen Rat geben? Ich habe den folgenden Code zu erkennen, wenn Elemente im Ansichtsfenster sind, leider die erste .each-Schleife (die nicht durch Scrollen ausgelöst wird) gibt für jedes Element sichtbar, warum ist das?Ist sichtbar im Ansichtsfenster ist sichtbar für alles auf Last
Antwort
Also habe ich Ihren Code leicht geändert und in der Konsole überprüft, ob die Klassen hinzugefügt und entfernt werden, und es hat funktioniert. Versuchen Sie den Code unten und überprüfen Sie in der Firebug, wie Sie blättern, wird Klassen hinzugefügt und entfernt für alles, was dort im Ansichtsfenster:
$.fn.visible = function(detectPartial) {
detectPartial = (!!detectPartial); // if null or undefined, default to false
var viewport = $(window),
vpWidth = viewport.width(),
vpHeight = viewport.height(),
vpTop = viewport.scrollTop() + $('#navbar').outerHeight(),
vpBottom = vpTop + vpHeight,
vpLeft = viewport.scrollLeft(),
vpRight = vpLeft + vpWidth,
elementOffset = $(this).offset(),
elementTopArea = elementOffset.top + ((detectPartial) ? $(this).height() : 0),
elementBottomArea = elementOffset.top + ((detectPartial) ? 0 : $(this).height()),
elementLeftArea = elementOffset.left + ((detectPartial) ? $(this).width() : 0),
elementRightArea = elementOffset.left + ((detectPartial) ? 0 : $(this).width());
return ((elementBottomArea <= vpBottom) && (elementTopArea >= vpTop)) && ((elementRightArea <= vpRight) && (elementLeftArea >= vpLeft));
}
$(document).ready(function() {
addInAndOut();
$(window).scroll(function() {
addInAndOut();
});
});
function addInAndOut() {
$('.portfolio-image-box').each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.removeClass("out").addClass("in");
} else {
el.removeClass("in").addClass("out");
}
})
}
#navbar {
border-radius: 0px;
background-color: #ffffff;
border-color: #ffffff;
margin-bottom: 0;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1;
font-size: 1.5vh;
padding: 1.5vh;
}
#navbar .fa {
cursor: pointer;
}
body {
background-color: #fff;
padding-top: 6vh;
text-align: center;
}
.portfolio-image-box {
height: 25%;
width: 14.66vw;
margin: 1%;
background-color: #FFFFFF;
border: 1px solid #e3e3e3;
overflow: hidden;
text-align: center;
display: inline-block;
float: left;
border-radius: 0.5vh;
cursor: pointer;
}
.portfolio-image-box:hover {
transition: 0.5s;
opacity: 0.6;
}
#portfolio {
text-align: center;
background-color: #F7F7F7;
}
#portfolio-container {
margin-bottom: 1%;
}
.portfolio-image {
height: 100%;
}
#body-title {
color: #c84630;
}
.col-md-12 {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<h1 id="body-title" class="col-md-6 col-md-offset-3">Portfolio</h1>
</div>
<div class="col-md-6 col-md-offset-3 portfolio">
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
<div class="portfolio-image-box col-md-12">
<img class="portfolio-image" src="http://via.placeholder.com/350x150">
</div>
</div>
Probieren Sie das einfach mit den Chrome-Entwicklertools aus. Es markiert immer noch jedes Bild wie in der Standardeinstellung und ändert es dann erst wieder, wenn ich gescrollt habe und das Ansichtsfenster betreten und verlassen habe. –
Ich habe auf "Code-Snippet ausführen" geklickt und kann nur ein "in" sehen, während alle anderen als "out" markiert sind. Beim Scrollen markiert er neue eingehende als "in", während vorherige als "out" markiert werden. Ich laufe auch auf Chrome. –
Ich habe gerade den Ausschnitt überprüft und es funktioniert, aber wenn ich Ihre Antwort auf die Seite, die ich entwickle, kopiere, habe ich immer noch das gleiche Problem? –
- 1. Überprüfen Sie, welches Element im Ansichtsfenster sichtbar ist (nicht, wenn ein bestimmtes Element sichtbar ist)
- 2. ist ('Sichtbar'). == true auf nicht-sichtbar Eltern
- 3. Code ist auf Modal sichtbar
- 4. Zusätzliche Instanzvariable im Controller ist nicht sichtbar?
- 5. CSRF-Token ist im Quellcode sichtbar
- 6. Master-Menü ist auf mobilen Geräten nicht sichtbar, aber ist sichtbar auf Internetexplorer
- 7. Scroll-Seite, so dass Element ist sichtbar
- 8. CAShapeLayer ist nicht sichtbar
- 9. Gewährleistung Sprites ist sichtbar auf Android
- 10. Eingabefeld, das für Benutzer nicht sichtbar ist
- 11. Symbolleiste ist nicht sichtbar auf Android
- 12. Ermitteln, ob ein Gitter im Ansichtsfenster nach der aktuellen Kamera sichtbar ist
- 13. Wie viel Code ist für JVM sichtbar?
- 14. Warum ist Favicon nicht sichtbar
- 15. Ist die Dokumenterstellungswarteschlange für Hackage sichtbar?
- 16. php5.6 Variable ist nicht sichtbar für Code
- 17. Prüfen, ob ein Punkt im Ansichtsfenster ist
- 18. Überprüfen, ob ein Div im Viewport mit jQuery sichtbar ist
- 19. Vollbild-Fragment ist nicht sichtbar
- 20. Hintergrundbild ist nicht sichtbar Css
- 21. Profilelement im Browser sichtbar
- 22. Image ist nicht sichtbar nach anderem Layout sichtbar auf reales Gerät eingestellt ist
- 23. Bootstrap-Schieberegler ist nicht sichtbar
- 24. Überprüfen, ob td zuletzt sichtbar ist td
- 25. Cheking wenn div sichtbar ist
- 26. Ermitteln, ob Zelle sichtbar ist
- 27. Canvas: Erkennen, ob es im Browser sichtbar ist
- 28. Best Practice für wann Element auf dem Bildschirm sichtbar ist?
- 29. Warum ist meine Symbolleiste im Querformat nicht sichtbar?
- 30. Skybox ist nicht sichtbar durch transparente Objekte
Können Sie uns ein wenig von HTML oder Geige für uns, um den Code zu testen? –
https://jsfiddle.net/dancinwolfe/7fydgdL3/4/ Ich denke, das ist richtig, musste mit dem HTML und CSS ein kleines bisschen verwirren, als ich Laravel und Bootstrap verwendet. –
Danke, darauf zu schauen –