2013-02-11 181 views
1

我的網站 http://cynthiawoodyardlandscapedesign.com/ 有幾個問題只存在於Firefox中。Firefox絕對定位失敗

當點擊主頁上的圖像時,兩側出現的允許用戶更改圖片的箭頭位於頁面頂部。持有箭頭的div應該具有100%的高度,我甚至將!important添加到CSS。只有Firefox不能正確顯示。

我的CSS(http://cynthiawoodyardlandscapedesign.com/css/main.css):

#sheet { 
    width: 100%; 
    height: 100%; 
    position: fixed; 
    overflow: hidden; 
    top: 0; 
    left: 0; 
    background-color: rgba(0,0,0,0.8); 
    display: table; 
    z-index: 150; 
} 
#popover { 
    margin: auto; 
    background: rgba(0,0,0,0); 
    text-align: center; 
    padding: 10px; 
    border: 1px solid black; 
    position: relative; 
    display: table-cell; 
    vertical-align: middle; 
} 
#popover-image { 
    height: 70%; 
    border: 10px solid white; 
} 
#exit { 
    position: absolute; 
    top: 50px; 
    color: white; 
    font-size: 20px; 
    font-weight: bold; 
    width: 100%; 
    text-align: center; 
    z-index: 300; 
    font-family: sans-serif; 
} 
#next-image, #previous-image { cursor: pointer; background: transparent; } 
#next-image::-moz-selection, #previous-image::-moz-selection, 
#next-image::selection, #previous-image::selection { background: rgba(0,0,0,0); } 
#leftArrow, #rightArrow { 
    width: 20%; 
    height: 100% !important; 
    position: absolute; 
    z-index: 200; 
    display: table; 
    background: transparent; 
    top: 0; 
} 
#leftArrow { left: 0; } #rightArrow { right: 0; } 
#next-image { 
    display: table-cell !important; 
    vertical-align: middle; 
    margin: 0 auto; 
    text-align: center; 
    line-height: 50px; 
    font-size: 50px; 
    -webkit-text-stroke: 1px black; 
    -moz-text-stroke: 1px black; 
    height: 50px; 
    width: 50px; 
    color: white; 
} 
#previous-image { 
    display: table-cell !important; 
    vertical-align: middle; 
    margin: 0 auto; 
    text-align: center; 
    line-height: 50px; 
    font-size: 50px; 
    -webkit-text-stroke: 1px black; 
    -moz-text-stroke: 1px black; 
    height: 50px; 
    width: 50px; 
    color: white; 
} 

我的HTML(http://cynthiawoodyardlandscapedesign.com/default.php):

<div id="sheet"> 
    <div id="exit">Exit</div> 

    <div id="popover"> 
     <div id="leftArrow"><div id="previous-image" onclick="previous()">&laquo;</div></div> 

     <img src="watermark.php?src=images/main1.jpg&x=0&y=420&opactity=50" id="popover-image" onclick="close()" /> 

     <div id="rightArrow"><div id="next-image" onclick="next()">&raquo;</div></div> 

    </div> 

</div> 

,我試過其他瀏覽器(IE除外;我在Mac上)顯示頁面正確。

編輯:我有更多的Firefox問題。

http://cynthiawoodyardlandscapedesign.com/photography.php的頁面顯示了許多照片是在<td>標籤和img之後,但在</td>之前存在一個具有絕對位置,top: 10px;在每一個瀏覽器(IE8甚至!!)這是行不通的跨度正確。

我的HTML頁面:

<table id="photos"> 
       <tr> 
        <td><img src="images/photo-thumbs/garden.jpg" /><span>Gardens</span></td><td><img src="images/photo-thumbs/trees.jpg" /><span>Trees</span></td><td><img src="images/photo-thumbs/shrubs.jpg" /><span>Shrubs</span></td><td><img src="images/photo-thumbs/perennials.jpg" /><span>Perennials</span></td> 
       </tr> 
       <tr> 
        <td><img src="images/photo-thumbs/annuals.jpg" /><span>Annuals</span></td><td><img src="images/photo-thumbs/tropicals.jpg" /><span>Tropicals</span></td><td><img src="images/photo-thumbs/bulb.jpg" /><span>Bulbs</span></td><td><img src="images/photo-thumbs/containers.jpg" /><span>Containers</span></td> 
       </tr> 
       <tr> 
        <td><img src="images/photo-thumbs/fruit.jpg" /><span>Fruit</span></td><td><img src="images/photo-thumbs/animals.jpg" /><span>Creatures</span></td><td><img src="images/photo-thumbs/people.jpg" /><span>People</span></td><td><img src="images/photo-thumbs/travel.jpg" /><span>Travel</span></td> 
       </tr> 
</table> 
#photos td { 
     width: 192px; 
     height: auto; 
     position: relative; 
     border-right: 5px solid transparent; 
    } 
    #photos td img { width: 100%; border: 1px solid gold; } 
    #photos td span { 
     position: absolute; 
     top: 10px; 
     left: 0; 
     width: 100%; 
     text-align: center; 
     background: rgba(0,0,0,0.4); 
     padding-top: 2px; 
     padding-bottom: 2px; 
     color: #f0f0f0; 
     font-weight: bold; 
     font-family: "Source Sans Pro", sans-serif; 
     display: none; 
    } 
+1

幾乎可以肯定這是由於您使用的顯示的':表' - 過去我遇到過很多問題,一些瀏覽器需要在display:table-cell之外使用'display:table-row'的另一個包裝元素。爲什麼不使用'position:absolute;頂部:45%;右:30像素'或類似的東西,而不是黑客一個桌子般的佈局?你也可以做'頂部:50%; margin-top: - [arrowHeight/2];'讓箭頭正好在中間。 – 2013-02-11 00:25:06

+0

謝謝,這個答案工作得很好。 – gtr123 2013-02-13 01:18:52

+0

@afterimagedesign請看看我的答案,並讓我知道如果有任何問題或我滯後於某些地方。 – w3uiguru 2013-02-18 18:38:57

回答

3

下面是你的第二部分的答案:懸停問題與跨度位置。它工作正常,請參閱我在html,css和jquery代碼中完成的下列更改。請讓我知道如果我失去了一些東西。

代碼:http://jsfiddle.net/brNdq/1/

工作演示:http://jsfiddle.net/brNdq/1/embedded/result/

HTML:

<table id="photos"> 
     <tr> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/garden.jpg" /><span>Gardens</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/trees.jpg" /><span>Trees</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/shrubs.jpg" /><span>Shrubs</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/perennials.jpg" /><span>Perennials</span></div></td> 
     </tr> 
     <tr> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/annuals.jpg" /><span>Annuals</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/tropicals.jpg" /><span>Tropicals</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/bulb.jpg" /><span>Bulbs</span></div></td> 
     <td><div class="img_container"><img src="http://cynthiawoodyardlandscapedesign.com/images/photo-thumbs/containers.jpg" /><span>Containers</span></div></td> 
     </tr> 
</table> 

CSS:

.img_container { 
    position:relative; 
} 

jQuery的:從TD刪除懸停,把它放在類.img_container

<script type="text/javascript"> 
$(document).ready(function() { 
    $(".img_container").hover(function() { 
     $(this).children('span').fadeIn('medium'); 
    }, function() { 
     $(this).children('span').fadeOut('fast'); 
    }); 
}); 
</script> 
+0

我很抱歉!我在打電話時,意外地將+50聲望給了錯誤的答案。你的答案是完美的,我會給你雙倍的!不過,我不知道如何給他們。如果我能以任何方式,我想。再次,我很抱歉。 – gtr123 2013-02-19 02:27:54

+0

@afterimagedesign你可以聯繫主持人,他們可以進行更改。我的運氣不好 -:( – w3uiguru 2013-02-19 15:06:40

1

Usign百分比高度去地獄。由於某種歷史原因,100%的高度被視爲窗口的高度,而不是顯示區域。避免使用百分比 - 僅用於例如寬度爲20%的例外。

如果您要設置身高:100%,請使用JavaScript。獲取顯示區域的高度併爲這兩個div設置它。我張貼的例子,我使用它的覆蓋窗口(也正在調整大小時):

var updateInterval; 

function showOverlay() { 
    updateInterval = setInterval(function() { 
    var h = 0; 
    var s = 0; 

    if (window.innerHeight) { 
     h = window.innerHeight; 
    } 
    else if (document.documentElement.clientHeight) { 
     h = document.documentElement.clientHeight; 
    } 

    if (document.body.scrollTop) { 
     s = document.body.scrollTop; 
    } 
    else if (window.pageYOffset) { 
     s = window.pageYOffset; 
    } 

    document.getElementById('overlay').style.height = '' + h + 'px'; 
    document.getElementById('overlay').style.top = '' + s + 'px'; 
    }, 10); 

    toogleHidden('overlay'); 
} 

替換爲您的ID疊加ID,toogleHidden是我的函數來顯示/隱藏的元素。

您可以使用類似的功能來正確放置元素 - 您知道例如您elemtn是32PX喚起注意,所以你會得到2身高,分16。減去:

var top = (h/2) - 16; 

比你並不需要設置高度爲100%(除整列的應該是點擊)。

希望這會有所幫助。

0

使用style="display:block"結合"position:absolute"在FF