ฉันคิดว่าฉันจะโพสต์โซลูชัน JavaScript ของฉัน 20 บรรทัดที่นี่ มันไม่สมบูรณ์แบบ แต่อาจมีประโยชน์สำหรับบางคนขึ้นอยู่กับสิ่งที่คุณต้องการจากเคล็ดลับเครื่องมือของคุณ
ควรใช้เมื่อไร
- จัดรูปแบบคำแนะนำเครื่องมือโดยอัตโนมัติสำหรับองค์ประกอบ HTML ทั้งหมดที่มี
TITLE
แอตทริบิวต์ที่กำหนดไว้ (ซึ่งรวมถึงองค์ประกอบที่เพิ่มเข้ากับเอกสารแบบไดนามิกในอนาคต)
- ไม่มีการเปลี่ยนแปลง Javascript / HTML หรือแฮ็กที่จำเป็นสำหรับคำแนะนำเครื่องมือทุกอัน (เฉพาะ
TITLE
แอตทริบิวต์ชัดเจนเชิงความหมาย)
- เบามาก (เพิ่มประมาณ 300 ไบต์ gzipped และย่อขนาด)
- คุณต้องการเพียงคำแนะนำเครื่องมือที่มีสไตล์ขั้นพื้นฐานเท่านั้น
เมื่อไม่ใช้
- ต้องใช้ jQuery ดังนั้นอย่าใช้หากคุณไม่ได้ใช้ jQuery
- การสนับสนุนองค์ประกอบที่ซ้อนกันที่ไม่ดีซึ่งทั้งคู่มีคำแนะนำเครื่องมือ
- คุณต้องการคำแนะนำเครื่องมือมากกว่าหนึ่งรายการบนหน้าจอพร้อมกัน
- คุณต้องการคำแนะนำเครื่องมือเพื่อให้หายไปหลังจากเวลา
รหัส
// Use a closure to keep vars out of global scope
(function () {
var ID = "tooltip", CLS_ON = "tooltip_ON", FOLLOW = true,
DATA = "_tooltip", OFFSET_X = 20, OFFSET_Y = 10,
showAt = function (e) {
var ntop = e.pageY + OFFSET_Y, nleft = e.pageX + OFFSET_X;
$("#" + ID).html($(e.target).data(DATA)).css({
position: "absolute", top: ntop, left: nleft
}).show();
};
$(document).on("mouseenter", "*[title]", function (e) {
$(this).data(DATA, $(this).attr("title"));
$(this).removeAttr("title").addClass(CLS_ON);
$("<div id='" + ID + "' />").appendTo("body");
showAt(e);
});
$(document).on("mouseleave", "." + CLS_ON, function (e) {
$(this).attr("title", $(this).data(DATA)).removeClass(CLS_ON);
$("#" + ID).remove();
});
if (FOLLOW) { $(document).on("mousemove", "." + CLS_ON, showAt); }
}());
วางไว้ที่ใดก็ได้มันควรทำงานแม้ว่าคุณจะเรียกใช้รหัสนี้ก่อนที่ DOM จะพร้อมใช้งาน (มันจะไม่แสดงคำแนะนำเครื่องมือของคุณจนกว่าจะพร้อม DOM)
ปรับแต่ง
คุณสามารถเปลี่ยนการvar
ประกาศในบรรทัดที่สองเพื่อปรับแต่งเล็กน้อย
var ID = "tooltip"; // The ID of the styleable tooltip
var CLS_ON = "tooltip_ON"; // Does not matter, make it somewhat unique
var FOLLOW = true; // TRUE to enable mouse following, FALSE to have static tooltips
var DATA = "_tooltip"; // Does not matter, make it somewhat unique
var OFFSET_X = 20, OFFSET_Y = 10; // Tooltip's distance to the cursor
สไตล์
ตอนนี้คุณสามารถจัดรูปแบบเคล็ดลับเครื่องมือของคุณโดยใช้ CSS ต่อไปนี้:
#tooltip {
background: #fff;
border: 1px solid red;
padding: 3px 10px;
}