बैकग्राउंड साइज को ऑटो-एडजस्ट करने के लिए डिव ऊँचाई कैसे प्राप्त करें?


270

मैं इसके लिए एक विशिष्ट ऊंचाई (या न्यूनतम ऊंचाई) स्थापित किए बिना पृष्ठभूमि के आकार को स्वचालित रूप से समायोजित करने के लिए एक div कैसे प्राप्त कर सकता हूं?

जवाबों:


254

एक और, शायद अक्षम, समाधान एक imgतत्व के तहत सेट करने के लिए छवि को शामिल करना होगा visibility: hidden;। फिर background-imageआसपास के डिव को छवि के समान बनाएं ।

यह imgतत्व में छवि के आकार के आसपास के डिव को सेट करेगा लेकिन इसे पृष्ठभूमि के रूप में प्रदर्शित करेगा।

<div style="background-image: url(http://your-image.jpg);">
 <img src="http://your-image.jpg" style="visibility: hidden;" />
</div>

16
वास्तव में उपयोगी नहीं है क्योंकि छवि 'स्पेस' का उपयोग करेगी और सामग्री शानदार मार्जिन टॉप होने जैसी दिखाई देगी।
बार्ट कैलिक्सो

35
शायद मुझे कुछ याद आ रहा है, लेकिन अगर आप किसी भी तरह से imgअपने मार्कअप में डालने जा रहे हैं, तो बस वास्तविक को क्यों छिपाएं <img>और background-imageया तो परेशान न करें ? इस तरह से काम करने से क्या फायदा?
मार्क अमेरी

3
अच्छा जवाब, लेकिन क्या ब्राउज़र को इसे दो बार लोड नहीं करना है?
14:13 पर www139

7
@ www139 जब आप लोड कहते हैं, तो वास्तव में आपका क्या मतलब है? एक बार छवि डाउनलोड हो जाने के बाद, यह संभवत: कैश की गई है। उस बिंदु से, किसी भी अन्य अनुरोध एक स्थानीय प्रतिलिपि पर आधारित हैं। तो, नहीं। इसे दो बार डाउनलोड नहीं किया जाता है। लेकिन, इसे दो बार लोड किया जाता है।
Tmac

2
@MarkAmery सबसे अच्छी चीजों में से background-imageएक यह है कि यह CSS ब्लेंड-मोड्स का उपयोग कर सकती है , जबकि imgऐसा नहीं कर सकती।
एरोन ग्रे

539

एक पृष्ठभूमि छवि को एक imgतत्व की तरह काम करने के लिए एक बहुत अच्छा और अच्छा तरीका है ताकि वह इसे समायोजित कर सकेheight आप हो जाए। आपको छवि widthऔर heightअनुपात जानने की जरूरत है। सेट height0 करने के लिए कंटेनर की और सेट padding-topछवि अनुपात के आधार पर के रूप में प्रतिशत।

यह निम्नलिखित की तरह दिखेगा:

div {
    background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
    background-size: contain;
    background-repeat: no-repeat;
    width: 100%;
    height: 0;
    padding-top: 66.64%; /* (img-height / img-width * container-width) */
                /* (853 / 1280 * 100) */
}

आपको बस ऑटो ऊंचाई के साथ एक पृष्ठभूमि छवि मिली है जो कि एक img तत्व की तरह काम करेगी। यहां एक कार्यशील प्रोटोटाइप है (आप डिविज़न का आकार बदल सकते हैं और जांच सकते हैं): http://jsfiddle.net/TPEFn/2/


23
वास्तव में बहुत बढ़िया! बस इस उत्तर को देखने वाली भावी पीढ़ियों के लिए, यदि आप कम्पास (एससीएस) का उपयोग कर रहे हैं, तो मैंने आपके लिए गणना करने के लिए उनके सहायक कार्यों का उपयोग करके एक मिक्सिन बनाया है: @mixin div-same-size-as-background-img($url) { background-image: url($url); background-size: contain; background-repeat: no-repeat; width: 100%; height: 0; padding-top: percentage(image-height($url) / image-width($url)); }
बेंजामिन के।

20
FYI करें जो सोच रहे हैं, गद्दी-शीर्ष एक सफेद स्थान नहीं बनाता है क्योंकि यह सिर्फ तत्व को ऊंचाई जोड़ता है। छवि एक पृष्ठभूमि छवि है, इसलिए यह उचित स्थिति और रिक्ति के साथ दिखाता है। यह बहुत ही बेवकूफ है हमें सीएसएस के लिए इन जैसी चालों के साथ आना होगा।
एहनबीकैड

9
दुर्भाग्य से, पैडिंग-टॉप आपको div में कुछ और डालने की अनुमति नहीं देता है, जैसे कि बैकग्राउंड पर फॉर्म एलिमेंट्स।
गैरी हेस

14
@ GaryHayes आप position:relativediv पर सेट कर सकते हैं और position:absolute; top:0; bottom:0; left:0; right:0;सेट के साथ एक और div अंदर रख सकते हैं
lexith

17
यद्यपि यह विधि एक पृष्ठभूमि छवि दिखाने के लिए काम करती है, लेकिन यह स्वयं को पैडिंग के साथ भरकर कम उपयोगी डिव को प्रस्तुत करती है। क्रिप्टिक ने कंटेनर के अंदर एक बिल्कुल तैनात डिव को जोड़ने का सुझाव दिया, लेकिन फिर एक पृष्ठभूमि छवि के साथ परेशान क्यों? आप तब सामग्री div में एक वास्तविक छवि का उपयोग कर सकते हैं यदि आप उस पर पूरी तरह से पूर्ण स्थिति में जा रहे हैं। यह पहली जगह में पृष्ठभूमि छवि का उपयोग करने के उद्देश्य को पराजित करता है।
पॉलमज़ जूल

35

CSS का उपयोग करके पृष्ठभूमि छवि आकार के लिए ऑटो समायोजित करने का कोई तरीका नहीं है।

आप सर्वर पर पृष्ठभूमि छवि को मापकर और फिर उन विशेषताओं को div पर लागू कर सकते हैं, जैसा कि अन्य लोगों ने उल्लेख किया है।

आप छवि आकार के आधार पर div का आकार बदलने के लिए कुछ जावास्क्रिप्ट को हैक कर सकते हैं (एक बार छवि डाउनलोड हो जाने के बाद) - यह मूल रूप से एक ही बात है।

यदि आपको छवि को ऑटो-फिट करने के लिए आपके div की आवश्यकता है, तो मैं पूछ सकता हूं कि आपने <img>अपनी div के अंदर एक टैग क्यों नहीं लगाया ?


धन्यवाद - लेकिन मुझे इसकी पृष्ठभूमि के रूप में आवश्यकता है इसलिए छवि चाल यह नहीं करेगी। मुझे लगता है कि मैं कुछ जावास्क्रिप्ट हैक करने वाला हूं क्योंकि आप सबसे खराब स्थिति कहते हैं लेकिन यह शायद इसके लायक नहीं है।
JohnIdol

3
^ ^ यह शायद एक अच्छा विचार नहीं है। आपकी छवि के डाउनलोड होने से पहले ब्राउज़र को कई सेकंड लग सकते हैं, और आप तब तक इसे माप नहीं सकते हैं, इसलिए आपका div काफी समय तक गलत आकार में लटका रहेगा!
ओरियन एडवर्ड्स

1
जब वह दस्तावेज तैयार होता है तब वह केवल जावास्क्रिप्ट चला सकता है।
स्कॉट टेसलर

1
आप बदल नहीं सकते srcएक की imgमीडिया के प्रश्नों के साथ, लेकिन आप मीडिया के प्रश्नों के साथ एक पृष्ठभूमि छवि के रूप में इस्तेमाल फ़ाइल बदल सकते हैं।
स्कॉट मार्कस

21

यह उत्तर दूसरों के समान है, लेकिन अधिकांश अनुप्रयोगों के लिए सबसे अच्छा है। आपको हाथ से पहले छवि का आकार जानना होगा जो आप आमतौर पर करते हैं। यह आपको ओवरले पाठ, शीर्षक आदि जोड़ देगा जिसमें कोई नकारात्मक पैडिंग या छवि की पूर्ण स्थिति नहीं होगी। वे नीचे दिए गए उदाहरण में देखे गए अनुसार छवि पहलू अनुपात से मिलान करने के लिए पैडिंग% निर्धारित करते हैं। मैंने इस उत्तर का उपयोग किया और अनिवार्य रूप से सिर्फ एक छवि पृष्ठभूमि जोड़ी।

.wrapper {
  width: 100%;
  /* whatever width you want */
  display: inline-block;
  position: relative;
  background-size: contain;
  background: url('https://upload.wikimedia.org/wikipedia/en/thumb/6/67/Wiki-llama.jpg/1600px-Wiki-llama.jpg') top center no-repeat;
  margin: 0 auto;
}
.wrapper:after {
  padding-top: 75%;
  /* this llama image is 800x600 so set the padding top % to match 600/800 = .75 */
  display: block;
  content: '';
}
.main {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  color: black;
  text-align: center;
  margin-top: 5%;
}
<div class="wrapper">
  <div class="main">
    This is where your overlay content goes, titles, text, buttons, etc.
  </div>
</div>


2
-1 के महत्वपूर्ण उपयोग के लिए - और दूसरे उत्तर के लिए लिंक करना। कृपया अन्य उत्तर से संबंधित कोड (अटेंशन के साथ) में कॉपी करने पर विचार करें, ताकि यह अधिक पूर्ण हो, और लिंक सड़ने की संभावना हो।
NotLizards

@jammypeach क्या यह बेहतर है?
घोड़ाजॉकी

1
@horsejockey जब तक मैं कुछ याद नहीं कर रहा हूँ यह छवि को मापता नहीं है। यह सिर्फ मास्क करता है।
dwkns

@dwkns अजीब तरह से सभी पृष्ठभूमि कॉल एक तत्व में होना चाहिए। मैंने पाया कि जब मैं एक विशिष्ट आईडी पर "पृष्ठभूमि: url ()" और एक सामान्य वर्ग में "पृष्ठभूमि-आकार: निर्दिष्ट करता हूं" तो यह क्रॉप कर रहा था।
नाथन विलियम्स

@dwkns अपडेट: मैं "पृष्ठभूमि: url ()" के बजाय "पृष्ठभूमि-छवि: url ()" का उपयोग करके उस समस्या को ठीक करने में सक्षम था।
नाथन विलियम्स

15

शायद यह मदद कर सकता है, यह बिल्कुल पृष्ठभूमि नहीं है, लेकिन आपको यह विचार मिलता है:

<style>
div {
    float: left;
    position: relative;
}
div img {
    position: relative;
}

div div {
    position: absolute;
    top:0;
    left:0;
}
</style>

<div>
    <img src="http://antwrp.gsfc.nasa.gov/apod/image/0903/omegacen_davis.jpg" />
    <div>Hi there</div>
</div>

कृपया बताएं कि आपने रिश्तेदार के रूप में img की स्थिति क्यों रखी?
दिव्यांशु जिमी

1
शायद इसलिए कि float: left;उनकी स्थिति टूट गई
आइजैक

12

बहुत यकीन है कि यह सब नीचे यहाँ कभी नहीं देखा जाएगा। लेकिन अगर आपकी समस्या मेरी जैसी ही थी, तो यह मेरा समाधान था:

.imaged-container{
  background-image:url('<%= asset_path("landing-page.png") %> ');
  background-repeat: no-repeat;
  background-size: 100%;
  height: 65vw;
}

मैं छवि के केंद्र में एक div होना चाहता था, और यह मुझे इसकी अनुमति देगा।


9

एक शुद्ध सीएसएस समाधान है कि अन्य उत्तर छूट गए हैं।

"सामग्री:" संपत्ति का उपयोग ज्यादातर पाठ सामग्री को एक तत्व में सम्मिलित करने के लिए किया जाता है, लेकिन इसका उपयोग छवि सामग्री डालने के लिए भी किया जा सकता है।

.my-div:before {
    content: url("image.png");
}

यह div को छवि के वास्तविक पिक्सेल आकार में इसकी ऊंचाई का आकार देने का कारण होगा। चौड़ाई का आकार बदलने के लिए, जोड़ें:

.my-div {
    display: inline-block;
}

1
मुझे यह समाधान पसंद है, लेकिन जब ब्राउज़र को छोटा किया जाता है तो हेडर छवि के नीचे बहुत सी सफेद जगह बची होती है जो कि उत्तरदायी होती है।
एमजी 1

6

आप इसे सर्वर साइड कर सकते हैं: छवि को मापकर और फिर डिव साइज़ को सेट करके, या जेएस के साथ इमेज को लोड कर सकते हैं, इसे पढ़ सकते हैं और फिर DIV आकार सेट कर सकते हैं।

और यहाँ एक विचार है, एक छवि को div के अंदर IMG टैग के रूप में रखें, लेकिन इसे दृश्यता दें: स्थिति के सापेक्ष छिपे + खेलते हैं और इस div को पृष्ठभूमि के रूप में छवि देते हैं।


योग्य क्यों सर्वर साइड की आवश्यकता है? यह सीएसएस के साथ लागू करने में सक्षम होना चाहिए।
GTHell

1
@GTHell हाहा - मैंने उत्तर दिया वर्ष की जाँच करें
Itay Moav -Malimovka

@ ItayMoav-Malimovka hehe, ध्यान नहीं दिया।
GTHell

5

मेरे पास यह मुद्दा था और हसनवी का जवाब मिला, लेकिन एक विस्तृत स्क्रीन पर पृष्ठभूमि की छवि प्रदर्शित करते समय मुझे थोड़ा बग मिला - पृष्ठभूमि की छवि स्क्रीन की पूरी चौड़ाई में नहीं फैली।

तो यहाँ मेरा समाधान है - हसनवी के कोड पर आधारित लेकिन बेहतर ... और यह दोनों अतिरिक्त-वाइड और मोबाइल स्क्रीन पर काम करना चाहिए।

/*WIDE SCREEN SUPPORT*/
@media screen and (min-width: 769px) { 
    div {
        background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
        background-size: cover;
        background-repeat: no-repeat;
        width: 100%;
        height: 0;
        padding-top: 66.64%; /* (img-height / img-width * container-width) */
                    /* (853 / 1280 * 100) */
    }
}

/*MOBILE SUPPORT*/
@media screen and (max-width: 768px) {
    div {
        background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
        background-size: contain;
        background-repeat: no-repeat;
        width: 100%;
        height: 0;
        padding-top: 66.64%; /* (img-height / img-width * container-width) */
                    /* (853 / 1280 * 100) */
    }
}

जैसा कि आपने देखा होगा कि background-size: contain;प्रॉपर्टी doas अतिरिक्त वाइड स्क्रीन में अच्छी तरह से फिट नहीं होती है, और background-size: cover;संपत्ति मोबाइल स्क्रीन पर अच्छी तरह से फिट नहीं होती है इसलिए मैंने @mediaस्क्रीन साइज के साथ खेलने और इस समस्या को ठीक करने के लिए इस विशेषता का उपयोग किया ।


3

इस बारे में कैसा है :)

.fixed-centered-covers-entire-page{
    margin:auto;
    background-image: url('https://i.imgur.com/Ljd0YBi.jpg');
    background-repeat: no-repeat;background-size:cover;
    background-position: 50%;
    background-color: #fff;
    left:0;
    right:0;
    top:0;
    bottom:0;
    z-index:-1;
    position:fixed;
}
<div class="fixed-centered-covers-entire-page"></div>

डेमो: http://jsfiddle.net/josephmcasey/KhPaF/


3

यदि यह एकल पूर्वनिर्धारित पृष्ठभूमि छवि है और आप चाहते हैं कि पृष्ठभूमि की छवि के पहलू अनुपात को विकृत किए बिना div उत्तरदायी हो, तो आप पहले छवि के पहलू अनुपात की गणना कर सकते हैं और फिर एक div बना सकते हैं, जो निम्नलिखित करके यह पहलू अनुपात बनाए रखता है। :

मान लें कि आप 4/1 का पहलू अनुपात चाहते हैं और div की चौड़ाई 32% है:

div {
  width: 32%; 
  padding-bottom: 8%; 
}

यह इस तथ्य से उत्पन्न होता है कि पैडिंग की गणना युक्त तत्व की चौड़ाई के आधार पर की जाती है।


1

यह मदद कर सकता है, यह बिल्कुल पृष्ठभूमि नहीं है, लेकिन आपको सरल विचार मिलता है

    <style>
div {
    float: left;
    position: relative;
}
div img {
    position: relative;
}

div div {
    position: absolute;
    top:0;
    left:0;
}
</style>

<div>
    <img src="http://www.planwallpaper.com/static/images/recycled_texture_background_by_sandeep_m-d6aeau9_PZ9chud.jpg" />
    <div>Hello</div>
</div>

1

आप ऐसा कुछ कर सकते हैं

<div style="background-image: url(http://your-image.jpg); position:relative;">
 <img src="http://your-image.jpg" style="opacity: 0;" />
<div style="position: absolute;top: 0;width: 100%;height: 100%;">my content goes here</div>
</div>

1

यदि आप बिल्ड समय में छवि के अनुपात को जानते हैं, तो खिड़की की ऊंचाई के आधार पर ऊंचाई चाहते हैं और आप आधुनिक ब्राउज़रों (IE9 +) को लक्षित कर रहे हैं , तो आप इसके लिए व्यूपोर्ट इकाइयों का उपयोग कर सकते हैं:

.width-ratio-of-height {
  overflow-x: scroll;
  height: 100vh;
  width: 500vh; /* width here is 5x height */
  background-image: url("http://placehold.it/5000x1000");
  background-size: cover;
}

काफी नहीं ओपी क्या पूछ रहा था, लेकिन शायद इस सवाल को देखने वालों के लिए एक अच्छा फिट है, इसलिए यहां एक और विकल्प देना चाहता था।

फिडल: https://jsfiddle.net/6Lkzdnge/


1

मैंने कुछ समाधानों को देखा और वे महान हैं लेकिन मुझे लगता है कि मुझे आश्चर्यजनक रूप से आसान तरीका मिला।

सबसे पहले, हमें पृष्ठभूमि छवि से अनुपात प्राप्त करने की आवश्यकता है। हम बस एक आयाम को दूसरे के माध्यम से विभाजित करते हैं। तब हमें 66.4% उदाहरण के लिए कुछ मिलता है

जब हमारे पास छवि अनुपात होता है तो हम बस व्यूपोर्ट चौड़ाई द्वारा अनुपात को गुणा करके div की ऊंचाई की गणना कर सकते हैं:

height: calc(0.664 * 100vw);

मेरे लिए, यह काम करता है, ठीक से ऊँचाई सेट करता है और खिड़की के आकार बदलने पर इसे बदल देता है।


1

मान लीजिए कि आपके पास कुछ इस तरह है:

<div class="content">
    ... // inner HTML
</div>

और आप इसके लिए एक पृष्ठभूमि जोड़ना चाहते हैं, लेकिन आप छवि के आयाम को नहीं जानते हैं।

मुझे एक समान समस्या थी, और मैंने इसे ग्रिड का उपयोग करके हल किया:

एचटीएमएल

<div class="outer">
    <div class="content">
        ... // inner HTML
    </div>
    <img class="background" />
</div>

सीएसएस

.outer{
    display: grid;
    grid-template: auto / auto;
    // or you can assign a name for this block
}
.content{
    grid-area: 1 / 1 / 2 / 2;
    z-index: 2;
}
.background{
    grid-area: 1 / 1 / 2 / 2;
    z-index: 1;
}

z-indexवास्तव में पृष्ठभूमि पर छवि रखने के लिए है, आप निश्चित रूप से img.backgroundऊपर की जगह ले सकते हैं div.content

ध्यान दें : यह div.contentचित्र की समान ऊँचाई का कारण हो सकता है , इसलिए यदि div.contentकोई भी बच्चा है, जो इसकी ऊँचाई के अनुसार रखा गया है, तो आप 'ऑटो' जैसी कोई चीज़ नहीं सेट करना चाहते हैं।


0

Umbraco CMS के साथ यह समस्या थी और इस परिदृश्य में आप div की 'शैली' विशेषता के लिए कुछ इस तरह से छवि को जोड़ सकते हैं:

style="background: url('@(image.mediaItem.Image.umbracoFile)') no-repeat scroll 0 0 transparent; height: @(image.mediaItem.Image.umbracoHeight)px"

0

मैं थोड़ी देर के लिए इस मुद्दे से निपट रहा हूं और इस समस्या को हल करने के लिए एक jquery प्लगइन लिखने का फैसला किया। यह प्लगइन क्लास "शो-बीजी" के साथ सभी तत्वों को प्राप्त करेगा (या आप इसे अपने स्वयं के चयनकर्ता को पास कर सकते हैं) और उनकी पृष्ठभूमि छवि आयामों की गणना कर सकते हैं। आपको बस इस कोड को शामिल करना है, वर्ग = "शो के साथ वांछित तत्वों को चिह्नित करना है।"

का आनंद लें!

https://bitbucket.org/tomeralmog/jquery.heightfrombg


0

सबसे अच्छा समाधान मैं सोच सकता हूं कि आपकी चौड़ाई और ऊंचाई प्रतिशत में निर्दिष्ट है। इससे आप अपने स्क्रीन को अपने मॉनिटर साइज़ के आधार पर रिजेक्ट कर सकते हैं। उत्तरदायी लेआउट के अपने अधिक ..

एक उदाहरण के लिए। आपके पास

<br/>
<div> . //This you set the width percent to %100
    <div> //This you set the width percent to any amount . if you put it by 50% , it will be half
    </div>
 </div>

यह सबसे अच्छा विकल्प है यदि आप एक उत्तरदायी लेआउट चाहते हैं, तो मैं फ्लोट की सिफारिश करूंगा, कुछ मामलों में फ्लोट का उपयोग करना ठीक है। लेकिन ज्यादातर मामलों में, हम फ्लोट का उपयोग करने से बचते हैं क्योंकि जब आप क्रॉस-ब्राउज़र परीक्षण कर रहे होते हैं तो यह बहुत सी चीजों को प्रभावित करेगा।

उम्मीद है की यह मदद करेगा :)


-1

वास्तव में यह काफी आसान है जब आप जानते हैं कि यह कैसे करना है:

<section data-speed='.618' data-type='background' style='background: url(someUrl) 
top center no-repeat fixed;  width: 100%; height: 40vw;'>
<div style='width: 100%; height: 40vw;'>
</div>
</section>

ट्रिक सिर्फ संलग्न div को एक सामान्य div के रूप में आयामी मानों के साथ सेट करने के लिए है जैसा कि बैकग्राउंड डायमेंशनल मान (इस उदाहरण में, 100% और 40vw)।


आप खिड़की की चौड़ाई के अनुपात में ऊंचाई निर्धारित कर रहे हैं। यह सभी मामलों में काम नहीं करेगा - और आपकी कुछ सामग्री, जैसे डेटा-स्पीड का आपके उत्तर से कोई लेना-देना नहीं है।
पॉलीडक्स

ज्यादातर चीजें "काफी आसान नहीं होती हैं जब आप जानते हैं कि यह कैसे करना है"?
स्कॉट मार्कस

-2

मैंने इसे jQuery का उपयोग करके हल किया। जब तक नए सीएसएस नियम इस प्रकार के व्यवहार के लिए अनुमति देते हैं, तब तक मुझे लगता है कि यह इसे करने का सबसे अच्छा तरीका है।

अपने divs सेट करें

नीचे आपकी डिव होती है जिसे आप चाहते हैं कि पृष्ठभूमि ("नायक") दिखाई दे और फिर आप जिस आंतरिक सामग्री / पाठ को अपनी पृष्ठभूमि छवि ("आंतरिक") के ऊपर ओवरले करना चाहते हैं। आप (और) अपने हीरो वर्ग को इनलाइन शैलियों को स्थानांतरित कर सकते हैं। मैंने उन्हें यहाँ छोड़ दिया, इसलिए यह देखना आसान और आसान है कि इसे किस शैली में लागू किया गया है।

<div class="hero" style="background-image: url('your-image.png'); background-size: 100%; background-repeat: no-repeat; width: 100%;">
    <div class="inner">overlay content</div>
</div>

छवि पहलू अनुपात की गणना करें

आगे आपकी छवि की चौड़ाई के आधार पर आपकी छवि की ऊंचाई को विभाजित करके पहलू अनुपात की गणना करें। उदाहरण के लिए, यदि आपकी छवि की ऊंचाई 660 है और आपकी चौड़ाई 1280 है तो आपका अनुपात 0.5256 है।

ऊंचाई समायोजित करने के लिए jQuery विंडो आकार बदलने वाली घटना को सेट करें

अंत में, विंडो के आकार के लिए एक jQuery इवेंट श्रोता जोड़ें और फिर पहलू अनुपात के आधार पर अपने हीरो div की ऊंचाई की गणना करें और इसे अपडेट करें। यह समाधान आम तौर पर पहलू अनुपात का उपयोग करते हुए अपूर्ण गणना के कारण निचले हिस्से में एक अतिरिक्त पिक्सेल छोड़ता है, इसलिए हम परिणामस्वरूप आकार में -1 जोड़ते हैं।

$(window).on("resize", function ()
{
    var aspect_ratio = .5156; /* or whatever yours is */
    var new_hero_height = ($(window).width()*aspect_ratio) - 1;
    $(".hero").height(new_hero_height);
}

यह सुनिश्चित करें कि यह पेज लोड पर काम करता है

जब पृष्ठ लोड हो रहा है, तो उस समय के आकार की गणना आपको ऊपर की आकार की कॉल पर करनी चाहिए। यदि आप नहीं करते हैं, तो जब तक आप विंडो का आकार नहीं बदलते हैं, तब तक हीरो डिव एडजस्ट नहीं होगा। मैं समायोजन समायोजित करने के लिए एक अलग फ़ंक्शन सेटअप करता हूं। यहां मैं पूर्ण कोड का उपयोग करता हूं।

function updateHeroDiv()
{
    var aspect_ratio = .5156; /* or whatever yours is */
    var new_hero_height = ($(window).width()*aspect_ratio) - 1;
    $(".hero").height(new_hero_height);
}

$(document).ready(function() 
{       
    // calls the function on page load
    updateHeroDiv(); 

    // calls the function on window resize
    $(window).on("resize", function ()
    {
        updateHeroDiv();        
    }
});

-2

यदि आप फ़ोटोशॉप पर एक छवि बना सकते हैं, जहां मुख्य परत में 1 या तो की अस्पष्टता है और मूल रूप से पारदर्शी है, तो उस आईजीएम को डिव में डालें और फिर वास्तविक चित्र को पृष्ठभूमि की छवि बनाएं। फिर img की अस्पष्टता को 1 पर सेट करें और अपने इच्छित आकार को जोड़ें।

यह चित्र उस तरह से किया गया है, और आप उस अदृश्य छवि को पृष्ठ से दूर नहीं खींच सकते जो शांत है।


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