2013-09-26 61 views
0

我在一個較小的div 320x460px中使用overflow:auto顯示圖像1000x1000px,因此您可以在div內滾動圖像。 當我加載頁面時,圖像從圖像的左上角顯示出來,我想知道如何以中心顯示圖像?如何在div中放置圖像?

任何輸入讚賞,謝謝。

這是代碼。 在我的索引文件我加載頁面是這樣的:

$('#kartamap').load('imagemap.html', function() { 
        alert(".load has loaded"); 
        imagescroll();                  

          }); 

這是我的網頁。

<div id="themap"> 

<div id="imagediven" style="height:460px; width:320px;"> 

    <img src="image.png" width="1000px" height="1000px"/> 

    </div> 

<style> 
#imagediven { 
    overflow:auto; 
    height:460px; 
    width:320px; 
    position:relative; 
} 

</style> 

    <script type="text/javascript"> 

    function imagescroll(){ 
    var element = document.getElementById('imagediven'), /* This is your div */ 
      scrollHeight = element.scrollHeight, 
      scrollWidth = element.scrollWidth; 
     clientHeight =$(window).height(); 
      clientWidth = $(window).width(); 

     alert(scrollHeight);//this is not displaying the image height? 
     alert(clientHeight);//this is getting a value off the screen 

    element.scrollTop = (scrollHeight - clientHeight)/2; 
    element.scrollLeft = (scrollWidth - clientWidth)/2; 
    } 

    </script> 

</div> 
+0

是否'div'含有別的其他然後你希望中心的形象呢? – Matt

+0

嘗試text-align:center; –

+0

嘗試更改風格的位置 –

回答

0

我認爲你正試圖將div滾動到img的中心。

您需要使用JavaScript性能scrollTopscrollLeft

滾動到中心,你需要設置值

scrollTop = (scrollHeight - clientHeight)/2; 
scrollLeft = (scrollWidth - clientWidth)/2; 

JS:

var element = document.getElementById('container'); /* This is your div */ 

element.scrollTop = (element.scrollHeight - element.clientHeight)/2; 
element.scrollLeft = (element.scrollWidth - element.clientWidth)/2; 

入住這JSFiddle

文檔: scrollTop | scrollLeft | scrollHeight | scrollWidth | clientHeight | clientWidth

+0

嗨Nikhil並且非常感謝,它在小提琴中非常完美,但我無法在我的網絡應用程序中工作?在我的索引文件中,我使用jquery.load加載地圖頁面,但它不滾動圖像?! –

+0

檢查滾動事件是在加載後還是在加載之前發生。我會建議在加載後作爲回調事件滾動。 –

+0

我正在測試不同的東西,但即使我加載頁面,並在該頁面中有一個函數,該頁面加載後運行,我將scrollHeight設置爲一個固定的數字,element.scrollTop顯示0在一個警報? –

0

檢查background-position屬性。

您還可以使用background-size: cover(或包含)使其適合您的div。

+0

嗨Rachid,我不能使用背景,它必須是img。 –

+0

噢好吧。如何在包含圖像的div上的文本對齊中心? –

+0

不工作我測試過了。 –

0
div img 
{ 
margin:auto; 
width:320px; 
height:460px; 
vertical-align:middle; 
} 
+1

謝謝,但是將更大的圖像集中在更小的div中與將較小的圖像集中在更大的div中不同,它不會以同樣的方式工作。 –

+0

現在我得到了你的point..give填充:50px;溢出:隱藏; .....它會給所有邊上的50像素和滾動條溢出時的空間.. – Sasidharan

+0

是的,但我不' t不要填充以顯示:-) –

0

你爲什麼不嘗試:

text-align:center; 
+0

謝謝,但是將較大的圖像集中在較小的div中與將較小的圖像置於較大的div中不同,它不會以相同的方式工作。 –

0

試試這個

<div text-align:center"> 
    <img src="img.png"> 
    </div> 
+0

@meagar這是什麼錯誤?請證明您的評論 – Pinky

+0

這很明顯;嘗試一個HTML驗證器? – meagar

1

您可以將320px寬度和460px高度分配給容器div。然後將25%的邊距應用於CSS中的圖像...它會將圖像從四面八方對齊。

下面是HTML

<div id="img"> 
<img src="Chrysanthemum.jpg" /> 
</div> 

這裏是CSS

div#img 
{ 
width:320px; 
height:460px; 
overflow:scroll; 

} 
div#img img{margin:0 auto;padding:0;margin:25%;} 
1

如果您打算在100%的時間內使用相同尺寸的圖片,那麼您可以完全放置它。

.className { 
    height: 460px; 
    position: relative; 
    overflow: hidden; 
    width: 320px; 
} 
.className img { 
    left: 50%; 
    margin: -500px 0 0 -500px; 
    position: absolute; 
    top: 50%; 
} 

我在1000px x 1000px的圖片上工作過。

此外,我已經把jsFiddle放在一起讓你看到它的行動。

http://jsfiddle.net/7x2JR/

+0

感謝安德魯,它工作得很好,但我會有不同大小的圖像,所以它不完全是我需要的。 –