JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://code.htmlhifive.com/h5.css">
<script src="https://code.htmlhifive.com/ejs-h5mod.js"></script>
<link rel="stylesheet" href="https://hifive.github.io/hifive-ui-library/hifive-ui-library/WebContent/components/arrowbox/src/arrowbox.css">
<script src="https://hifive.github.io/hifive-res/fw/current/h5.dev.js"></script>
<script src="https://hifive.github.io/hifive-ui-library/hifive-ui-library/WebContent/components/arrowbox/src/arrowbox.js"></script>
<div class="sampleDiv">
<h2>この中をクリックするとツールチップが出ます</h2>
</div>
<script type="text/ejs" id="h5arrowbox">
<div class="h5arrowbox"></div>
</script>
<script type="text/ejs" id="message">
<div><p>吹き出しサンプル</p><p>吹き出しサンプルです</p><button class="removeArrowBox" style="float:right">OK</button></div>
</script>
CSS
.sampleDiv {
position: relative;
margin: auto;
margin-top: 30px;
margin-bottom: 30px;
width: 300px;
padding: 10px;
top: 150px;
height: 300px;
border: 1px solid #ccc;
text-align: center;
}
JavaScript
(function() {
var controller = {
__name: 'PageController',
__arrowClass: 'position-set',
_arrowboxController: h5.ui.components.arrowbox.ArrowBoxController,
__ready: function() {
},
'.sampleDiv click': function(context, $el) {
var x = context.event.pageX;
var y = context.event.pageY;
// 既にposition-setクラスを持つ吹き出しがあったら削除する
var $arrowbox = this.$find('.'+this.__arrowClass);
// 吹き出しの要素からArrowBoxインスタンスを取得
var preArrowbox = this._arrowboxController.getArrowBoxFromElement($arrowbox);
// 吹き出しをdispose
preArrowbox && preArrowbox.dispose();
// 第2引数でクラスを追加する
var arrowbox = this._arrowboxController.create(this.view.get('message'), {
cls: this.__arrowClass
});
arrowbox.show({
position: {
left: x,
top: y
}
});
},
'.removeArrowBox click': function(context, $el) {
// 吹き出し要素の取得
var $arrowbox = $el.parents('.h5arrowbox');
// ArrowBoxインスタンスの取り出し
var arrowbox = this._arrowboxController.getArrowBoxFromElement($arrowbox);
// 吹き出しの削除
arrowbox.dispose();
}
};
h5.core.expose(controller);
})();
$(function() {
h5.core.controller('body', PageController);
});