आप एक वास्तविक title
विशेषता को स्टाइल नहीं कर सकते
title
विशेषता में पाठ कैसे प्रदर्शित होता है यह ब्राउज़र द्वारा परिभाषित किया गया है और ब्राउज़र से ब्राउज़र में भिन्न होता है। वेबपृष्ठ के लिए यह संभव नहीं है कि ब्राउज़र के आधार पर ब्राउज़र द्वारा प्रदर्शित टूलटिप में किसी भी शैली को लागू किया जाएtitle
विशेषता के ।
हालाँकि, आप अन्य विशेषताओं का उपयोग करके कुछ समान बना सकते हैं।
आप सीएसएस और एक कस्टम विशेषता के साथ एक छद्म टूलटिप (उदाहरण के लिए) बना सकते हैं data-title
) के
इसके लिए, मैं एक data-title
विशेषता का उपयोग करूंगा । data-*
विशेषताएँ DOM तत्वों / HTML में कस्टम डेटा संग्रहीत करने की एक विधि है। कर रहे हैं उन तक के बहुत से तरीके । महत्वपूर्ण रूप से, उन्हें सीएसएस द्वारा चुना जा सकता है।
यह देखते हुए कि आप CSS का उपयोग data-title
विशेषताओं के साथ तत्वों का चयन करने के लिए कर सकते हैं, फिर आप CSS का उपयोग :after
(या :before
) करने के लिए कर सकते हैं content
जिसमें विशेषता का मान हैattr()
।
स्टाइल टूलटिप उदाहरण
बड़ा और एक अलग पृष्ठभूमि रंग के साथ (प्रति प्रश्न अनुरोध):
[data-title]:hover:after {
opacity: 1;
transition: all 0.1s ease 0.5s;
visibility: visible;
}
[data-title]:after {
content: attr(data-title);
background-color: #00FF00;
color: #111;
font-size: 150%;
position: absolute;
padding: 1px 5px 2px 5px;
bottom: -1.6em;
left: 100%;
white-space: nowrap;
box-shadow: 1px 1px 3px #222222;
opacity: 0;
border: 1px solid #111111;
z-index: 99999;
visibility: hidden;
}
[data-title] {
position: relative;
}
<a href="example.com" data-title="My site"> Link </a> with styled tooltip (bigger and with a different background color, as requested in the question)<br/>
<a href="example.com" title="My site"> Link </a> with normal tooltip
अधिक विस्तृत स्टाइल ( इस ब्लॉग पोस्ट से अनुकूलित ):
[data-title]:hover:after {
opacity: 1;
transition: all 0.1s ease 0.5s;
visibility: visible;
}
[data-title]:after {
content: attr(data-title);
position: absolute;
bottom: -1.6em;
left: 100%;
padding: 4px 4px 4px 8px;
color: #222;
white-space: nowrap;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 0px 0px 4px #222;
-webkit-box-shadow: 0px 0px 4px #222;
box-shadow: 0px 0px 4px #222;
background-image: -moz-linear-gradient(top, #f8f8f8, #cccccc);
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f8f8f8),color-stop(1, #cccccc));
background-image: -webkit-linear-gradient(top, #f8f8f8, #cccccc);
background-image: -moz-linear-gradient(top, #f8f8f8, #cccccc);
background-image: -ms-linear-gradient(top, #f8f8f8, #cccccc);
background-image: -o-linear-gradient(top, #f8f8f8, #cccccc);
opacity: 0;
z-index: 99999;
visibility: hidden;
}
[data-title] {
position: relative;
}
<a href="example.com" data-title="My site"> Link </a> with styled tooltip<br/>
<a href="example.com" title="My site"> Link </a> with normal tooltip
ज्ञात पहलु
एक वास्तविक title
टूलटिप के विपरीत , उपरोक्त सीएसएस द्वारा निर्मित टूलटिप आवश्यक रूप से पृष्ठ पर दिखाई देने की गारंटी नहीं है (अर्थात यह दृश्य क्षेत्र के बाहर हो सकता है)। दूसरी ओर, यह वर्तमान विंडो के भीतर होने की गारंटी है, जो कि वास्तविक टूलटिप के मामले में नहीं है।
इसके अलावा, छद्म-टूलटिप उस तत्व के सापेक्ष स्थित होता है, जहां उस तत्व पर माउस जहां होता है, उसके सापेक्ष छद्म-टूलटिप होता है। जहाँ आप छद्म-टूलटिप प्रदर्शित किया जाता है, वहां आप ठीक-ठाक करना चाहते हैं। तत्व के सापेक्ष एक ज्ञात स्थान पर दिखाई देने से स्थिति के आधार पर लाभ या कमियां हो सकती हैं।
आप ऐसे तत्वों का उपयोग :before
या उपयोग नहीं कर सकते :after
जो कंटेनर नहीं हैं
इस जवाब में एक अच्छी व्याख्या है "क्या मैं उपयोग कर सकता हूं: इनपुट क्षेत्र पर छद्म तत्व के पहले या बाद में?"
प्रभावी ढंग से, इसका मतलब है कि आप जैसे तत्वों पर सीधे इस विधि का उपयोग नहीं कर सकते हैं <input type="text"/>
, <textarea/>
, <img>
, आदि आसान समाधान एक में तत्व यह है कि एक कंटेनर नहीं है रैप करने के लिए है <span>
या <div>
और कंटेनर पर छद्म टूलटिप है।
<span>
एक गैर-कंटेनर तत्व को लपेटने पर एक छद्म टूलटिप का उपयोग करने के उदाहरण :
[data-title]:hover:after {
opacity: 1;
transition: all 0.1s ease 0.5s;
visibility: visible;
}
[data-title]:after {
content: attr(data-title);
background-color: #00FF00;
color: #111;
font-size: 150%;
position: absolute;
padding: 1px 5px 2px 5px;
bottom: -1.6em;
left: 100%;
white-space: nowrap;
box-shadow: 1px 1px 3px #222222;
opacity: 0;
border: 1px solid #111111;
z-index: 99999;
visibility: hidden;
}
[data-title] {
position: relative;
}
.pseudo-tooltip-wrapper {
/*This causes the wrapping element to be the same size as what it contains.*/
display: inline-block;
}
Text input with a pseudo-tooltip:<br/>
<span class="pseudo-tooltip-wrapper" data-title="input type="text""><input type='text'></span><br/><br/><br/>
Textarea with a pseudo-tooltip:<br/>
<span class="pseudo-tooltip-wrapper" data-title="this is a textarea"><textarea data-title="this is a textarea"></textarea></span><br/>
उपरोक्त लिंक किए गए ब्लॉग पोस्ट के कोड से (जो मैंने पहली बार यहां एक उत्तर में देखा था कि इसे ख़त्म कर दिया है), यह मुझे data-*
विशेषता के बजाय एक विशेषता का उपयोग करने के लिए स्पष्ट दिखाई दिया title
। ऐसा करने का सुझाव उस (अब हटाए गए) उत्तर पर स्नोस्टॉर्म द्वारा एक टिप्पणी में भी दिया गया था ।