2010-09-21 50 views
6

Tôi có một câu hỏi css nhanh chóng làm tôi thất vọng, và tôi dường như không thể tìm ra ngay bây giờ.css a: văn bản kiểu liên kết và hình ảnh

Tôi đã tạo kiểu cho các liên kết trên trang của mình có viền dưới cùng trên di chuột, nhưng đường viền dưới cùng cũng xuất hiện trên hình ảnh có liên kết và tôi không thể tìm cách ngăn đường viền xuất hiện trên hình ảnh.

Đây là những gì tôi hiện có.

#main a:hover { 
    border-bottom:solid 1px #7b9a04; 
    color:#333; 
} 

img, img a:hover { 
    border-bottom:none; 
} 

Tuy nhiên, điều này dường như không hoạt động. Tôi không nghĩ rằng bất kỳ phong cách nào khác của nó sẽ ghi đè nó, bởi vì nếu tôi xóa #main a: hover kiểu hình ảnh không còn có đường viền dưới cùng, nhưng không có liên kết nào khác trên trang web thực hiện.

+2

Vâng, 'img a: hover' chắc chắn sẽ không làm việc, kể từ 'thẻ img' không thể có con cháu. –

+0

'a img: hover' hoặc' a: hover img' là tốt hơn :) Dù sao, một 'border-bottom' trên một liên kết ... không phải là nó là' text-decoration: underline', bạn biết đấy ... kiểu mặc định của liên kết. – Shikiryu

+1

Tôi thích sử dụng đường viền dưới cùng vì nó cung cấp cho bạn nhiều tùy chọn hơn là chỉ trang trí văn bản: gạch dưới. Với đường viền, bạn có thể điều chỉnh độ dày và làm cho nó có màu sắc khác nhau, sau đó hoàn toàn văn bản. – Adam

Trả lời

5

Vấn đề với phần tử liên kết <a>, không phải với chính liên kết hình ảnh. Khi bạn chỉ định đường viền dưới cùng cho trạng thái di chuột của <a>, nó cũng áp dụng cho liên kết chứa hình ảnh. Vì vậy, khi bạn di chuột vào một liên kết (chứa một hình ảnh), đó là liên kết hiển thị đường viền dưới cùng. Không phải hình ảnh.

Có một bản sửa lỗi cho điều này. Thử áp dụng:

a img { 
    display: block; 
    } 

Điều này sẽ đặt lại kiểu dáng <a>. Có một báo trước cho phương pháp này — sử dụng phương pháp này với hình ảnh nội tuyến có thể làm hỏng bố cục. Vì vậy, sử dụng nó một cách tiết kiệm.

+1

Điều này làm việc cho tôi. Như bạn đã đề cập, tôi nghĩ rằng các câu trả lời khác ở đây đã không nhận ra rằng vấn đề là với liên kết, không phải với hình ảnh. – KobeJohn

+1

Điều này có vẻ như một giải pháp khá tệ hại vì nó sẽ buộc tất cả các hình ảnh của bạn với các liên kết được chặn theo mặc định phải không? Một lựa chọn tốt hơn là đặt một lớp cụ thể trên các phần tử đang liên kết hình ảnh và nhắm mục tiêu theo cách đó? – Cameron

-1

Theo css specificity, nó sẽ hoạt động miễn là bạn đặt đường viền hình ảnh css sau css khác.

Là một sang một bên không cần phải có p và td tách ra như thế.

#main a { 
    color:#7b9a04; 
    text-decoration:none; 
} 

#main a:hover { 
    color:#333; 
    border-bottom:solid 1px #7b9a04; 
} 

Thực sự là tất cả những gì bạn cần.

+0

Cảm ơn mẹo. Tôi vẫn gặp sự cố và đường viền hình ảnh xuất hiện sau kiểu liên kết khác. Có lẽ một số loại vấn đề bộ nhớ đệm của nó. Tôi sẽ thử nó trên một máy khác vào buổi sáng. – Adam

-1

điều gì về việc xác định rõ ràng hình ảnh không có đường viền, sau khi khai báo di chuột?

#main a:hover { 
    border-bottom: solid 1px #7b9a04; 
} 

img { 
    border: none; 
} 
+0

Dường như không giúp được gì. Tôi thua lỗ này. – Adam

+0

@Adam: bạn có thể chia sẻ liên kết tới trang của bạn hoặc chia sẻ html/css của bạn không, có khả năng một điều gì đó khác đang ghi đè nó – espais

+1

Tôi không nghĩ điều này hoạt động vì đường viền được áp dụng cho liên kết chứ không phải hình ảnh . – KobeJohn

0

Làm thế nào về

a[href$=jpg]:hover, 
a[href$=jpeg]:hover, 
a[href$=png]:hover, 
a[href$=gif]:hover { 
     text-decoration: none; 
     border: 0; 
     border: none; 
     } 
Các vấn đề liên quan