2012-04-22 34 views
26

tôi đang sử dụng bảng để hiển thị dữ liệu tự động tạo ra của tôi phụ thuộc vào đầu vào người sử dụng cấu trúc html là trông giống như dưới đây:firefox vị trí tuyệt đối bên trong một vấn đề chứa tương đối

<table> 
<tr> 
    <td>.....</td> 
    <td>.....</td> 
    <td style="position:relative;"> //like this i set for all td in table 
    <div style="position:absolute">//like this i set for all div in table 
    <contents> 
    </div> 
    </td> 
    <td>.....</td> 
    <td>.....</td> 
</tr> 
</table> 

Đây div là đi vào góc trên cùng của body.all các phong cách trên được áp dụng throght javascript và làm việc tốt của nó trong chrome, IE, nhưng không phải trong FF như hình dưới đây.

enter image description here

nếu chúng ta thay đổi vị trí của div để tuyệt đối tương đối nó sẽ sắp xếp một cách chính xác nhưng tôi làm cho một hiệu ứng hover khi người dùng di chuột của div cho rằng các vị trí rất quan trọng và vấn đề này chỉ xảy ra trong firefox

để kiểm tra tài liệu tham khảo rất nhanh chóng bạn ra khỏi cái jquery http://www.malsup.com/jquery/hoverpulse/

tôi cần như thế này phải được thực hiện bên trong bảng trong fIREFOX có nghĩa

  • Mỗi hình ảnh được đặt bên trong một td//<td style="position:relative;">

  • nếu di chuột người dùng trên một td hình ảnh nên xung (Phóng to ảnh hưởng).

  • Khi người dùng di chuột ra nó nên đi vào trạng thái trước đó. (Kích thước bình thường)

Các cấu trúc bảng đã được đưa ra ở trên.

+0

tôi đã làm chính xác những gì bạn decribe trong bức ảnh đầu tiên trong fiddle này: http://jsfiddle.net/mageek/Qw5ye/ và nó hoạt động trong Firefox 12, Safari 5.1.3 và Google Chrome 19. Nếu bạn cung cấp cho chúng tôi tất cả mã của bạn, chúng tôi có thể giúp bạn hơn chút. (Hoặc có thể tôi không hiểu câu hỏi của bạn) – Mageek

+0

Bạn không nên cố gắng thay đổi vị trí mặc định của ô bảng. Tại sao bạn áp dụng kiểu trên 'td' và' div' cả hai? Ngoài ra, hãy hiển thị [jsfiddle] (http://jsfiddle.net) mã của bạn – Jashwant

+0

Có vẻ như Firefox đã khắc phục sự cố này. Phiên bản hiện tại là 33 - nhưng tôi nghĩ rằng nó có thể đã được sửa trong một phiên bản cũ hơn 30-32 – Danield

Trả lời

38

Định vị ô bảng là vấn đề. Các giải pháp thông thường là để lại phong cách của td một mình, và đặt một div trong nó mà bạn thực hiện position:relative. Sau đó, đặt nội dung bên trong div đó.

<td> <!-- no style at all --> 
<div style="position:relative;"> 
    <div style="position:absolute"> <!-- original div --> 
    <contents> 
    </div> 
</div> 
</td> 

Edit:
Tôi không biết tác dụng bạn đang sau, nhưng đây là một jsFiddle chứng minh vấn đề: http://jsfiddle.net/ygP7k/5/
Nó có một bảng với ít divs hoàn toàn vị trí trong mỗi ô trong bảng, có nghĩa vụ phải căn chỉnh với các góc dưới cùng bên phải. Nó hoạt động trong tất cả các trình duyệt ngoại trừ Mozilla.

Nhưng đây là bản cập nhật với số lượng div bổ sung như tôi đã đề cập: http://jsfiddle.net/ygP7k/7/
Hoạt động này giống hệt nhau, ngoại trừ việc thực hiện thủ thuật trong Firefox.

Bạn có thể làm việc với điều này không? Điều này có trả lời câu hỏi của bạn không?

+1

nó không hoạt động .... – krish

+3

@krish Vấn đề là tôi không biết những gì bạn đang cố gắng làm chính xác. Ảnh chụp màn hình của bạn là mockups, không phải ảnh chụp màn hình thực và chúng không khớp với nguồn mẫu của bạn. Vì vậy, tôi phải đoán. Xem câu trả lời đã chỉnh sửa của tôi cho các ví dụ jsFiddle thực tế. Đó là những gì bạn đang sau? –

+0

Bạn đã lưu ngày của tôi !! Cảm ơn bạn. –

8

Tôi nhìn hoverplus jQuery plugin và tập tin nguồn cho thấy phương pháp được sử dụng:

// parent must be relatively positioned 
this.parent().css({ position: 'relative' }); 

// pulsing element must be absolutely positioned 
this.css({ position: 'absolute', top: 0, left: 0 }); 

Do yêu cầu của plugin này và nhu cầu thiết kế hiện tại của bạn, tôi khuyên bạn nên sử dụng .transit() jQuery Plugin có các tính năng Thu phóng mạnh mẽ và dễ sử dụng mà không cần các yêu cầu như vậy.

tôi đã chuẩn bị hai Bảng Ví dụ, mỗi 9 Div của và như bạn có thể nhìn thấy bằng cách đánh dấu, nó không thể được bất kỳ dễ dàng hơn!

jsFiddle DEMO of Zoomed Div's with Images in Tables

Sau khi bạn có một cái nhìn tại jsFiddle tôi đã thực hiện cho bạn, bạn có thể xem tất cả .transit() tính năng plugin trên trang demo HERE.

EDIT: jsFiddle hiện đã yêu cầu kiểu CSS cho td thẻ của position:relative cho mỗi lần cập nhật của bạn.

+0

@attronics: điều này xảy ra trong hoverpulse this.css ({position: 'absolute', ** top: 0, left: 0 **}); – krish

+0

Thông tin đó nằm trong tệp '.js' được ghi lại đầy đủ. Tôi không nghĩ rằng bạn biết điều này, nhưng để chắc chắn nhiều plugin có nhiều nhận xét trong tệp JavaScript khi xem phiên bản không được rút gọn cũng là hướng dẫn thực tế. – arttronics

3

bạn phải thêm 2 div trong Bảng 1 với position:relative và thứ 2 với position:absolute

<td> 
<div style="position:relative"> 
<div style="position:absolute">ddd</div> 
</div> 
</td> 

vấn đề của bạn sẽ được giải quyết séc fiddle

http://jsfiddle.net/rizwanabbasi/2hyE8/1/

+0

vâng tôi đã giải quyết được sai lầm của tôi, bạn có thể kiểm tra ngay bây giờ ... –

0

Tôi đã có một vấn đề tương tự. Tôi quấn div tuyệt đối có vấn đề trong một div tuyệt đối mà cố định vấn đề:

<div class="thumbnail" style="..position:relative;.."> 
     <div style="position:absolute;"> 
     <div class="thumbnail-heart" style="..position:absolute;.."> 
      <img src="../image.png" style="float:right;position:relative;.."> 
      ... 
     </div> 
     </div> 
2

tôi giải quyết vấn đề thêm display: block;

.table td div { 
    position:absolute; 
    display:block; 
} 

trong trường hợp của bạn:

<table> 
<tr> 
    <td>.....</td> 
    <td>.....</td> 
    <td style="position:relative;"> <!-- like this i set for all td in table --> 
    <div style="position:absolute; display:block"> <!-- like this i set for all div in table --> 
    <contents> 
    </div> 
    </td> 
    <td>.....</td> 
    <td>.....</td> 
</tr> 
</table> 
Các vấn đề liên quan