Абсолютные элементы частиц, перекрывающих другие элементы вопроса
Я разместил этот скрипт изящных частиц на своей странице для интересного взгляда, а также для игры с более сложным JS, но обнаружил, что некоторые из частиц, которые я увеличил, чтобы выглядеть как пятна боке, плавают по ссылкам на изображения, вызывая их -нажатый, который, хотя и не является большой проблемой, может быть раздражающим.
Мне интересно, как изменить этот скрипт, чтобы частицы были за ссылками кнопок изображений. Существует нет CSS, за исключением одного раздела, где он применяется сценарием в разделе Отображение частиц.
Кстати, я попытался дать изображение и связать z-индекс 10000, чтобы посмотреть, поможет ли это, но все равно не пойдет.
<script type="text/javascript">
function Particle() {
this.path = '../static/images/';
this.images = ['particle1.png', 'particle2.png', 'particle3.png', 'particle4.png'];
// Randomly Pick a Particle Model
this.image = this.images[randomInt(this.images.length)];
this.file = this.path + this.image;
// Create a Particle DOM
this.element = document.createElement('img');
this.speed().newPoint().display().newPoint().fly();};
// Generate Random Speed
Particle.prototype.speed = function() {
this.duration = (randomInt(10) + 5) * 1100;
return this;
};
// Generate a Random Position
Particle.prototype.newPoint = function() {
this.pointX = randomInt(window.innerWidth - 100);
this.pointY = randomInt(window.innerHeight - 100);
return this;
};
// Display the Particle
Particle.prototype.display = function() {
$(this.element)
.attr('src', this.file)
.css('position', 'absolute')
.css('top', this.pointY)
.css('left', this.pointX);
$(document.body).append(this.element);
return this;
};
// Animate Particle Movements
Particle.prototype.fly = function() {
var self = this;
$(this.element).animate({
"top": this.pointY,
"left": this.pointX,
}, this.duration, 'linear', function(){
self.speed().newPoint().fly();
});
};
function randomInt(max) {
// Generate a random integer (0 <= randomInt < max)
return Math.floor(Math.random() * max);
}
$(function(){
var total = 30;
var particles = [];
for (i = 0; i < total; i++){
particles[i] = new Particle();
}
});
</script>
1 ответ
Использование .prepend
(вместо .append
)
$(document.body).prepend( this.element );
таким образом ваши абсолютные частицы будут расположены под другими позиционированными элементами страницы из-за естественного приоритета DOM в Z-порядке.
Из вышесказанного вы можете понять, что вам также нужно добавить position
к вашей главной странице, чтобы сделать эту работу:
http://jsbin.com/cizut/1/edit?html,css,js,output
Заключение:
#mainPageWrapper{
position:relative;
/* .....other styles */
}
$(document.body).prepend( this.element );