2011-12-22 16 views
5

क्या जावास्क्रिप्ट/jQuery में span (या अन्य इनलाइन तत्व) के line-height प्राप्त करने का कोई तरीका है?एक अवधि की रेखा ऊंचाई कैसे प्राप्त करें?

मैं सटीक पिक्सल में line-height गणना की जरूरत है, नहीं प्रकार 1.2em, normal या fontSize * 1.5 तरह heuristics के मूल्यों।

मुझे क्या करना है लाइन की पूरी ऊंचाई को भरने के लिए मुझे span की पृष्ठभूमि को खींचना है। मुझे लगा कि मैं अवधि को फैलाने के लिए पैडिंग जोड़ सकता हूं, लेकिन इसके लिए मुझे सटीक line-height की आवश्यकता है। अगर कोई दूसरा दृष्टिकोण पेश कर सकता है, तो यह भी सहायक होगा।

+0

आपके अवधि को प्रदर्शित करने की आवश्यकता है: ब्लॉक, 'span {line-height: 12px; प्रदर्शन: ब्लॉक;} ' –

उत्तर

3
$("span").css("line-height"); 

उदाहरण के लिए गणना किए गए पीएक्स मान को स्ट्रिंग "16px" के रूप में पुनर्प्राप्त करता है। यह कवर के तहत IE के currentStyle या मानक getComputedStyle का उपयोग करता है। यह एक आश्चर्यजनक लग रहा है जब यह एक सेटर के रूप में काम करता है यह elem.style.something = value है जो एक पूरी तरह से अलग बात है।

+0

जैसा कि टीएफएम द्वारा समर्थित है: http://api.jquery.com/css/ ;-) – PPvG

+1

यह पहली बात थी जिसकी मैंने कोशिश की थी। दुर्भाग्य से वेबकिट ब्राउज़र पर यह "सामान्य" स्ट्रिंग देता है जब तक कि मैंने पहले से ही 'लाइन-ऊंचाई' मैन्युअल रूप से सेट नहीं किया हो। मैं jQuery 1.6.1 का उपयोग कर रहा हूँ। क्या बाद के संस्करणों में इसका अलग व्यवहार है? –

+0

@ राडानगंचव आप सही हैं, यह कुछ तत्वों के लिए सामान्य लौटाता है। '[] .forEach.call (document.getElementsByTagName (" * "), फ़ंक्शन (v) { console.log (getComputedStyle (v) .lineHeight); }); 'चल रहा है जो इस पृष्ठ पर अधिकांश के लिए पीएक्स मान देता है तत्व हालांकि। – Esailija

0

यह मानते हुए कि अवधि एक div में निहित है। रिश्तेदार

और एक ब्लॉक है कि 100% ऊंचाई लेता है के रूप में अवधि:

आप स्थिति को div सेट कर सकते हैं।

इस तरह आप जितनी चाहें उतनी अवधि बढ़ाएंगे।

उदाहरण here (ध्यान दें:।। प्रभाव देखने के लिए, पारदर्शी करने के लिए अवधि की पृष्ठभूमि का रंग बदलने आप लाल div देखने के लिए सक्षम होना चाहिए)

+0

मैं 'span' का उपयोग कर रहा हूं, क्योंकि मुझे इनलाइन तत्व की आवश्यकता है। मेरा लक्ष्य कुछ पाठ को चिह्नित करना है जो एक पंक्ति के बीच में शुरू हो सकता है। 'डिस्प्ले: ब्लॉक 'मेरे लिए काम नहीं करता है। –

0

अपने डिजाइन इसके लिए अनुमति देता है, तो आप आवेदन कर सकते हैं तत्वों आप लक्षित कर रहे हैं और फिर outerHeight उपयोग करने के लिए इनलाइन-ब्लॉक ... यह करने के लिए

var inlineHeight = $('.inline-height').css("display", "inline-block").outerHeight(); 
//console.log('Inline Height:' + inlineHeight); 
2

एक आसान तरीका है:

var style = window.getComputedStyle(element); 
var lineHeight = style.getPropertyValue('line-height'); 

यह jQuery का उपयोग किये बिना लाइन ऊंचाई की गणना मूल्य प्राप्त करेगा और आईई 9 के बाद से सभी ब्राउज़रों पर काम करेगा।

संबंधित मुद्दे