क्या मैं सीएसएस का उपयोग करके अपनी चौड़ाई के अनुपात में div की ऊंचाई को माप सकता हूं?


82

क्या मैं सीएसएस में कोई चर सेट कर सकता हूं जैसे मैं चाहता हूं कि मेरी दिव्यांगता हमेशा चौड़ाई का आधा हो और मेरी दिव्यांगता स्क्रीन आकार की चौड़ाई के साथ प्रतिशत में हो

<div class="ss"></div>

सीएसएस:

.ss {
    width:30%;
    height: half of the width;
}

स्क्रीन रिज़ॉल्यूशन के साथ यह 30% चौड़ाई है



जवाबों:


125

आप इसे मूल आइटम पर पैडिंग की सहायता से कर सकते हैं, क्योंकि सापेक्ष पैडिंग (यहां तक ​​कि ऊंचाई-वार) मूल तत्व की चौड़ाई पर आधारित है।

सीएसएस:

.imageContainer {
    position: relative;
    width: 25%;
    padding-bottom: 25%;
    float: left;
    height: 0;
}

img {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
}

यह इस लेख पर आधारित है: बस CSS का उपयोग करके उत्तरदायी बक्से का आनुपातिक स्केलिंग


1
इस CSS में यहाँ और वहाँ सभी प्रकार की अजीब चीजें हैं। फिर भी, यह काम करता है।
घासन

1
लेख लिंक चला गया है!
Sanxofon

मुझे जो कुछ भी है, उस रहस्यमय टुकड़े का उपयोग करने से मना करना चाहिए!
जसक डेजीर्डज़िकोस्की

स्पष्टीकरण की बहुत सराहना की जाएगी। यह वास्तव में जादू है।
पलक

रिश्तेदार स्थिति का कारण है कि .imageContainer अंदर पूरी तरह से तैनात img के लिए निर्देशांक उत्पत्ति है। फ्लोट अप्रासंगिक लगता है - केवल उस संदर्भ में समझ में आता है, जहां मैं टाइल बनाने के लिए एक दूसरे के बगल में इस तरह के कई .imageContainer रखना चाहता हूं।
पलक

15

इसे पूरा करने का एक और शानदार तरीका यह है कि एक पारदर्शी छवि का उपयोग एक सेट पहलू अनुपात के साथ किया जाए। फिर छवि की चौड़ाई 100% और ऑटो को ऊंचाई निर्धारित करें। दुर्भाग्य से कंटेनर की मूल सामग्री को नीचे धकेल देगा। तो आपको मूल सामग्री को किसी अन्य div में लपेटने की आवश्यकता है और इसे मूल div के शीर्ष पर स्थित करें।

<div class="parent">
   <img class="aspect-ratio" src="images/aspect-ratio.png" />
   <div class="content">Content</div>
</div>

सीएसएस

.parent {
  position: relative;
}
.aspect-ratio {
  width: 100%;
  height: auto;
}
.content {
  position: absolute;
  width: 100%;
  top: 0; left: 0;
}

1
यह केवल मेरे लिए भी सेटिंग height: 100%;में काम करता है .content। हालांकि टिप के लिए धन्यवाद। मुझे यह तरीका पैडिंग से बेहतर लगता है।
natec

प्रश्न "सीएसएस का उपयोग कर रहा है", HTML में नए तत्वों को जोड़ने से बेहतर है
डिएगो बेटो

9

आप "चौड़ाई" के लिए दृश्य चौड़ाई का उपयोग कर सकते हैं और फिर "चौड़ाई" के लिए दृश्य चौड़ाई का आधा भाग। इस तरह आप व्यूपोर्ट के आकार की परवाह किए बिना सही अनुपात की गारंटी देते हैं।

<div class="ss"></div>

.ss
{
    width: 30vw;
    height: 15vw;
}

बेला


6

यदि आप लंबवत आकार में पिक्सेल में निर्धारित चौड़ाई के आनुपातिक आकार का आकार चाहते हैं, तो मेरा मानना ​​है कि आपको एक अतिरिक्त तत्व की आवश्यकता है, जैसे:

#html

<div class="ptest">
    <div class="ptest-wrap">
        <div class="ptest-inner">
            Put content here
        </div>
    </div>
</div>

#css
.ptest {
  width: 200px;
  position: relative;
}

.ptest-wrap {
    padding-top: 60%;
}
.ptest-inner {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: #333;
}

यहाँ 2 div समाधान है कि काम नहीं करता है। ध्यान दें 60% ऊर्ध्वाधर गद्दी खिड़की की चौड़ाई के अनुपात में है, न कि div.ptestचौड़ाई:

http://jsfiddle.net/d85FM/

यहां ऊपर दिए गए कोड के साथ उदाहरण दिया गया है, जो काम करता है:

http://jsfiddle.net/mmq29/


3

यह उत्तर दूसरों के समान ही है, क्योंकि मैं कई वर्ग के नामों का उपयोग नहीं करना चाहता। लेकिन यह सिर्फ व्यक्तिगत पसंद है। आप तर्क दे सकते हैं कि प्रत्येक div पर वर्ग नामों का उपयोग करना अधिक पारदर्शी है क्योंकि नेस्टेड divs के उद्देश्य को सामने रखा गया है।

<div id="MyDiv" class="proportional">
  <div>
    <div>
      <p>Content</p>
    </div>
  </div>
</div>

यहाँ जेनेरिक सीएसएस है:

.proportional { position:relative; }
.proportional > div > div { position:absolute; top:0px; bottom:0px; left:0px; right:0px; }

फिर चौड़ाई और ऊंचाई (पैडिंग-टॉप) सेट करने के लिए पहले आंतरिक div को लक्षित करें:

#MyDiv > div { width:200px; padding-top:50%; }

3

स्केलेबल समाधान की तलाश करने वाले किसी के लिए: मैंने अलग-अलग ब्रेकप्वाइंट के लिए उत्तरदायी आनुपातिक आयतों को उत्पन्न करने के लिए एसएएसएस में एक छोटी सहायक उपयोगिता लिखी। SASS अनुपात पर एक नज़र डालें

आशा है कि यह किसी को भी मदद करता है!


3

आप ऊंचाई निर्धारित करने के लिए दृश्य चौड़ाई का उपयोग कर सकते हैं। 100 vw चौड़ाई का 100% है। height: 60vw;चौड़ाई 60% कर देगा।


आप सर्वश्रेष्ठ प्रतिक्रिया देने के लिए पूर्ण उत्तर लिख सकते हैं।
अमीरहोसिन

2

जब आप छवियों के साथ काम करते हैं तो एक तरह से उपयोगी होते हैं, लेकिन अन्यथा उन्हें वर्कअराउंड के रूप में इस्तेमाल किया जा सकता है:

<html>
<head>
</head>
<style>
    #someContainer {
        width:50%;
        position: relative;
    }
    #par {
        width: 100%;
        background-color:red;
    }
    #image {
        width: 100%;
        visibility: hidden;
    }
    #myContent {
        position:absolute;
    }
</style>
<div id="someContainer">
    <div id="par">
        <div id="myContent">
            <p>
            Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
            </p>    
        </div>
        <img src="yourImage" id="image"/>
    </div>
</div>
</html>

अपनी छवि url के साथ अपनी छवि बदलने के लिए उपयोग करें। आप अपनी इच्छा के अनुसार चौड़ाई / ऊंचाई अनुपात के साथ छवि का उपयोग करते हैं।

div id = "myContent" यहाँ वर्कअराउंड के उदाहरण के रूप में है जहाँ myContent छवि पर ओवरले करेगा।

यह इस तरह काम करता है: माता-पिता div छवि की ऊंचाई को अपनाएंगे, छवि ऊंचाई माता-पिता की चौड़ाई को अपनाएगी। हालाँकि छवि छिपी हुई है।


1

आप vwया तो का उपयोग करके तत्व की चौड़ाई और ऊंचाई दोनों को असाइन कर सकते हैं vh। उदाहरण के लिए:

#anyElement {
    width: 20vh;
    height: 20vh;
}

यह पहलू अनुपात को बनाए रखते हुए, ब्राउज़र की वर्तमान ऊंचाई की चौड़ाई और ऊंचाई दोनों को 20% तक सेट करेगा। हालाँकि, यह केवल तभी काम करता है जब आप व्यूपोर्ट आयामों के अनुपात में स्केल करना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.