2009-11-21 8 views
31

li 요소를 가리키면서 CSS 클래스의 배경 위치를 변경하고 싶습니다.jQuery로 배경 위치 변경

HTML :

<div id="carousel"> 
    <ul id="submenu"> 
     <li>Apple</li> 
     <li>Orange</li> 
    </ul> 
</div> 

CSS :

#carousel { 
    float: left; 
    width: 960px; 
    height: 360px; 
    background: url(../images/carousel.png); 
} 

이 작업을 수행하는 방법에 대한 어떤 제안이? submenu 사업부의 리튬이 공중 선회하는 carousel 사업부에 backgroundPosition에 대한

답변

41

당신은 이동 :

$(document).ready(function(){ 
    $('#submenu li').hover(function(){ 
     $('#carousel').css('background-position', '10px 10px'); 
    }, function(){ 
     $('#carousel').css('background-position', ''); 
    }); 
}); 
+20

'newValue'의 유효한 값은 무엇입니까? 그것은 문자열인가? 어떤 형식입니까? –

+0

그는 'CSS 속성 backgroundPosition'을 변경합니다. 자세한 내용은 여기를 참조하십시오. http://www.w3schools.com/css/pr_background-position.asp – Jakub

+1

@Jakub - 링크는 404 – Neil

2
$('#submenu li').hover(function(){ 
    $('#carousel').css('backgroundPosition', newValue); 
}); 
+1

실제로 불완전합니다. 호버링이 중지되면 backgroundPostion을 재설정하지 않습니다. 그것도하지 않기 때문에, 이미 복원되어야하는 backgroundPosition에 의미있는 값이 설정되어 있다는 것을 고려하지 않았습니다. – jitter

+0

그가 Jitter를 요청했습니다. –

+1

아니요. 다시 질문하십시오. "li-element를 유혹하는 동안." "호버링이 멈 추면 리셋을 원합니다."라는 의미는 어느 것입니까? – jitter

1

설정 새로운 값. 호버링이 끝나면 backgroundPosition을 제거하고 backgroundPosition을 이전 값으로 재설정합니다. 여기

$('#submenu li').hover(function() { 
    if ($('#carousel').data('oldbackgroundPosition')==undefined) { 
     $('#carousel').data('oldbackgroundPosition', $('#carousel').css('backgroundPosition')); 
    } 
    $('#carousel').css('backgroundPosition', [enternewvaluehere]); 
}, 
function() { 
    var reset = ''; 
    if ($('#carousel').data('oldbackgroundPosition') != undefined) { 
     reset = $('#carousel').data('oldbackgroundPosition'); 
     $('#carousel').removeData('oldbackgroundPosition'); 
    } 
    $('#carousel').css('backgroundPosition', reset); 
}); 
26

너희들이 일을 복잡하게한다. 이 작업은 CSS에서 간단하게 수행 할 수 있습니다.

#carousel li { background-position:0px 0px; } 
#carousel li:hover { background-position:100px 0px; } 
+3

은 IE6에서 작동하지 않습니다. – meo

+15

@meo 나는 "누가 신경 써?"라고 유혹을 느낍니다. 그러나 Argh. IE6. –

+15

IE6가 마침내 죽었다. 심지어 MS도 걱정하지 않는다. – Neil

1

반역의 대답은 위의 사실 때문에 CSS로 작동하지 않습니다, '배경 위치는'올바른 버전 그래서 '배경 위치-X'와 '배경 위치-Y'에 대한 속기는 실제로 자신의 코드는 다음과 같습니다 :

$(document).ready(function(){ 
    $('#submenu li').hover(function(){ 
     $('#carousel').css('background-position-x', newValueX); 
     $('#carousel').css('background-position-y', newValue); 
    }, function(){ 
     $('#carousel').css('background-position-x', oldValueX); 
     $('#carousel').css('background-position-y', oldValueY); 
    }); 
}); 

악화되는 현실에 와서 내 머리를 두드리는 데 약 4 시간이 걸렸습니다.

+1

일부 브라우저에서는 작동하지만 Firefox는 작동하지 않습니다. [background-position-x는 표준 CSS가 아니며 모든 브라우저에서 지원되지 않습니다.] (http : // stackoverflow.co.kr/questions/9511104/jquery-background-position-x-issue) - 예 : Firefox는 jQuery v2에서도이를 무시합니다. [이 데모보기] (http://jsbin.com/ivupuj/2/edit) – user568458

+0

[다음은 x 또는 y 크로스 브라우저를 조정하는 것과 비슷한 기능입니다.] (http : // stackoverflow .com/a/18515087/568458) – user568458