Überprüfen, ob element ist zwischen 30% und 60% des Viewports
Ich versuche, ändern Sie die Farbe <li>
Elemente, wenn Sie zwischen 30% und 60% des Viewports.
So, ich habe das raster dieser Elemente stapeln Seite an Seite wie diese:
Lief ich in paar plugins wie Waypoints, Viewport Checker und paar andere, aber nichts gutes.
Irgendeine Idee?
Bin ich mit einem ziemlich einfachen Struktur :
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<meta name="description" content="">
<meta name="author" content="">
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/styles.css">
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="js/main.js"></script>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
CSS:
ul {
margin: auto;
}
ul li {
width: 300px;
height: 200px;
background: #f5f5f5;
float: left;
margin: 10px;
}
ul li.middleviewport{
background:red;
}
- Bitte geben Sie einige Quellcode zu arbeiten
- Schöne visuelle Frage, nur fügen Sie den code wie @AndreaLigios erwähnt und deine Frage ist perfekt.
- Erstelle ich ein jsfiddle! Sorry für die fehlenden Elemente, es ist immer noch im frühen Stadium.
InformationsquelleAutor Hook | 2015-04-27
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
scroll
event-handler aufwindow
li
Elemente, um zu überprüfen, ob sich das element in der interessierten viewportli
position vontop
und prüfen, ob es im Interesse viewport Abschnitt.Demo:
Verändert die Höhe der
li
für demo-Zwecke.Siehe die inline-Kommentare im code.
JS:
CSS:
HTML:
Verbessert @Tushar die Lösung damit es funktioniert, auch nach einem resize des Fensters (eine Neuberechnung des Viewports notwendig ist, jedes mal, nicht nur am Anfang) zu machen, und es beginnen bereits hervorgehoben ist, ohne scrollen zu müssen.
Ebenfalls verbessert etwas die Grafik für das Beispiel markieren Sie den Bereich interessiert.
Ausführen demo
JS:
CSS:
HTML:
scroll
können Sie rufen Sie die callback-indem erfunction() {}());
wie diese.[[ Dieses Beispiel prüft, ob IRGENDEIN Teil des Elements innerhalb der angegebenen region ]]
Wenn Sie die oberen und unteren Koordinaten von zwei Boxen können Sie überprüfen, ob die beiden Kästchen überschneiden, durch die Prüfung:
Im folgenden Beispiel, box1, ist der 30%-60% Anteil der Fenster während der box2 ist jedes Listenelement. Hinzufügen debounce-Funktion, und wir haben:
JS:
CSS:
HTML:
Erstellen Sie ein div-Breite
width:100%
undheight:100%
vertreten, dass die viewport. Innerhalb dieses div-Element legen Sie Ihre grid-system.Als Sie brauchen, um jquery verwenden
.position()
jquery positionHabe ich nicht getestet, aber ich hoffe, es funktioniert
War ich frei, erstellen Sie ein plugin für diese. Innerhalb Optionen können Sie festlegen, in Prozent, css-Klasse, trigger-Ereignis und die Ausführung verzögern (css geändert reaktionsschnell Weg nur für Präsentationen):
JS:
CSS:
HTML:
Fiedel hier