Vérifier si l'élément est entre 30% et 60% de la fenêtre d'affichage
Je suis en train de changer la couleur de <li>
éléments lorsqu'ils sont entre 30% et 60% de la fenêtre d'affichage.
Donc, j'ai cette grille d'éléments d'empilage côte à côte comme ceci:
J'ai couru dans quelques plugins comme des Waypoints, Fenêtre d'affichage Checker et quelques autres, mais rien de bon.
Une idée?
Je suis l'aide d'une jolie structure simple :
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;
}
- Veuillez fournir le code source de travailler sur
- Nice visual question, il suffit d'ajouter le code comme @AndreaLigios mentionné et votre question est parfait.
- Je suis entrain de créer un jsfiddle! Désolé pour le manque d'éléments, il est encore à un stade précoce.
InformationsquelleAutor Hook | 2015-04-27
Vous devez vous connecter pour publier un commentaire.
scroll
gestionnaire d'événement surwindow
li
éléments à vérifier si l'élément est dans l'intérêt de fenêtre de lali
position detop
et vérifier si elle est dans l'intérêt de fenêtre de la section.Démo:
Changé la hauteur de
li
pour la démo but.Voir les commentaires en ligne dans le code.
JS:
CSS:
HTML:
Amélioré @Tushar la solution pour le faire fonctionner, même après un redimensionnement de la fenêtre (un recalcul de la fenêtre d'affichage est nécessaire à chaque fois, pas seulement au début), et pour la faire démarrer l'a déjà souligné, sans avoir à faire défiler.
Également amélioré un peu le graphique de l'exemple pour mettre en surbrillance la région intéressée.
L'exécution de démo
JS:
CSS:
HTML:
scroll
, vous pouvez appeler la fonction de rappel en l'appelantfunction() {}());
comme ça.[[ Cet exemple vérifie si une partie de l'élément est à l'intérieur de la zone spécifiée ]]
Lorsque vous avez le haut et le bas des coordonnées de deux cases, vous pouvez vérifier si les deux zones de chevauchement en cochant:
Dans l'exemple suivant, bloc1 est de 30% à 60% de la partie de la fenêtre lors du box2 est chaque élément de la liste. Ajouter de l'anti-rebond de la fonction et nous avons:
JS:
CSS:
HTML:
Créer un div de largeur
width:100%
etheight:100%
qui représentent la fenêtre d'affichage. À l'intérieur de ce div, vous placez votre système de grille.Que vous avez besoin pour utiliser jquery
.position()
jquery positionJe n'ai pas tester, mais j'espère que cela fonctionne
J'étais libre de créer un plugin pour cela. Dans les options, vous pouvez définir des pourcentages, classe css, événement déclencheur, et le délai d'exécution (css changé de réactifs pour la présentation uniquement):
JS:
CSS:
HTML:
Violon ici