2017-10-31 6 views
5

私は、ツールチップに似た、selected_element(ポップアップトリガ時にアクティブ)に対する相対的な値の設定方法を理解しようとしています。私はjQueryで$()。position()を使用しようとしましたが、これはCSSで設定したデフォルトの0,0をオーバーライドしません。アクティブなテキストボックスにポップアップをバインドする位置

JSFiddleは次のとおりです。https://jsfiddle.net/sethkillian2/cd6agg73/3/ a、c、e、i、o、またはuを押しながらメニューをトリガーします。

また、ここでの私の試みの一環だ:絶対以外にも何にも位置属性を変更する

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

は、文字のメニューが広がるので、どちらか動作するようには思えません。また、$( "#charMap")。position(...)を使用してIDを追加した直後に、要素を取得しようとしました。

更新:それは価値があるため、私もtextarea-caret-positionコンポーネント(https://github.com/component/textarea-caret-position)を使ってみましたが、それは正確ではないようです。

+0

ない結果が期待したものを確かに同じプロパティを設定することができますか? – guest271314

+0

Charmapは、activeElementとして格納されているアクティブなテキストボックスの上に表示されます。 –

答えて

0

margin-topmargin-leftのプロパティは、CSSで#taに設定されています。あなたが得るために.css()を使用してpopup

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

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

+0

唯一の問題は、テキストの段落やそれ以上の段落がある場合、それ以上は動作しないことです。私はマージンやパディングに頼らず、むしろ実際のポジションに依存するソリューションを探しています。 –

+0

「実際のポジション」はどういう意味ですか? 'var props = $(activeElement).css([" marginTop "、" marginLeft "]);props.marginTop = parseFloat(props.marginTop) - ($(activeElement).height()* 2.5)+ "px"; $(ポップアップ).css(小道具); '?または '.getBoundingClientRect()' 'を使用します。var {top、left} = activeElement.getBoundingClientRect(); $(ポップアップ).css({top、left}); 'https://jsfiddle.net/cd6agg73/12/? Answerでコードと同じ結果を返すべきでしょうか? – guest271314

関連する問題