2012-07-07 2 views
0

html 페이지에 배경 이미지로 배치 된지도가 있습니다. 또한지도의 특정 지점, 즉 파도의 중심에서 발생하는 음파를 나타내는 투명한 이미지가 있습니다. 웨이브 이미지가 전체 크기로 맵 상단에 놓이면 웨이브 이미지의 중심은 #waveImage {position:absolute;bottom:0;right:0} css 규칙을 사용하여 올바른 위치 (맵에서 원하는 중심점을 가리킴)에 있습니다.크기가 조절 된 html 이미지의 동적 위치 지정

문제는 임의의 알고리즘을 기반으로 원래 크기보다 크지 않은 웨이브 이미지를 동적으로 스케일해야한다는 것입니다. 분명히, 이미지가 작아지면 중심점은 초기 CSS 위치 지정으로 인해 원래 중심점에서 오른쪽 및 아래쪽으로 오프셋되므로 파형의 중심이 여전히 같은 점을 가리 키도록 파형 이미지를 이동해야합니다 위치를지도에 표시합니다. 오른쪽과 아래에서 올바른 오프셋을 계산하는 알고리즘이 필요합니다.

추가 정보 : 웨이브 이미지의 크기는 673px x 655px이며 웨이브의 중심은 이미지의 중앙에 있지 않습니다.

+1

당신이 무엇을 시도했다 우리에게 보여주십시오. 또는 적어도, 당신이 가진 것. 이 문제를 해결하기 위해 어떤 시도를 했습니까? [JS Fiddle] (http://jsfiddle.net/) 또는 유사하게 작업중인 것에 대한 라이브 (대표, [SSCCE] (http://sscce.org/)) 데모를 보여줄 수 있습니까? –

+0

[here] (https://egemadra.net/demo1/)의 대화 형 데모를 찾을 수 있습니다. 새 너비 값을 변경하면 웨이브 이미지의 크기가 조정됩니다. 관련 입력 상자를 사용하여 오른쪽 및 아래쪽 옵셋을 조정할 수 있습니다. 내가 시도한 것은 수식에 대해 알아보기 위해이 데모를 준비하는 것뿐입니다. 편집 :지도에 검은 점을 넣어 정적 중심을 나타낼 수 있습니다. 위치가 정확할 필요는 없습니다. 단지 아이디어를주는 것입니다. – egemadra

+0

CSS의'zoom','transform','transform-origin' 등의 기능도 참고하십시오. – biziclop

답변

2

http://jsfiddle.net/k7uGu/6/

HTML :

<div class="map"> 
    <div class="signal-wrap"> 
     <img class="signal" src="signal.png"> 
    </div> 
</div>​ 

CSS

.map { 
    background: url(map.png) no-repeat; 
    position: relative; 
    width: 770px; 
    height: 688px; 
} 

.signal-wrap { 
    position: absolute; 

    /* find/set the center position on the map, 
     using the right bottom corner for positioning 
     to avoid "surprise" scrollbars appearing 
    */ 
    right: 28%; 
    bottom: 33%; 

    /* change these to resize signal. 
     you can always use a square shape (width=height), 
     even if the image inside is not square 
    */ 
    width: 10%; 
    height: 10%; 
} 

.signal { 
    display: block; 
    position: absolute; 

    /* image width will be equal to parent square's size 
     height must not be set to keep original image shape 
    */ 
    width: 100%; 

    /* position of the center of the signal 
     relative to the parent square 
    */ 
    right: -23%; 
    bottom: -20%; 
} 
+0

이것은 매우 창의적이고 영감을주는 작품입니다. 감사합니다. 내가 얻지 못하는 것은 그 마법의 숫자에 대해 어떻게 알았는지, 즉 오른쪽 : -23 %; 하단 : -20 %; 이는 신호의 크기가 변할 때 센터를 안정되게 유지하여 트릭을 수행하는 것처럼 보입니다. – egemadra

+0

그들은 파도의 중심을 표시합니다. 물론 원본 이미지를 측정하고 '100 * (wave_center_x - image_width)'또는 '100 - 100 * (wave_center_x - image_width)'를 사용할 수 있습니다. – biziclop

+0

예 : http://jsfiddle.net/G3Fuj/ :) – biziclop

관련 문제