문제
좋아 ... 그래서 여기 문제가 있습니다.
10 (10) 25px x 25px 아이콘으로 구성된 CSS 스프라이트 이미지가 수평으로 배치되어 250px 너비의 스프라이트 이미지를 초래합니다.
이 25x25 이미지를 축소판으로 사용하고 있습니다. 이 이미지에서 초기 시야에서 30%의 불투명도를 갖고자하며 사용자가 그들을 맴돌 때 불투명도는 100% (1) 여야합니다.
그래서 내가 한 일은 불투명도가 30%로 두 번째 줄의 이미지를 만드는 것이 었습니다. 이제 250px x 50px의 스프라이트 이미지가 있습니다. 100%에서 상위 25px, 최하위 25px는 30%입니다.
다음과 같이 html을 설정합니다.
<a href="largeimage1.jpg" class="thumb1"></a>
<a href="largeimage2.jpg" class="thumb1"></a>
<a href="largeimage2.jpg" class="thumb1"></a>
etc...
그리고 CSS :
a { display: block; float: left; width: 25px; height: 25px; background: url("250_x_50_spriteimage.jpg") 0 -25px no-repeat; }
.thumb1 { background-position: 0 0; }
.thumb2 { background-position: -25px 0; }
.thumb3 { background-position: -50px 0; }
a:hover { **background-position-y**: -25px; }
그러나 불행히도 이것은 불행히도 작동하지 않는 것처럼 보이지 않습니다. 배경 위치 Y는 Firefox에서 지원되지 않거나 표준이 아니지만 IE 특정입니다).
아이디어는 우리가 (만) 스프라이트 이미지를 y 축을 따라 바꾸고 x 축을 그대로두고 싶어한다는 것입니다 (또는 이전 클래스에서 설정된).
이에 대한 간단한 CSS 솔루션이 없다면 -이 불투명도 효과는 jQuery로 수행 할 수 있습니까? 따라서 엄지 손가락은 30% 불투명도로로드하고 사용자가 호버 할 때 100% 불투명도로 전환됩니까?
많은 감사,
중.
해결책
원하는 효과를 달성하기 위해 두 번째 아이콘 세트 나 JavaScript 사용이 필요하지 않습니다.
Lou가 지적했듯이 사용 opacity
아이콘을 30% 또는 완전히 보이게합니다. 엉망이 될 필요가 없습니다 background-position
더 이상.
계속해서 다음과 같이 스타일을 정의하십시오.
a {
opacity:0.3; /* for standard browsers */
filter: alpha(opacity = 30); /* for IE */
display: block;
float: left;
width: 25px;
height: 25px;
background: url("250_x_50_spriteimage.jpg") 0 -25px no-repeat;
}
a:hover {
opacity:1.0
filter: alpha(opacity = 100);
}
.thumb1 { background-position: 0 0; }
.thumb2 { background-position: -25px 0; }
.thumb3 { background-position: -50px 0; }
CSS 코드의 유효성 검사에 대해 걱정하는 경우 IE 특정 부품 (유효성 검사하지 않음)을 사용하여 구체적으로 타겟팅 된 CSS 파일에 넣으십시오. 조건부 의견.
도움이되기를 바랍니다.
다른 팁
나는 Lou의 대답이 당신이 원하는 일을하는 것을 믿습니다. 각 상태에 대한 클래스를 정의하고 X와 Y 좌표를 모두 설정하면됩니다.
페이딩의 효과를 원한다면 jQuery는 당신에게 그것을 할 수있는 방법을 제공합니다. 그렇다면 아마도 당신이 원하는 것을 얻을 수 있습니다.
$(".thumb").css("opacity", 0.33);
$(".thumb").hover(
function() {
$(this).fadeTo(300, 1.0);
},
function() {
$(this).fadeTo(1, 0.33);
}
);
편집하다: 피드백을 기반으로 업데이트되었습니다. 초기 불투명도가 설정되었습니다.
쉬운 방법
{background-position:100% 4px;}
Pixel과 함께 부모를 사용하여 배경 포지션 -Y 속성을 대체 할 수 있습니다.
참고 : 이것이 Mozilla에서 작동하려면 백그라운드 상착 속성을 "고정"하도록 설정해야합니다.
베어링이 있습니까?
--
10 개의 이미지 만 있으면 각 이미지에 대한 CSS 클래스 만 정의하십시오. 이렇게하면 상대 X 코드를 지정할 수 있습니다.
추신. 정확한 CSS를 사용하지 않기를 바랍니다. 해당 스타일을 A : 호버는 페이지의 모든 링크에 적용됩니다. 이미지화 된 스타일에만 적용해야합니다.
a { display: block;
float: left;
width: 25px;
height: 25px;
background: url("test.jpg") 0 -25px no-repeat;
}
.thumb1 { background-position: 0 0; }
.thumb2 { background-position: -25px 0; }
.thumb3 { background-position: -50px 0; }
.thumb1:hover { background-position: 0 -25px; }
.thumb2:hover { background-position: -25px -25px; }
.thumb3:hover { background-position: -50px -25px; }
도 있습니다 불투명..
이전 예제에서 일부 작은 누락, 오타 및 불필요한 코드. 코드가 다음과 같이 보일 수 있다고 생각합니다.
<style>
a { float: left; width: 25px; height: 25px; background-image: url("250_x_50_spriteimage.jpg"); }
a.thumb1 { background-position: 0 0; }
a.thumb2 { background-position: -25px 0; }
a.thumb3 { background-position: -50px 0; }
a { filter: alpha(opacity=30); -moz-opacity:.3; opacity:.3; }
a:hover { filter: alpha(opacity=100); -moz-opacity:1.0; opacity:1.0; }
</style>
<a href="largeimage1.jpg" class="thumb1"></a>
<a href="largeimage2.jpg" class="thumb2"></a>
<a href="largeimage2.jpg" class="thumb3"></a>