저는 아직 코딩 초보자입니다. 따라서 수정이 불가능한이 버그로 인해 멈췄습니다. 나는 내 개인 웹 사이트 http://yeemachine.com에서 scrolltop 함수의 특정 임계 값에 도달했을 때 "html content"를 변경하는 끈적한 navbar를 사용하고 있습니다.어떻게 동적으로 변화하는 요소에서 더 안정적으로 변수를 가져 옵니까?
이것은 초기 함수를로드하는 데 사용됩니다. 버그는 var = pdr 또는 .class2의 높이를로드하려고 시도 할 때 발생합니다. .class2는 Masonry.js를 사용하여 이미지 세트가있는 div입니다. 때로는 때리거나 맞지 않습니다. 대부분의 경우 첫 번째로드에서 모든 이미지가 서로 겹쳐지면 height가 2000+ px로 높이가됩니다.
$(window).load(function() {
var mn = $(".main-nav");
var mns = "main-nav-scrolled";
var hdr = $('#container').height();
var pdr = $('.class2').height();
var gdr = $('.class1').height();
var sdr = $('.hundred').height();
console.log(gdr);
console.log(pdr);
var windowPosY = $(this).scrollTop();
$(window).scroll(function() {
if($(this).scrollTop() > (hdr*.85) && windowPosY < (hdr+(gdr)))
{
mn.addClass(mns);
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Design<br><i class='fa fa-chevron-down'></i>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() < (hdr*.85) && windowPosY){
mn.removeClass(mns);
$(".iconcontainer li a").html("<i class='fa fa-chevron-up hideicon'></i><br>Richard<br>Yee<br><i class='fa fa-chevron-down'></i>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() > (hdr+gdr) && windowPosY < (hdr+gdr+pdr)){
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Painting?<br><i class='fa fa-chevron-down'></i>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() > (hdr+gdr+pdr) && windowPosY < (hdr+gdr+pdr+sdr)){
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Sound<br><i class='fa fa-chevron-down hideicon'></i>");
$(".iconcontainer li a").css("font-size", "10px");
}
});
이 초기로드 기능과 함께 창이 크기가 조정될 때마다 문제를 해결하는 크기 조정 기능이 있습니다.
var resizeTimeout;
$(window).resize(function() {
clearTimeout(resizeTimeout);
resizeTimeout= setTimeout(doneResizing, 500);
});
doneResizing(); //trigger resize handling code for initialization
});
function doneResizing()
{
mn = $(".main-nav");
mns = "main-nav-scrolled";
hdr = $('#container').height();
gdr = $('.class1').height();
pdr = $('.class2').height();
sdr = $('.hundred').height();
$(window).scroll(function() {
var windowPosY = $(this).scrollTop();
console.log(gdr);
if($(this).scrollTop() > (hdr*.85) && windowPosY < (hdr+(gdr)))
{
mn.addClass(mns);
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Design<br><i class='fa fa-chevron-down'>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() < (hdr*.85) && windowPosY){
mn.removeClass(mns);
$(".iconcontainer li a").html("<i class='fa fa-chevron-up hideicon'></i><br>Richard<br>Yee<br><i class='fa fa-chevron-down'>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() > (hdr+(gdr)) && windowPosY < (hdr+gdr+pdr)){
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Painting?<br><i class='fa fa-chevron-down'>");
$(".iconcontainer li a").css("font-size", "10px");
}
if($(this).scrollTop() > (hdr+gdr+pdr) && windowPosY < (hdr+(gdr)+pdr+sdr)){
$(".iconcontainer li a").html("<i class='fa fa-chevron-up'></i><br>Sound<br><i class='fa fa-chevron-down hideicon'>");
$(".iconcontainer li a").css("font-size", "10px");
}
});
}
div의 모든 이미지를로드 한 후 높이를 변경하거나 지연시키는 방법이 있습니까? 나는 Stack에서 본 많은 메소드를 시도했지만 올바르게 구현하지 못했다고 생각한다. 내 지저분한 JS가 격자 무늬 이미지를 얻으려면 Masonry를 사용하여 영향을 미치는지 확실하지 않습니다. 나머지 코드는 다음과 같습니다. https://github.com/yeemachine/yeemachine/blob/gh-pages/index.html
고마워요!
두 개를 함께 연결하는 데 문제가 있습니다. 이미지 그리드를 관리하는 스크립트는 main.js 파일에 저장되어 있습니다.이 파일은 벽돌, imageloaded 및 modernizr이 합병 된 것으로 끝 났으며, 둘 사이의 링크가 GridFx라고 생각합니다. 그러나 확실하지 않습니다. 둘을 연결하는 방법에 나는 길을 잃다. https://github.com/yeemachine/yeemachine/blob/gh-pages/js/main.js –
Masonry가 준비되면 main.js에서 이벤트를 트리거하고 다른 스크립트에서 해당 이벤트를 수신 할 수 있습니다. trigger ('gridfx-loaded')와 같은 것이''masonry.on ('layoutComplete', function() {$ ('body')}'var masonry = new Masonry (self.gridEl, {...}); , [self]);});'. 불행하게도 이것은 원래의 질문과 관련이 없기 때문에 코드 구조 조정을 논의 할 곳이 아닙니다. 다른 질문이 있으면 새 질문을 엽니 다. – asemahle