2013-10-29 16 views
7

Tôi có thành phần <a>, sau đó tôi muốn hiển thị một dấu hiệu >, sử dụng phần tử giả :after.Sử dụng: sau phần tử giả sau phần tử neo - khác biệt trình duyệt

Nội dung của phần tử <a> là động, do đó, chiều rộng thay đổi và đôi khi sự kiện nội dung kéo dài một vài hàng (vì phần tử <a> này nằm bên trong một chiều rộng là cố định).

Tôi muốn vị trí ngang của > bắt đầu ở cuối hàng dài nhất. Đó là, khi tôi cho nó rằng right:0; quy tắc, nó phải là ở bên phải nhất cạnh của nguyên tố (vị trí dọc không quan trọng ngay bây giờ):

enter image description here

Đó là cách ứng xử trong FF , nhưng trong Chrome và IE, các > xuất hiện ở cuối của dòng ngắn nhất:

enter image description here

tôi muốn hiểu những gì gây ra sự khác biệt giữa các trình duyệt, nhưng quan trọng hơn, tôi muốn tất cả trình duyệt hoạt động như FF - đặt :after ở cuối hàng dài nhất. Điều đó có thể không?

tôi đặt the above code trên dabblet

+1

Phần tử 'a' của bạn, là một phần tử nội tuyến tương đối được định vị, là khối chứa cho phần tử giả của': after', được định vị hoàn toàn. Vấn đề là văn bản trong 'a' của bạn là nhiều dòng, và [spec] (http://www.w3.org/TR/CSS21/visudet.html#containing-block-details) nói rằng nó không xác định hình dạng hoặc kích thước của một khối có chứa trong một kịch bản như vậy. Đây là lý do tại sao bạn thấy sự khác biệt trong hành vi của trình duyệt - nói cách khác, các trình duyệt không biết phải làm gì trong kịch bản như vậy để họ làm bất cứ điều gì họ nghĩ là tốt nhất. – BoltClock

Trả lời

5

Đó là bởi vì yếu tố a của bạn được thiết lập để hiển thị inline theo mặc định, và Firefox xử lý các vị trí trong vòng inline yếu tố hơi khác nhau để Chrome và IE.

Để sửa lỗi này trong cả Chrome và IE (trong khi giữ lại giao diện trong Firefox), bạn chỉ cần cung cấp cho yếu tố a bạn một màn inline-block:

a { 
    position:relative; 
    display:inline-block; 
} 

Modified Dabblet demo.

+0

Cảm ơn bạn rất nhiều! Tuy nhiên, tôi có 2 vấn đề với giải pháp này: 1) vẫn còn có sự khác biệt về trình duyệt ở vị trí của '>'. Chrome đặt nó nhiều hơn về phía bên phải FF. 2) Điều đó có nghĩa là văn bản liên kết ngắn, '>' sẽ ở xa kết thúc của nó. Tôi muốn '>' được định vị ngay ở cuối văn bản liên kết ... –

+1

@LeaCohen điều này dường như được gây ra bởi sự khác biệt trong việc hiển thị văn bản. Trong Firefox, phần "hkfjg sdfg dsfjg jsdflgj ldsfjgl" gần như lấp đầy vùng chứa 200px trước khi đi xuống một dòng mới, tuy nhiên trong Chrome có phần khoảng 20px khác nhau. Tôi không chắc chắn nên đề xuất gì để sửa lỗi này vì điều này được kiểm soát bởi trình duyệt (và bất kỳ cài đặt dựa trên phông chữ nào của trình duyệt mà người dùng có thể đã bật) nhiều hơn CSS được tính. –

Các vấn đề liên quan