2015-06-07 9 views
12

मैं अपने div के अंदर पाठ को मूल आकार में % प्रतिशत अनुपात में एक ही आकार में रहने के लिए चाहता हूं। आईई। मैं चाहता हूं कि मेरे पाठ में 50% माता-पिता div चौड़ाई के font-size हों। तो जब पृष्ठ का आकार बदल रहा है, पाठ हमेशा % में एक ही आकार बना रहता है।पैरेंट आकार के सापेक्ष फ़ॉन्ट आकार कैसे बनाएं?

.counter-holder{ 
 
\t display: block; 
 
\t position: absolute; 
 
\t width:90%; 
 
\t height:20%; 
 
\t top: 70%; 
 
\t left: 50%; 
 
\t /* bring your own prefixes */ 
 
\t transform: translate(-50%, -50%); 
 
} 
 

 

 
.counter-element-box{ 
 
\t position:relative; 
 
\t vertical-align: text-top; 
 
\t border-style: solid; 
 
    border-width: 1px; 
 
    width: 20%; 
 
    height: 100%; 
 
    float:left; 
 
    margin: 6%; 
 
} 
 

 
.counter-element-text{ 
 
\t position:absolute; 
 
\t top:50%; 
 
\t width: 50%; 
 
\t max-width:50%; 
 
\t display: inline-block; 
 
\t height:100%; 
 
\t margin-left:50%; 
 
\t font-size : 80%;overflow: hidden; 
 
} 
 

 
.counter-element-value{ 
 
\t position:absolute; 
 
\t top:50%; 
 
\t width: 50%; 
 
\t max-width:50%; 
 
\t display: inline-block; 
 
\t height:100%; 
 
\t padding-left:30%; 
 
\t font-size : 80%;overflow: hidden; 
 
}
<div class="counter-holder"> 
 
\t <div class="counter-element-box"> 
 
\t \t <div id="years" class="counter-element-value"> 
 
\t \t \t 0 
 
\t \t </div> 
 
\t \t <div class="counter-text counter-element-text" > 
 
\t \t  Years 
 
\t \t </div> 
 
\t </div> 
 
\t <div class="counter-element-box"> 
 
\t \t <div id="missions" class="counter-element-value"> 
 
\t \t \t 0 
 
\t \t </div> 
 
\t \t <div class="counter-text counter-element-text" > 
 
\t \t  Missions 
 
\t \t </div> 
 
\t </div> 
 
\t <div class="counter-element-box"> \t 
 
\t \t <div id="team" class="counter-element-value"> 
 
\t \t \t 0 
 
\t \t </div> 
 
\t \t <div class="counter-text counter-element-text" > 
 
\t \t  \t Team 
 
\t \t </div> 
 
\t </div> \t \t  \t 
 
</div>

भागो पूर्ण स्क्रीन में इस स्निपेट और पेज का आकार बदलने की कोशिश करें और देखें कि पाठ का आकार बदल रहा है और div अंदर फिटिंग नहीं:

यहाँ मैं के बारे में बात कर रहा हूँ है सीमाओं। मैं इसे कैसे होने से रोक सकता हूं, इसलिए यह हमेशा सीमाओं के अंदर रहता है?

+0

क्या आप 'font-size'and नहीं' width' बदलने टा चाहते हैं? – Core972

+0

मैंने दोनों किया, यह मदद नहीं करता है। साथ ही विकल्पों में से एक को छोड़कर। पाठ अभी भी आकार बदल रहा है। – Tachi

+0

https://stackoverflow.com/q/10292001/2615878 पर कई अच्छे उत्तरों के साथ एक समान प्रश्न है। – Theophilus

उत्तर

-1

font-size: x% का उपयोग माता-पिता की चौड़ाई के सापेक्ष नहीं है, लेकिन आमतौर पर तत्व का फ़ॉन्ट आकार होता है।

तो अपने तत्व के पेरेंट सेट font-size: 12px तो तत्व में font-size: 50% मतलब यह है कि तत्व है, तो एक के font-size6px

क्या आप उपयोग करना चाहते है viewport percentage: font-size: 2vw

.counter-holder{ 
 
\t display: block; 
 
\t position: absolute; 
 
\t width:90%; 
 
\t height:20%; 
 
\t top: 70%; 
 
\t left: 50%; 
 
\t /* bring your own prefixes */ 
 
\t transform: translate(-50%, -50%); 
 
} 
 

 

 
.counter-element-box{ 
 
\t position:relative; 
 
\t vertical-align: text-top; 
 
\t border-style: solid; 
 
    border-width: 1px; 
 
    width: 20%; 
 
    height: 100%; 
 
    float:left; 
 
    margin: 6%; 
 
} 
 

 
.counter-element-text{ 
 
\t position:absolute; 
 
\t top:50%; 
 
\t display: inline-block; 
 
\t margin-left:40%; 
 
\t font-size : 2vw;overflow: hidden; 
 
} 
 

 
.counter-element-value{ 
 
\t position:absolute; 
 
\t top:50%; 
 
\t width: 50%; 
 
\t max-width:50%; 
 
\t display: inline-block; 
 
\t height:100%; 
 
\t padding-left:30%; 
 
\t font-size : 2vw;overflow: hidden; 
 
}
<div class="counter-holder"> 
 
\t \t \t 
 
\t \t \t <div class="counter-element-box"> 
 
\t \t \t \t <div id="years" class="counter-element-value"> 
 
\t \t \t \t \t 0 
 
\t \t  \t </div> 
 
\t \t  \t <div class="counter-text counter-element-text" > 
 
\t \t  \t \t Years 
 
\t \t  \t </div> 
 
\t  \t </div> 
 
\t  \t <div class="counter-element-box"> 
 
\t \t  \t <div id="missions" class="counter-element-value"> 
 
\t \t \t \t \t 0 
 
\t \t  \t </div> 
 
\t \t  \t <div class="counter-text counter-element-text" > 
 
\t \t  \t \t Missions 
 
\t \t  \t </div> 
 
\t  \t </div> 
 
\t \t  <div class="counter-element-box"> \t 
 
\t \t  \t <div id="team" class="counter-element-value"> 
 
\t \t \t \t \t 0 
 
\t \t  \t </div> 
 
\t \t  \t <div class="counter-text counter-element-text" > 
 
\t \t  \t \t Team 
 
\t \t  \t </div> 
 
\t  \t </div> \t \t  \t 
 
</div>
: vw

उदाहरण के लिए

+0

महान स्पष्टीकरण, पहले '' 'vw''' के बारे में कभी नहीं सुना। – Tachi

+60

व्यूपोर्ट विंडो का आकार 'vw' और' vh' नहीं है, न कि यह माता-पिता है? – bryan

+11

वास्तव में, यह उत्तर मान्य के रूप में चिह्नित नहीं किया जाना चाहिए था! मुझे लगता है कि आपको माता-पिता के सापेक्ष आकार टेक्स्ट में कुछ जावास्क्रिप्ट की आवश्यकता होगी, लेकिन व्यूपोर्ट इकाइयां निश्चित रूप से इसे प्राप्त करने का तरीका नहीं हैं। – MrMerrick

-3

आप विंडो के साथ आकार बदलने के लिए व्यूपोर्ट इकाइयों का उपयोग कर सकते हैं। 100vw पूर्ण खिड़की चौड़ाई है, और 100vh - ऊंचाई।

.resizable-text { 
 
    font-size: 50vw; 
 
}
<div class="resizable-text"> 
 
    Text 
 
</div>

-2

तरह से मैं इस समस्या का समाधान जावास्क्रिप्ट का उपयोग करने के कंटेनर को मापने के लिए था और फिर उस कंटेनर पर पिक्सल में फ़ॉन्ट आकार निर्धारित किया है। एक बार जब आधार रेखा कंटेनर के लिए सेट हो जाती है तो सभी सामग्री का सापेक्ष फ़ॉन्ट आकार एम या% का उपयोग करके सही ढंग से स्केल करेगा।

मैं प्रतिक्रिया उपयोग कर रहा हूँ:

<div style={{ fontSize: width/12 }} > 
    ... 
</div> 

सीएसएस:

div { 
    font-size: 2em; 
} 
संबंधित मुद्दे