Есть фото галерея, она отображает 5 элементов, остальные скрыты при помощи свойства overflow : hiden, вопрос: как можно сделать подсчет и вывод числа скрытых элементов? Должно получиться вот так https://i.stack.imgur.com/zRZKU.png
#lightgallery {
overflow: hidden;
margin-top: 30px;
height: 122px;
}
#lightgallery img {
width: 176px;
}
#lightgallery a {
color: transparent;
}
#lightgallery a:nth-child(5) img {
filter: blur(5px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="js/lightgallery.min.js"></script>
<div id="lightgallery">
<a href="assets/img/light1.jpg">
<img src="assets/img/light1.jpg" alt="">
</a>
<a href="assets/img/light2.jpg">
<img src="assets/img/light2.jpg" alt="">
</a>
<a href="assets/img/light3.jpg">
<img src="assets/img/light3.jpg" alt="">
</a>
<a href="assets/img/light4.jpg">
<img src="assets/img/light4.jpg" alt="">
</a>
<a href="assets/img/light5.jpg">
<img src="assets/img/light5.jpg" alt="">
</a>
<a href="assets/img/light4.jpg">
<img src="assets/img/light4.jpg" alt="">
</a>
<a href="assets/img/light5.jpg">
<img src="assets/img/light5.jpg" alt="">
</a>
</div>
var invisible = 0;
$('#lightgallery a').each(function(){
if($(this).position().top > 0){
invisible++;
}
})
console.log(invisible);
#lightgallery {
overflow: hidden;
margin-top: 30px;
height: 122px;
position:relative;/*обязательно*/
}
#lightgallery a{
display:inline-block;
}
#lightgallery img {
width: 176px;
}
#lightgallery a {
color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="lightgallery">
<a href="assets/img/light1.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light2.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light3.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light4.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light5.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light4.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
<a href="assets/img/light5.jpg">
<img src="https://picsum.photos/200/300/?random" alt="">
</a>
</div>
На чистом JS можно использовать Element.getBoundingClientRect()
Суть в том чтобы проверять смещение относительно viewport, если дочернее top
смещение >= bottom
смещению родителя, то элемент находится вне родителя.
Этот вариант не привязывается к одному ряду, можно сделать и два ряда или сто, хоть чтобы дети фото все вмещались в родителя, в любых случаях будет считать правильно.
В коде @Геннадий Журов вышесказанное работать не будет.
const a = document.querySelectorAll('#lightgallery a')
let invisible = 0
a.forEach(el => {
const { bottom } = el.parentNode.getBoundingClientRect()
const { top } = el.getBoundingClientRect()
if (top >= bottom)
invisible++
})
console.log('Спрятанных элементов: ' + invisible)
#lightgallery {
overflow: hidden;
margin-top: 30px;
height: 122px;
position: relative; /* important */
}
#lightgallery a {
width: 176px;
display: inline-block;
height: 100%;
}
#lightgallery img {
width: 100%;
}
#lightgallery a {
color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="lightgallery">
<a href="assets/img/light1.jpg">
<img src="https://picsum.photos/200/300/?random=1">
</a>
<a href="assets/img/light2.jpg">
<img src="https://picsum.photos/200/300/?random=2">
</a>
<a href="assets/img/light3.jpg">
<img src="https://picsum.photos/200/300/?random=3">
</a>
<a href="assets/img/light4.jpg">
<img src="https://picsum.photos/200/300/?random=4">
</a>
<a href="assets/img/light5.jpg">
<img src="https://picsum.photos/200/300/?random=5">
</a>
<a href="assets/img/light4.jpg">
<img src="https://picsum.photos/200/300/?random=6">
</a>
<a href="assets/img/light5.jpg">
<img src="https://picsum.photos/200/300/?random=7">
</a>
</div>
Решил свою задачу вот так, может кому пригодится, всем спасибо за помощь.
var countPhoto = 0;
countPhoto = $('#lightgallery a').length-5;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Передаю с помощью шаблонизатора Jinja, данные из Django в JavaScriptКод выглядит примерно так: