ฉันจะเพิ่มเคล็ดลับเครื่องมือในองค์ประกอบการขยายได้อย่างไร


364

ในรหัสต่อไปนี้ฉันต้องการให้เครื่องมือคำแนะนำเกิดขึ้นเมื่อผู้ใช้วนเวียนอยู่ฉันจะทำอย่างไร ฉันไม่ต้องการใช้ลิงก์ใด ๆ

<span> text </span>

คำตอบ:


677

นี่คือวิธีที่เรียบง่ายและมีในตัว:

<span title="My tip">text</span>

ที่ให้คำแนะนำเครื่องมือข้อความธรรมดาแก่คุณ หากคุณต้องการคำแนะนำเครื่องมือที่มีรูปแบบ HTML ในรูปแบบเหล่านี้คุณจะต้องใช้ไลบรารีเพื่อทำเช่นนั้น โชคดีที่มีคนมากมาย


1
แต่วิธีนี้ใช้งานได้หรือไม่หากไม่มีข้อความใด ๆ ในช่วง? ตัวอย่างเช่นช่วงว่างด้วย bg-image?
Augiwan

1
@UGS: คุณแน่ใจหรือว่าองค์ประกอบของคุณคือขนาดที่คุณคิดว่ามันคืออะไร? ลองให้พื้นหลังสีชมพูเหมือนของฉัน :-)
RichieHindle

ขอบคุณมาก.! แต่ฉันเพิ่งใช้ tipsy.js และมันก็ดูดีกว่าที่ฉันต้องการ : D และบทความนี้ช่วยในความสับสนของฉัน: htmlgoodies.com/tutorials/html_401/article.php/3479661/ …ที่มันบอกว่าคำแนะนำเครื่องมือทำงานสำหรับ "ข้อความ"
Augiwan

1
สวัสดีใครบางคนสามารถอธิบายได้ว่านี่เป็นมาตรฐานในบางรส / ทั้งหมดของ HTML หรือไม่?
Jonathan dos Santos

@ โจนาธาน: มันเป็นมาตรฐานมาอย่างน้อย HTML4: w3.org/TR/html4/struct/global.html#adef-title
RichieHindle

97

เคล็ดลับเครื่องมือที่กำหนดเองด้วย CSS แท้ - ไม่จำเป็นต้องใช้ JavaScript:

ตัวอย่างที่นี่ (พร้อมรหัส) / ตัวอย่างเต็มหน้าจอ

ในฐานะที่เป็นทางเลือกในการเริ่มต้นของtitleคำแนะนำเครื่องมือแอตทริบิวต์คุณสามารถทำให้ CSS ที่กำหนดเองของคุณเองโดยใช้คำแนะนำเครื่องมือ:before/ :after องค์ประกอบหลอกและ HTML5 แอตทริบิวต์data-*

การใช้ CSS ที่ให้มาคุณสามารถเพิ่มคำแนะนำเครื่องมือให้กับองค์ประกอบโดยใช้data-tooltipแอตทริบิวต์

คุณยังสามารถควบคุมตำแหน่งของคำแนะนำเครื่องมือที่กำหนดเองโดยใช้data-tooltip-positionแอตทริบิวต์ (ค่าที่ยอมรับได้: top/ right/ bottom/ left)

ตัวอย่างเช่นต่อไปนี้จะเพิ่ม tooltop อยู่ในตำแหน่งที่ด้านล่างขององค์ประกอบช่วง

<span data-tooltip="Custom tooltip text." data-tooltip-position="bottom">Custom bottom tooltip.</span>

ป้อนคำอธิบายรูปภาพที่นี่

มันทำงานอย่างไร

คุณสามารถแสดงคำแนะนำเครื่องมือที่กำหนดเองด้วยองค์ประกอบหลอกโดยดึงค่าแอตทริบิวต์ที่กำหนดเองโดยใช้attr()ฟังก์ชั่น

[data-tooltip]:before {
    content: attr(data-tooltip);
}

ในแง่ของการวางตำแหน่งคำแนะนำเครื่องมือเพียงใช้ตัวเลือกแอททริบิวต์และเปลี่ยนตำแหน่งตามค่าของแอททริบิวต์

ตัวอย่างที่นี่ (พร้อมรหัส) / ตัวอย่างเต็มหน้าจอ

CSS แบบเต็มที่ใช้ในตัวอย่าง - กำหนดสิ่งนี้ตามความต้องการของคุณ

[data-tooltip] {
    display: inline-block;
    position: relative;
    cursor: help;
    padding: 4px;
}
/* Tooltip styling */
[data-tooltip]:before {
    content: attr(data-tooltip);
    display: none;
    position: absolute;
    background: #000;
    color: #fff;
    padding: 4px 8px;
    font-size: 14px;
    line-height: 1.4;
    min-width: 100px;
    text-align: center;
    border-radius: 4px;
}
/* Dynamic horizontal centering */
[data-tooltip-position="top"]:before,
[data-tooltip-position="bottom"]:before {
    left: 50%;
    -ms-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}
/* Dynamic vertical centering */
[data-tooltip-position="right"]:before,
[data-tooltip-position="left"]:before {
    top: 50%;
    -ms-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}
[data-tooltip-position="top"]:before {
    bottom: 100%;
    margin-bottom: 6px;
}
[data-tooltip-position="right"]:before {
    left: 100%;
    margin-left: 6px;
}
[data-tooltip-position="bottom"]:before {
    top: 100%;
    margin-top: 6px;
}
[data-tooltip-position="left"]:before {
    right: 100%;
    margin-right: 6px;
}

/* Tooltip arrow styling/placement */
[data-tooltip]:after {
    content: '';
    display: none;
    position: absolute;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
}
/* Dynamic horizontal centering for the tooltip */
[data-tooltip-position="top"]:after,
[data-tooltip-position="bottom"]:after {
    left: 50%;
    margin-left: -6px;
}
/* Dynamic vertical centering for the tooltip */
[data-tooltip-position="right"]:after,
[data-tooltip-position="left"]:after {
    top: 50%;
    margin-top: -6px;
}
[data-tooltip-position="top"]:after {
    bottom: 100%;
    border-width: 6px 6px 0;
    border-top-color: #000;
}
[data-tooltip-position="right"]:after {
    left: 100%;
    border-width: 6px 6px 6px 0;
    border-right-color: #000;
}
[data-tooltip-position="bottom"]:after {
    top: 100%;
    border-width: 0 6px 6px;
    border-bottom-color: #000;
}
[data-tooltip-position="left"]:after {
    right: 100%;
    border-width: 6px 0 6px 6px;
    border-left-color: #000;
}
/* Show the tooltip when hovering */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
    display: block;
    z-index: 50;
}

2
@SearchForKnowledge จริงเหรอ? ฉันจะดูว่าในบางจุด ขอบคุณ
Josh Crozier

5
ใช่ฉันเพิ่งทดสอบมันและก็ไม่แปลกใจที่มันใช้งานไม่ได้ดีมาก IE เก่า! ;)
SearchForKnowledge

@JoshCrozier ช่วยได้มาก
JIBIN BJ

20

ในเบราว์เซอร์ส่วนใหญ่แอตทริบิวต์ title จะแสดงผลเป็นคำแนะนำเครื่องมือและโดยทั่วไปจะยืดหยุ่นตามประเภทขององค์ประกอบที่จะใช้งาน

<span title="This will show as a tooltip">Mouse over for a tooltip!</span>
<a href="http://www.stackoverflow.com" title="Link to stackoverflow.com">stackoverflow.com</a>
<img src="something.png" alt="Something" title="Something">

ทั้งหมดเหล่านี้จะแสดงคำแนะนำเครื่องมือในเกือบทุกเบราว์เซอร์



4

แอ"title"ททริบิวจะถูกใช้เป็นข้อความสำหรับคำแนะนำเครื่องมือโดยเบราว์เซอร์หากคุณต้องการใช้สไตล์กับมันให้พิจารณาใช้ปลั๊กอินบางอย่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.