background-position-y가 Firefox (CSS를 통해)에서 작동하지 않습니까?


답변:


120

위치 x가 0이면 작성하는 것 외에 다른 해결책은 없습니다.

background-position: 0 100px;

background-position-x는 IE에서 제공되는 비표준 구현입니다. 크롬은 그것을 복사했지만 슬프게도 파이어 폭스는 아닙니다 ...

그러나이 솔루션은 큰 배경에 별도의 스프라이트가 있고 행과 열이 다른 것을 의미하는 경우 완벽하지 않을 수 있습니다 ... (예를 들어 각 행에 다른 로고가 있고 오른쪽에 선택 / 호버가 있고 왼쪽에 일반)이 경우, 큰 그림을 별도의 이미지로 분리하거나 CSS에 다른 조합을 작성하는 것이 좋습니다. 스프라이트 수에 따라 하나 또는 다른 하나가 최선의 선택이 될 수 있습니다.


감사합니다. 나는 표준을 준수하도록 -x 및 -y 사용을 제거했습니다. :)
Kenny Wyland

항상 FF ... 이상한와 마찬가지로
믈라덴 Janjetovic

19

이것을 사용하십시오

background: url("path-to-url.png") 89px 78px no-repeat;

이 대신

background-image: url("path");
background-position-x: 89px;
background-position-y: 78px;
background-repeat: no-repeat;

3
firefox가 "대신"마크 업을 지원하지 않는다는 사실이 재밌지 만 그래, 작동합니다 .. ty;)
Adrian

16

파이어 폭스 (49)는 해제됩니다 에 대한 지원 가진 - background-position-[xy]31 일까지 사용할 수있는 이전 버전의 9 월 2016 -in CSS 변수를 사용하는 것과 비슷 하나의 축에 배경의 위치를 달성하기 위해 background-position-xbackground-position-y. CSS 변수는 2015 년 12 월 에 후보 추천 상태 도달했습니다 .

다음은 마우스 오버시 스프라이트 이미지의 배경 위치 축을 수정하는 완전한 브라우저 간 예제입니다.

:root {
    --bgX: 0px;
    --bgY: 0px;
}

a {
    background-position: 0px 0px;
    background-position: var(--bgX) var(--bgY);
}

a:hover, a:focus { background-position-x: -54px; --bgX: -54px; }
a:active   { background-position-x: -108px; --bgX: -108px; }
a.facebook { background-position-y: -20px; --bgY: -20px;  }
a.gplus    { background-position-y: -40px; --bgY: -40px;  }

거의 1 년이 지났고, Firefox가 여전히 유일한 구현입니다. 좋은 징조가 아닙니다.
BoltClock

1
@BoltClock : 마이크로 소프트 가 고려 중이며 , 몇 표의 찬성 으로 크롬을위한 개발이 막 (다시) 시작 되었습니다. 그러나이 특정 사용 사례의 경우 CSS 변수를 사용할 수 있습니다. CSS 변수를 구현하는 유일한 브라우저는 background-position-x / y를 시뮬레이션하는 데 필요한 유일한 브라우저이기 때문입니다.
Andy E

멋있는! 내가 추측 한 적이없는 것보다 늦게 늦는 것이 좋습니다. :)
BoltClock

2
방금 알았습니다. CSS 변수가 CR로가는 중 입니다. 또한 멋지다.
BoltClock

안녕하세요 2016! 여전히 구현하지 ... : \
ghettosoak

15

background-position-y :10px;되어 작동하지 파이어 폭스 웹 브라우저에서.

다음 유형의 구문을 따라야합니다.

background-position: 10px 15px;

10px는 "position-x"에 바인딩되고 15px는 "position-y"에 바인딩됩니다.

100 % 작업 솔루션

더 많은 예를 보려면 이 URL 을 따르십시오.


이것은 ff v. 38에서 작동합니다. 올바른 솔루션으로 표시되어야합니다. 이 문제는 이후 정확히 달성
mcabe

3

배경 위치를 직접 사용하지 않는 이유는 무엇 입니까?

사용하다:

background-position : 40% 56%;

대신에:

background-position-x : 40%;
background-position-y : 56%

3
background: url("path") 89px 78px no-repeat;

이미지와 함께 배경을 원하는 경우 작동하지 않습니다. 따라서 다음을 사용하십시오.

background: orange url("path-to-image.png") 89px 78px no-repeat;

1

이것은 나를 위해 일했습니다.

a {
    background-image: url(/image.jpg);
    width: 228px;
    height: 78px;
    display: inline-block;
}

a:hover {
    background-position: 0 -78px;
    background-repeat: no-repeat;
}

0

오프셋 측정을 명시 적으로 명시해야합니다. 오늘이 정확한 문제를 발견했는데 브라우저가 CSS에서 제공하는 값을 해석하는 방식 때문이었습니다.

예를 들어, 이것은 Chrome에서 완벽하게 작동합니다.

background: url("my-image.png") 100 100 no-repeat;

그러나 Firefox 및 IE의 경우 다음을 작성해야합니다.

background: url("my-image.png") 100px 100px no-repeat;

도움이 되었기를 바랍니다.


0

그러나이 솔루션은 큰 배경에 별도의 스프라이트가 있고 행과 열이 다른 것을 의미하는 경우 완벽하지 않을 수 있습니다 ... (예를 들어 각 행에 다른 로고가 있고 오른쪽에 선택 / 호버가 있고 왼쪽에 일반)이 경우, 큰 그림을 별도의 이미지로 분리하거나 CSS에 다른 조합을 작성하는 것이 좋습니다. 스프라이트 수에 따라 하나 또는 다른 하나가 최선의 선택이 될 수 있습니다.

내 것은 열과 행이있는 스프라이트와 같은 테이블이있는 Orabîg에 의해 언급 된 정확한 문제가 있습니다.

아래는 js를 사용하여 해결 방법으로 사용한 것입니다.

firefoxFixBackgroundposition:function(){
  $('.circle').on({
    mouseenter: function(){
       $(this).css('background-position',$(this).css('background-position').split(' ')[0]+' -10px');   
    },
    mouseleave: function(){
       $(this).css('background-position',$(this).css('background-position').split(' ')[0]+' 0');   
    }
  });      
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.