2011-10-24 24 views
16

Cách thích hợp để đặt các vị trí :before:after thành phần giả, như hình ảnh là gì? Tôi đã rối tung với một loạt các cách khác nhau, nhưng không ai trong số họ có vẻ như các giải pháp rất thanh lịch.Cách thích hợp để định vị: trước các phần tử giả

Đây là những gì tôi đang cố gắng để làm:

enter image description here

Đây là những gì tôi đã làm:

div.read-more a:before { 
    content: url('/images/read_more_arrow_sm.png'); 
    position: absolute; 
    top: 4px; 
    left: -15px; 
} 

<div class="read-more"> 
    <a href="#">Read More</a> 
</div> 

tôi về cơ bản chỉ muốn hình ảnh được liên kết với các văn bản. Có cách nào khác để làm điều đó không?

Sẽ thật hoàn hảo nếu tôi chỉ có thể sử dụng đệm và lề trên hình ảnh :before và đó là được cho là là những gì bạn làm. Nhưng vì lý do nào đó, điều đó đã không làm việc cho tôi. Tôi có thể thêm phần đệm và lề ngang, nhưng phần đệm trên và dưới không làm gì cả. Tại sao điều đó lại xảy ra?

+0

Tại sao không cho 'cái một 'hình nền và thêm một số đệm trái để thay thế? – BoltClock

+0

Trừ khi bạn có hàng chục/hàng trăm trang trên mỗi trang, tôi nghĩ bạn nên quên phần tử giả và thay vào đó chỉ cần định vị hình ảnh và liên kết tiếp theo với nhau. –

+0

Văn bản trong ví dụ của bạn là "Xem video" và nội dung ': trước' có phải là mũi tên không? Tại sao không sử dụng hình nền? Vui lòng đăng đánh dấu HTML của bạn. –

Trả lời

13

Hãy thử sử dụng background thay vì content và đặt một giữ chỗ trong content: http://jsfiddle.net/7X7x2/1/

+0

Điều này làm việc hoàn hảo. Cảm ơn! – Syren

11

Nếu bạn muốn chỉ cho hình ảnh vị trí gần các văn bản, sau đó bạn có thể cần tài sản -align dọc:

div.read-more a:before { 
    vertical-align: bottom; 
    content: url(image.png); 
} 

Nó có các giá trị có thể sau: đường cơ sở, phụ, siêu, trên cùng, văn bản trên cùng, giữa, dưới cùng, văn bản dưới cùng

các giá trị được tính từ vị trí của văn bản từ dòng văn bản hiện tại (Đọc thêm trong ví dụ).

Full tham khảo: http://www.w3schools.com/cssref/pr_pos_vertical-align.asp

(Để thêm dấu cách trước văn bản chỉ cần sử dụng margin-right)

+0

Tính năng này có hoạt động với các yếu tố trước không? – zardilior

+0

Dường như hoàn toàn không hiệu quả đối với: trước, sau: các nguyên tố (Chrome 59). Bạn không chắc chắn tại sao câu trả lời này có đại diện. vì nó là rõ ràng nó không có khả năng làm việc cho bối cảnh cụ thể này – Smithfield

+0

@Smithfield làm việc tốt cho tôi: https://jsfiddle.net/p8y6fv8h/ bạn có thể làm cho ý chính ở đó nó không hoạt động? –

11

Bạn có thể sử dụng đoạn mã sau để di chuyển nội dung:

div.read-more a:before { 
    content: "\00BB \0020"; 
    position: relative; 
    top: -2px; 
} 
1

Đây là giải pháp của tôi, với một mouseover:

div.read-more a:before { 
    content: url(image.png); 
    position: relative; 
    top: 3px; 
    left: -7px; 
    padding-left: 7px; 
} 
div.read-more a:hover:before { 
    content: url(image_hover.png); 
} 
0

Bạn cần phải thực hiện vị trí: liên quan đến .read-more và sau đó bạn có thể thay đổi vị trí.

fiddle
0

Edited @ Richard JP Le Guen để nó phù hợp với phiên bản được yêu cầu nhiều hơn một chút

HTML

<div class="read-more"> 
    <a href="#">Read More</a> 
</div> 

CSS

div.read-more a:before { 
    background: url('http://i.stack.imgur.com/XyerX.jpg') CENTER CENTER NO-REPEAT; 
    content:""; 
    width:21px; 
    height:21px; 
    display: inline-block; 
    vertical-align: sub; 
    margin-right: 4px; 
    line-height: 21px; 
} 
div.read-more { 
    background: red; 
    line-height: 21px; 
    display:block; 
    vertical-align:middle; 
    width: max-content; 
    padding: 4px; 
} 
div.read-more a{ 
    color: white; 
    text-decoration:none; 
} 

http://jsfiddle.net/7X7x2/688/

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