2009-07-03 10 views
6

텍스트를 이미지로 바꾸는 CSS 기술에 익숙합니다. 예를 들어, 다음은 9 가지입니다. http://css-tricks.com/nine-techniques-for-css-image-replacement/CSS를 사용하여 이미지 바꾸기

이미지를 바꾸는 기술은 있습니까? 이미지의 배경을 이미지로 설정 한 다음 이미지의 전경을 숨기거나 이동 (이미지 src 요소) 할 수 있습니까?

바꾸려는 이미지가있는 사이트의 스킨을 쓰려고합니다. 감사.

나는 HTML 또는 JavaScript를 변경하지 않고 순수한 CSS로이 작업을 수행하려고 노력하고 있습니다.

맞습니다. 기존 페이지에 새 스타일 시트를 추가하려고합니다. HTML을 수정하거나 자바 스크립트를 사용할 수 없다고합시다.

+0

귀하의 질문이 내게 어울리지 않습니다. 다시 말해 줄 수 있습니까? 특히 이미지의 이미지 배경. 이미지는 하나의 엔티티입니다. 서로 위에 두 개의 이미지를 쌓을 수는 있지만 이미지의 구성 요소를 선택적으로 제거 할 수는 없습니다. –

+1

그는 본질적으로 CSS로 의 src를 변경하려고합니다. 나는 이것을하기 전에해야만했지만 불행히도 나는 그것을 어떻게 끝내 었는지 기억하지 못합니다 ... –

+0

@musicfreak : 게시 된 답변의 문제점이 무엇인지 확실하지 않습니다. Mike가 "상황"에 대해 더 자세히 설명해야 할 필요가 있습니다. HTML 컨텐트를 변경할 수는 없지만 페이지에 스타일 시트를 추가 할 수는 있습니까? – DisgruntledGoat

답변

6

약간의 땜질 후에, 나는 그것을 알아 낸 것입니다!

img.someclass { 
    background: url("NEW IMAGE URL") top right; 
    height: 0; 
    width: 0; 
    padding: 200px 550px 0 0; /* Insert actual image size (height width 0 0) */ 
} 

실제 이미지의 높이와 너비는 0이지만 패딩이있는 이미지의 크기를 채우기 위해 상자가 확장됩니다. 이 단점은 Internet Explorer의 이전 버전에서는 완벽하지 않게 보입니다.

+0

굉장, 음악. 여기에 나를 위해 일하는 데모가 있습니다 ... http://www.screentoaster.com/watch/stU09VQkdIR11ZRlheXltbU1dS – MikeNereson

+1

젠장, 솔루션은 제 두 번째 시도 (작동하지만 불필요하게 복잡합니다)보다 훨씬 좋습니다. – DisgruntledGoat

+0

DisgruntledGoat, 여전히 좋은 시도입니다. 도와 주셔서 감사합니다. – MikeNereson

-1

아마도 요소의 불투명도를 설정하고 배경을 원하는 이미지로 설정할 수 있습니다.

Musicfreak : 두 개의 요소를 사용했습니다.

+1

불투명도는 배경에 영향을 미치므로 배경도 투명하게 만듭니다. –

+0

좋은 아이디어. – MikeNereson

+0

@EFraim : 그렇다면 OP는 HTML을 바꿀 수 없다고 말했습니다. 그래도 여전히 좋은 생각이기 때문에 나는 당신에게 다운 보더를하지 않았다. –

-2

두 주마다 서로 다른 클래스를 지정하고 이벤트가 발생하면 이미지가 변경되도록 자바 스크립트를 작성합니다. 예를 들어

:

.firsImage { background:transparent url(/images/someImage.jpg) no-repeat; } 
.secondIMage { background:transparent url(/images/image2.jpg) no-repeat; } 

HTML :

<div id="imageDiv" class="firstImage"> some content </div> 
<a onclick="changeImage()">Change the image!</a> 

자바 스크립트 : 이미지를 대체 할

function changeImage(){ 
    var imageDiv = document.getElementById("imageDiv") 

    if (imageDiv.className === "firsImage") 
     document.getElementById("imageDiv").className = "secondImage" 
    else 
     document.getElementById("imageDiv").className = "firstImage" 
} 
+1

그는 이벤트에서 src가 변경되는 것을 원하지 않지만 CSS를 사용하여 이미지의 src를 본질적으로 변경하려고합니다. –

0

가장 좋은 방법은 배경 위치를 설정하는 것입니다. 먼저 두 개의 서로 다른 이미지를 만들어 동일한 이미지에서 서로 위에 놓습니다. 스킨 요소가 50x50 픽셀이라면 50x100 이미지를 만듭니다.

는 다음과 같은 몇 가지 코드를 사용

.skinElement1 { 
    background: #fff url("image.png") no-repeat 0 0; 
} 
.skinElement2 { 
    background: #fff url("image.png") no-repeat 0 -50px; 
} 

그래서 당신이 필요한 양만큼 배경을 이동 두 번째 이미지를 볼 수 있습니다. 자바 스크립트 나 서버 측 코드를 사용하여 적절한 클래스를 설정할 수 있습니다.

2

이미지를 둘러싼 요소가있는 경우 (예 : DIV를 사용하면 배경 이미지를 no-repeat 및 position과 함께 설정 한 다음 이미지를 display:none으로 설정할 수 있습니다.

또는 작동하지 않는 위험한 해결책이 있습니다. 이미지를 화면 외부에 배치 한 다음 :after 의사 요소를 사용하여 배경 이미지를 설정합니다. 그것은 실행 가능해야하지만, 제대로 작동하려면 값으로 바이올린을해야합니다. 그것은 비록 IE6에서 작동하지 않습니다.

<style> 
    img.test { 
    background: url('image_to_show.png') no-repeat right top; 
    position: relative; 
    left: -16000px; 
    } 
    img.test:after { 
    content: "."; 
    color: transparent; 
    display: block; 
    width: 16000px; 
    } 
</style> 

<img class="test" src="image_to_hide.png"> 
+0

흠, 흥미 롭다. 나는 사용에 대해 생각해 보지 않았다. +1 –

+0

또한 누군가가이 방법을 사용하기를 원한다면 사이드 노트로 거대한 해상도의 와이드 스크린 모니터 때문에 왼쪽에 500px 이상 올려야합니다. –

+0

musicfreak, 네 말이 맞아. 편집 됨. 원래 나는 원래의 이미지가 캔버스 가장자리에 가깝다면 작동 할 것이라고 가정했습니다. 왜냐하면 다른 요소를 가로 질러 요소를 "늘릴"수있을 것이라고 생각하지 않았기 때문입니다. – DisgruntledGoat

관련 문제