2015-07-05 11 views
7

मेरे HTML के साथ लेआउट निम्न उदाहरणflexbox: रोस्पेन

<div id="wrapper"> 
<div id="a">a</div> 
<div id="b">b</div> 
<div id="c">c</div> 
<div id="d">d</div> 
</div> 

डेस्कटॉप पर मैं divs तुच्छ निश्चित रूप से है जो एक दूसरे के बगल प्रदर्शित करना चाहते हैं के समान है।

मोबाइल मुझे पसंद है, उस पर निम्नलिखित

enter image description here

बी, सी के लिए इसी तरह के साथ तालिका जैसी लेआउट और डी लचीला ऊंचाई तो एक है कि करने के लिए समायोजित करने के लिए होता है।

क्या बी, सी और डी को एक अलग div में लपेटने के बिना करना संभव है?

+0

यह आसान है, तो आपको एक अलग div में लपेट किया जाएगा। इसका उपयोग क्यों नहीं करें? –

+0

आपको @media प्रॉपर्टी का उपयोग करके अलग-अलग मोबाइल और डेस्कटॉप स्टाइल शीट को परिभाषित करना पड़ सकता है: http://stackoverflow.com/questions/21162094/responsive-css-target-1024-x-768- स्क्रीन- आकार- केवल अलग स्टाइल शीट घोषित करना वांछित प्रभावों के लिए अलग-अलग फ्लेक्स बॉक्स मॉडल को लागू कर सकते हैं। डाउनसाइड, आपको लेआउट परिवर्तन के लिए हार्ड-सेट आयाम चुनना होगा। – Matt

+0

मुझे @media प्रॉपर्टी के साथ अलग स्टाइल शीट्स का उपयोग करने में कोई फर्क नहीं पड़ता। समस्या यह है कि मुझे डिवीजन को संरेखित करने के बारे में कोई जानकारी नहीं है क्योंकि मैं बी, सी और डी को एक अलग div में लपेटने के बिना मोबाइल पर करना चाहता हूं। उन्हें एक अलग div में लपेटना निश्चित रूप से संभव है लेकिन वास्तव में अर्थपूर्ण परिप्रेक्ष्य से नहीं चाहिए – MarcS

उत्तर

5

हाँ, आप पूरी तरहflexbox के साथ ऐसा कर सकते हैं ... निश्चित रूप से आप की जरूरत करने जा रहे हैं छोटे व्यूपोर्ट आकारों पर पहले div के लिए चौड़ाई पर निर्णय लेने के लिए, लेकिन मुझे लगता है कि आपके पास आवश्यक मीडिया क्वेरी के लिए पहले से ही तैयार है।

#wrapper { 
 
    height: 100vh; 
 
    width: 90vw; 
 
    border: 1px solid grey; 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-wrap: wrap; 
 
    margin: 10px auto; 
 
} 
 
#wrapper div { 
 
    flex: 1 0 auto; 
 
    border: 1px solid white; 
 
    background: lightblue; 
 
    text-align: center; 
 
} 
 
#a { 
 
    flex-grow: 1; 
 
    height: 100%; 
 
    flex-basis: 50%; 
 
} 
 
@media screen and (min-width: 640px) { 
 
    #a { 
 
    height: auto; 
 
    flex-grow: none; 
 
    flex-basis: auto; 
 
    } 
 
}
<div id="wrapper"> 
 
    <div id="a">a</div> 
 
    <div id="b">b</div> 
 
    <div id="c">c</div> 
 
    <div id="d">d</div> 
 
</div>

Codepen Demo

+1

यह वही है जो मैं खोज रहा था। धन्यवाद! – MarcS

0

उपयोग केवल flexbox जब यह आवश्यक है: डेस्कटॉप संस्करण पर:

* { box-sizing: border-box; } 
 
body { margin: 0; } 
 
#a { background: tomato; } 
 
#b { background: forestgreen; } 
 
#c { background: dodgerblue; } 
 
#d { background: orange; } 
 

 
#wrapper { 
 
    overflow: hidden; 
 
    position: relative; 
 
} 
 
#wrapper > div { 
 
    float: left; 
 
    width: 50%; 
 
    margin-left: 50%; 
 
    padding: 5px; 
 
} 
 
#wrapper > #a { 
 
    position: absolute; 
 
    height: 100%; 
 
    margin-left: 0; 
 
} 
 
@media all and (min-width: 768px) { 
 
    #wrapper { 
 
     display: flex; 
 
    } 
 
    #wrapper > div { 
 
     margin-left: 0; 
 
    } 
 
    #wrapper > #a { 
 
     position: relative; 
 
     height: auto; 
 
}
<div id="wrapper"> 
 
    <div id="a">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl.</div> 
 
    <div id="b">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh.</div> 
 
    <div id="c">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius.</div> 
 
    <div id="d">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper.</div> 
 
</div>

+0

से ऊपर वर्णित टेबल-जैसे लेआउट को कैसे प्राप्त किया जाए, यह सुनिश्चित नहीं है कि आपका उत्तर पूर्ण स्क्रीन डेस्कटॉप पर एक दूसरे से अलग divs के लिए खाता है। – Matt

+0

ओपी पहले ही डेस्कटॉप संस्करण कर चुका है, क्या वह मोबाइल समाधान मांग नहीं रहा है? – zessx

+0

यह # ए के लिए निश्चित आठ पर निर्भर करता है। बी, सी और डी में डेटा कुछ हद तक लचीला है इसलिए ऊंचाई भिन्न हो सकती है। – MarcS

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