2012-09-25 3 views
2

많은 웹 사이트에서 옵션을 변경하여 이미지를 사용자 정의 할 수 있습니다.Jquery/Java Script : 옵션 (예 : 도형, 색상)을 사용하여 이미지/아바타 사용자 정의

예를 들어,이 Barbie website을 사용하면 나만의 바비 인형을 만들 수 있습니다. 클릭하는 동안 다양한 헤어 스타일과 옷을 클릭하고 기본 이미지 업데이트를 클릭 할 수 있습니다.

기타 의류 웹 사이트는 비슷한 일을합니다.

Java Script 또는 Jquery에서이를 수행하는 방법을 보여주는 자습서가 있습니까?

이상하게도 다른 상황에 맞게 코드를 다시 사용할 수있는 템플릿을 찾고 있습니다.

내가 자습서의 몇 가지를 발견하지만 그들은 모두가 PHP 사용 이 Bokehman -이 웹 사이트는 자바 스크립트를 사용 말한다, 그러나 실제로 PHP Code Canyon 사용 -이 스크립트는 요소를 쉽게을 교환하는 템플릿, 그러나 다시 PHP를 사용합니다.

나는 Javascript really doesn't support writing files을 알고 있으므로 PHP 솔루션을 사용하여 이미지를 저장해야합니다. 그러나 이미지를 만들만한 것을 찾고 있습니다. 이 단계에서 저는 저축에 대해 신경 쓰지 않습니다.

+0

내가 여기에 도달했습니다.이것은 내가 원하는 것이지만, 불행히도 대답이 없습니다. 모든 전문가들은 제발 .... – zamil

+0

@zamil, 죄송합니다. 나는 대답을 게시했다 (나는 옛날에 그것을 타이핑 한 것을 기억한다). 나는 그것을 곧 게시 할 것이다. –

+0

@zamil 아래에 게시했습니다. 의견에 질문을 게시하십시오. –

답변

1

이것이 결국 내가 한 것입니다.

1) 자산마다 별도의 CSS 클래스를 만듭니다.

여러 변수로 구성된 에셋의 클래스를 연결합니다. .input 상위 클래스를 작성하여 선택 양식의 이미지 자산을 표시하십시오. 완료된 아바타에 이미지 애셋을 표시하려면 .preview 하위 클래스를 만듭니다.

예 :

.skin-brown .preview .preview-body { 
background-image(<<image-asset>>); 
} 

.input .input-skin-brown { 
background-image(<<image-asset>>); 
} 

.input .input-hair-style-1 { 
background-image(<<image-asset>>); 
} 


.hair-style-1.hair-colour-black .preview .preview-hair { 
background-image(<<image-asset>>); 
} 

2) HTML을 생성합니다. 기본 자산 옵션을 래퍼 요소에 할당합니다.

<div id="wrapper" class="hair-style-1 hair-colour-black skin-brown"> 

<div class="inputs"> 
Put your input FORM here. Use a HTML form element. 
</div> 


<div class="preview"> 
The finished avatar goes here. 
<div class="preview-hair"></div> 
<div class="preview-eyes"></div> 
<div class="preview-body"></div> 
</div> 

</div> 

3) 입력 양식의 옵션을 클릭 한 때 래퍼 클래스를 조작하기 위해 jQuery를 사용합니다. jQuery: Swap Classes based on Class position

: 사용자가 헤어 스타일 2를 클릭하면

는, 래퍼의 헤어 스타일-1 클래스는 이것에 대해 별도의 질문이 헤어 스타일이

로 변경됩니다 예를 들어,

그게 전부입니다. 작성된 CSS 클래스와 클래스 작동을 전환하는 Jquery 코드가 있으면 실제로는 매우 간단합니다. 모든 입력을 양식으로 저장 했으므로 사용자가 제출을 클릭하면 다른 프로세스에 값을 보낼 수 있습니다.

팁 :

1) 사용 SASS/SCSS는 CSS를 작성. 어레이를 생성하고 sass에서 루프를 반복하면 css를 쉽게 유지 관리 할 수 ​​있습니다. Sass: Using two @each lists in SCSS CSS - SASS: Using @each based mixins to generate multiple backgrounds

2)는 CSS 스프라이트를 사용하지 마십시오 : 여기 이것에 대해 질문이 있습니다. 스프라이트는로드 시간에 크게 도움이되지만, 관련 자산에 따라 스프라이트를 유지 관리하는 것이 좋다고 생각합니다. 당신을 위해 그것을 유지할 수있는 도구가 있지만, 이것은 최악의 경우이기 때문에 도구가 잘 작동한다고 생각하지 않습니다.

3)로드 속도가 문제입니다. 사용자가 아바타 요소를 클릭하면 CSS가로드되는 동안 약간의 지연이 있습니다. 사용자가 자신의 클릭이 등록되지 않았다고 생각할 때 이것은 문제입니다. 이 문제를 해결하려면 display:none을 사용하는 숨겨진 div를 만듭니다. 그런 다음 CSS3 다중 배경 특성을 사용하여 모든 자산을이 DIV에 (배경으로) 첨부하십시오. 이렇게하면 모든 자산이 처음에로드되므로 사용자가 클릭 할 때 지연이 발생하지 않습니다. 어레이가 숨겨진 DIV에 모든 자산을 자동으로 추가하기 때문에 SASS 루프와 어레이를 다시 사용하십시오.

4) 클래스 및 자산 이름에 대해 매우 신중하게 생각하십시오. 처음에는 코드를 이해하기 쉬울 것이라고 생각하면서 원래 친숙한 이름 (예 : haircolourblack, hairstylebob)을 사용했습니다. 그러나 추후에 자산이 변경되면 상황이 까다로워 질 수 있으므로 번호가 매겨진 이름 (haircolour1, hairstyle1)으로 갔으면합니다. (숫자를 사용하면 여러 아바타에 대한 코드를 쉽게 유지 관리 할 수 ​​있습니다). 다시 SASS 배열을 사용하여이 유지 관리 작업을 줄입니다.

5)를 사용하여 클래스 (예를 들어, .preview .preview-eye 대신 .preview .eye 또는 .preview .preview-hair-style 대신 .preview .hair의) 접두사. 그 이유는 많은 이름이 매우 일반적이어서 페이지의 여러 위치 (예 : .preview 및 .input 섹션 모두)에 사용되기 때문입니다. 접두어를 사용하면 특정 클래스를 대상으로 지정하는 것이 더 쉽습니다. 게다가 당신은 쓰레기로 공유 클래스의 많은 (예 : [class*="-hair-"] 모발 요소에 적용되는 별도의 헤어 클래스를 필요로하지 않고 모든 머리 요소를 얻을 것이다.

와 코드를하지 않고, 접두사의 모든 구성원을 대상으로 [class*="preview-"] 또는 [class*="input-"]을 사용할 수 있습니다 6) SVG 고려 이미지 애셋에 SVG를 사용하는 경우 파일을 작게 유지하면 모든 크기로 확장됩니다. SVG 브라우저 호환성을주의해야합니다 고려 (http://caniuse.com/svg)

7) .preview 및 .input 모두 동일한 이미지를 재사용하기 쉽게 만들 수 있습니다 또한 이미지 자산을 확장 할 수 background-size: contain을 사용할 수 있습니다 CSS 배경 크기, 인스턴스. 그러나 호환성 문제도 있습니다.

빌드하는 방법에 대한 리소스가 없기 때문에 이것은 대단한 프로젝트처럼 보입니다. 그러나 당신이 그것을 무너 뜨리는다면, 실제로는 꽤 쉽습니다. 주로 코드 유지 관리가 문제이므로 계획을 세워야합니다!

+0

감사합니다. 시도해 보겠습니다. – zamil

관련 문제