2017-10-31 19 views
5

Tôi đang cố gắng tìm cách đặt giá trị trên cùng và bên trái tương ứng với selected_element (hoạt động tại thời điểm bật lên) tương tự như chú giải công cụ. Tôi đã thử sử dụng $(). Position() với jQuery nhưng không ghi đè lên giá trị mặc định 0,0 mà tôi đã đặt bằng CSS.Vị trí liên kết của cửa sổ bật lên đến hộp văn bản hoạt động

Đây là một JSFiddle: https://jsfiddle.net/sethkillian2/cd6agg73/3/ Giữ phím a, c, e, i, o hoặc u để kích hoạt menu.

Ngoài ra, đây là một phần của nỗ lực của tôi:

$(popup).position({ 
    of: $(activeElement), 
    my: 'left top', 
    at: 'left top', 
    offset: '0 0' 
}); 
$('body').append(popup); 

Thay đổi thuộc tính vị trí để bất cứ điều gì ngoài tuyệt đối dường như không làm việc hoặc vì sau đó vào menu nhân vật được mở rộng. Tôi cũng đã cố gắng nhận được các yếu tố của ID trực tiếp sau khi phụ thêm nó bằng cách sử dụng $ ("# charMap"). Position (...).

Cập nhật: Đối với những gì đáng giá, tôi cũng đã thử sử dụng thành phần vị trí văn bản-caret (https://github.com/component/textarea-caret-position) nhưng điều đó dường như không chính xác.

+0

Không chắc chắn những gì mong đợi kết quả là gì? – guest271314

+0

Charmap sẽ xuất hiện phía trên hộp văn bản hoạt động được lưu trữ dưới dạng activeElement. –

Trả lời

0

Các thuộc tính margin-topmargin-left được đặt cho #ta tại CSS; bạn có thể sử dụng .css() để có được và thiết lập các thuộc tính tương tự cho popup

$(popup).css($(activeElement).css(["marginTop", "marginLeft"])); 

jsfiddle https://jsfiddle.net/cd6agg73/9/

+0

Vấn đề duy nhất với đó là nếu có một đoạn văn bản hoặc một cái gì đó ở trên nó, sau đó nó không hoạt động nữa. Tôi đang tìm một giải pháp không dựa vào lề hoặc đệm, mà là vị trí thực tế. –

+0

Bạn có ý nghĩa gì bởi "vị trí thực tế"? 'var props = $ (activeElement) .css ([" marginTop "," marginLeft "]); props.marginTop = parseFloat (props.marginTop) - ($ (activeElement) .height() * 2.5) + "px"; $ (popup) .css (props); '? Hoặc sử dụng '.getBoundingClientRect()' 'var {top, left} = activeElement.getBoundingClientRect(); $ (popup) .css ({top, left}); 'https://jsfiddle.net/cd6agg73/12/? Sẽ hiển thị kết quả tương tự như mã tại Câu trả lời – guest271314

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