क्या आप तालिकाओं का उपयोग किए बिना इस HTML लेआउट को कर सकते हैं?


102

ठीक है, मुझे एक या दो हफ्ते पहले एक साधारण लेआउट की समस्या थी। पृष्ठ के कुछ हिस्सों को शीर्ष लेख की आवश्यकता होती है:

+---------------------------------------------------------+
| Title                                            Button |
+---------------------------------------------------------+

बहुत साधारण सामान। बात यह है कि वेब की दुनिया में थिंग्स से नफरत की गई है, जो मुझे याद दिलाया गया था जब मैंने पूछा था कि तालिकाओं के बजाय एचटीएमएल रूपों के लिए परिभाषा सूचियों (डीएल, डीडी, डीटी) का उपयोग क्यों करें? अब टेबल बनाम div / CSS के सामान्य विषय पर पहले चर्चा की जा चुकी है, उदाहरण के लिए:

तो यह लेआउट के लिए सीएसएस बनाम तालिकाओं के बारे में एक सामान्य चर्चा करने का इरादा नहीं है। यह केवल एक समस्या का समाधान है। मैंने CSS का उपयोग करते हुए उपरोक्त विभिन्न समाधानों की कोशिश की:

  • बटन के लिए फ्लोट दाईं ओर या बटन वाले डिव;
  • बटन के लिए स्थिति सापेक्ष; तथा
  • स्थिति सापेक्ष + निरपेक्ष।

इनमें से कोई भी समाधान विभिन्न कारणों से संतोषजनक नहीं था। उदाहरण के लिए सापेक्ष स्थिति एक जेड-इंडेक्स समस्या में हुई, जहां मेरा ड्रॉपडाउन मेनू सामग्री के तहत दिखाई दिया।

इसलिए मैंने वापस जाना समाप्त कर दिया:

<style type="text/css">
.group-header { background-color: yellow; width: 100%; }
.group-header td { padding: 8px; }
.group-title { text-align: left; font-weight: bold; }
.group-buttons { text-align: right; }
</style>
<table class="group-header">
<tr>
  <td class="group-title">Title</td>
  <td class="group-buttons"><input type="button" name="Button"></td>
</tr>
</table>

और यह पूरी तरह से काम करता है। यह सरल है, पिछड़े कॉम्पिटिबाइल के रूप में यह हो जाता है (कि शायद IE5 पर भी काम करेंगे) और यह सिर्फ काम करता है। पोजिशनिंग या फ्लोट्स के बारे में कोई गड़बड़ नहीं।

तो क्या कोई बिना तालिकाओं के बराबर कर सकता है?

आवश्यकताएं हैं:

  • पीछे की ओर संगत: FF2 और IE6 के लिए;
  • यथोचित संगत: विभिन्न ब्राउज़रों में;
  • ऊर्ध्वाधर रूप से केंद्रित: बटन और शीर्षक अलग-अलग ऊंचाइयों के हैं; तथा
  • लचीला: स्थिति (गद्दी और / या मार्जिन) और स्टाइल पर यथोचित सटीक नियंत्रण की अनुमति देता है।

एक साइड नोट पर, मुझे आज के कुछ दिलचस्प लेख मिले:

संपादित करें: मुझे फ्लोट मुद्दे पर विस्तार से बताएं। इस प्रकार के कार्य:

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; overflow: hidden; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-title { float: left; padding: 8px; }
      .group-buttons { float: right; padding: 8px; }
    </style>
  </head>
  <body>
    <div class="group-header">
      <div class="group-title">This is my title</div>
      <div class="group-buttons"><input type="button" value="Collapse"></div>
    </div>
    <div class="group-content">
      <p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
      <p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
      <p>On a side note, I came across a couple of interesting articles today:</p>
    </div>
  </body>
</html>

भाग के लिए चींटी पी के लिए धन्यवाद overflow: hidden(अभी भी नहीं मिलता है, हालांकि)। यहीं पर समस्या आती है। कहो कि मैं शीर्षक और बटन को लंबवत केंद्रित करना चाहता हूं। यह समस्याग्रस्त है क्योंकि तत्व अलग-अलग ऊंचाई के हैं। इसकी तुलना करें:

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; overflow: hidden; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-header td { vertical-align: middle; }
      .group-title { padding: 8px; }
      .group-buttons { text-align: right; }
    </style>
  </head>
  <body>
    <table class="group-header">
    <tr>
      <td class="group-title">This is my title</td>
      <td class="group-buttons"><input type="button" value="Collapse"></td>
    </tr>
    </table>
    <div class="group-content">
      <p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
      <p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
      <p>On a side note, I came across a couple of interesting articles today:</p>
    </div>
  </body>
</html>

जो पूरी तरह से काम करता है।


11
ठीक है कि समझ में आता है "मुझे विम के लिए किस रंग का उपयोग करना चाहिए?" उत्कीर्ण हो जाता है, मेरी विशिष्ट सीएसएस लेआउट की समस्या कम हो जाती है।
क्लेटस 7


आप किसी भी मामले में टेबल के बिना जो चाहें कर सकते हैं। इसके अलावा नर्क में @SBB ने 2 साल पुराना सवाल क्यों उछाला? DOH +
गतिशील

3
@ हां123: ठीक है, वाक्य रचना हाइलाइटिंग गलत थी ...
सैमब

जवाबों:


50

काम जल्दी और सही तरीके से करने के लिए जो उपकरण आपके पास उपलब्ध हैं, उनका उपयोग करने में कुछ भी गलत नहीं है।

इस मामले में एक तालिका ने पूरी तरह से काम किया।

मैंने व्यक्तिगत रूप से इसके लिए एक तालिका का उपयोग किया होगा।

मुझे लगता है कि नेस्टेड टेबल से बचा जाना चाहिए, चीजें गड़बड़ हो सकती हैं।


21
सिवाय इसके कि जब आप सारणीबद्ध डेटा के बजाय प्रेजेंटेशनल लेआउट के लिए एक टेबल का उपयोग कर रहे हों, क्योंकि यह पहली बार में आसान है, जिस स्थिति में आप एक अंधेरे और खतरनाक रास्ते पर चल रहे हैं।
वन क्रेयॉन

9
यहां तक ​​कि अमेज़ॅन कुछ मामलों में तालिकाओं का उपयोग करता है। और stackoverflow.com भी करता है। जब वे वास्तव में अच्छी तरह से काम करते हैं तो मैं सभी सीएसएस समाधान के लिए हूं
नोसरेडना

11
न तो अमेज़ॅन, अब स्टैकओवरफ़्लो वेब डिज़ाइन के शिखर हैं।
बॉबी जैक

31
वे नहीं हो सकते हैं, लेकिन वे समाधान काम कर रहे हैं जो हजारों उपयोगकर्ताओं की सेवा करते हैं।
17 की 26

22
यह एंटी-टेबल मेमे सिर्फ सादा पुराना बेवकूफ है। लचीली बाधाओं-आधारित लॉउट के लिए केवल 2-आयामी लेआउट प्रबंधक तालिका है; और क्या यह सिर्फ एक जटिल एक है (कर्नल / रोस्पैन के असंख्य के साथ), या नेस्टेड लोगों को थोड़ा फर्क पड़ता है। लेकिन वास्तविकता और तथ्य हमेशा अच्छे हथियारों के खिलाफ पर्याप्त हथियार नहीं हैं जो ऐसा लगता है।
स्टैक्मैन मैन 3'09

28

बस बाएं और दाएं फ्लोट करें और दोनों को खाली करने के लिए सेट करें और आप कर रहे हैं। तालिकाओं की जरूरत नहीं।

संपादित करें: मुझे पता है कि मुझे इसके लिए बहुत सारे बदलाव मिले, और मुझे विश्वास था कि मैं सही था। लेकिन ऐसे मामले हैं जहां आपको केवल तालिकाओं की आवश्यकता है। आप सीएसएस के साथ सब कुछ करने की कोशिश कर सकते हैं और यह आधुनिक ब्राउज़रों में काम करेगा, लेकिन यदि आप पुराने लोगों का समर्थन करना चाहते हैं ... तो खुद को दोहराना नहीं, यहां संबंधित स्टैक ओवरफ्लो थ्रेड और मेरे ब्लॉग पर शेख़ी

Edit2: चूंकि पुराने ब्राउज़र अब दिलचस्प नहीं हैं, इसलिए मैं नए प्रोजेक्ट्स के लिए ट्विटर बूटस्ट्रैप का उपयोग कर रहा हूं। यह अधिकांश लेआउट आवश्यकताओं के लिए बहुत अच्छा है और सीएसएस का उपयोग करता है।


2
ऊर्ध्वाधर केंद्र संभाल नहीं करता है, इसलिए -1।
समब

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

1
मुझे लगता है कि आप शीर्षक की लाइन-ऊँचाई को बटन की ऊँचाई के समान सेट करके ऊर्ध्वाधर केंद्र को हल कर सकते हैं।
igors

1
@igors, +1, आप सही कह रहे हैं। ध्यान रहे कि यह प्रश्न 2009 का है;)
मिलान बाबूसकोव

17

यह एक तरह का ट्रिक प्रश्न है: जब तक आप प्राप्त नहीं करते तब तक यह बहुत सरल लगता है

कहते हैं कि मैं शीर्षक और बटन को लंबवत केंद्रित करना चाहता हूं।

मैं रिकॉर्ड के लिए बताना चाहता हूं कि हां, सीएसएस में वर्टिकल सेंटरिंग मुश्किल है। जब लोग पोस्ट करते हैं, और यह एसओ पर अंतहीन लगता है, तो "क्या आप सीएसएस में एक्स कर सकते हैं" जवाब लगभग हमेशा "हां" है और उनका व्हाट्सएप अनुचित लगता है। इस मामले में, हाँ, कि एक विशेष बात कठिन है।

किसी को बस नीचे पूरे प्रश्न को संपादित करना चाहिए "सीएसएस में लंबवत केंद्रित समस्या है?"।


11
यह "टेबल हैटर्स" तर्क के साथ मेरी समस्या है: सीएसएस सब कुछ कर सकता है टेबल ... कुछ सरल, सामान्य और उचित मामलों को छोड़कर (ऊर्ध्वाधर केंद्र की तरह)। सीएसएस सिर्फ एक चुनावी वादे की तरह लगता है जो खराब हो गया है।
क्लेटस

4
मेरा कहना था कि वर्टिकल सेंटरिंग सिर्फ एक चीज के बारे में है जो वास्तव में कठिन है।
अम्ब्रोसेचपेल

3
सीएसएस तालिकाओं को बदलने के लिए नहीं है; यह सिर्फ तालिकाओं के बिना आम लेआउट समस्याओं के अधिकांश को हल करने की अनुमति देने के लिए है। यदि कोई तालिका काम करती है, तो एक तालिका का उपयोग करें, जैसे आप एक स्लेज हथौड़ा के बजाय खींचने के लिए एक पेन का उपयोग करेंगे।
आरोन दिगुल्ला

16

फ्लोट शीर्षक बाईं ओर, फ्लोट बटन दाईं ओर, (यहां वह हिस्सा जो मुझे हाल ही में कभी नहीं पता था) - उन दोनों का कंटेनर बनाएं {overflow:hidden}

वैसे भी z- इंडेक्स समस्या से बचना चाहिए। यदि यह काम नहीं करता है, और आपको वास्तव में IE5 समर्थन की आवश्यकता है, तो आगे बढ़ें और तालिका का उपयोग करें।


+1 वाह, अतिप्रवाह के साथ क्या छिपा है? इससे फर्क पड़ता है। हालांकि विचार नहीं।
क्लेटस 7

सच कहूँ तो, मैं यह नहीं मिलता है, और कल्पना में इसका कोई उल्लेख नहीं मिल सका। किसी ने मुझे बताया कि यह "सही" तरीका है, हालांकि मैंने एक और प्रश्न का उत्तर दिया, जिसमें उन्होंने सुझाव दिया कि वे इसे करने के लिए एक साफ़ तत्व का उपयोग करते हैं। मुझे एक अच्छा विचार लगता है।

फ़्लोट किए गए तत्वों को अभी भी ठीक से प्रवाह करने के लिए निम्नलिखित सामग्री को साफ करने की आवश्यकता है। छिपा हुआ सैलाब; केवल कंटेनर की ऊँचाई को संबोधित करता है।
जैक द ह्यूमन

2
"अतिप्रवाह: छिपा हुआ" बीओटीएच ऊंचाई 'विस्तार' और समाशोधन के लिए एक हैक है। निम्नलिखित तत्व उस बॉक्स को साफ कर देंगे (ब्राउज़र में जो कि कल्पना के उस हिस्से को सही ढंग से लागू करते हैं, कम से कम)।
बॉबी जैक

1
-1 ऊर्ध्वाधर केंद्र से निपटने के लिए नहीं, लेकिन +2 के लिए overflow:hidden
समब

7

शुद्ध सीएसएस में, एक काम का जवाब एक दिन सिर्फ उपयोग करने के लिए होगा "display:table-cell"। दुर्भाग्य से यह वर्तमान ए-ग्रेड ब्राउज़रों में काम नहीं करता है, इसलिए यदि आप वैसे ही परिणाम प्राप्त करना चाहते हैं तो आप एक तालिका का उपयोग कर सकते हैं। कम से कम आपको यकीन होगा कि यह अतीत में काफी दूर तक काम करता है।

ईमानदारी से, बस एक तालिका का उपयोग करें यदि यह आसान है। यह दुख नहीं होगा।

यदि तालिका तत्व का शब्दार्थ और उपयोग वास्तव में आपके लिए मायने रखता है, तो आपकी तालिका को गैर-शब्दार्थ बनाने के लिए एक काम का मसौदा तैयार करना है:

http://www.w3.org/TR/wai-aria/#presentation

मुझे लगता है कि इसके लिए एक्सएचटीएमएल 1.1 से परे एक विशेष डीटीडी की आवश्यकता है, जो कि पूरी text/htmlबनाम application/xmlबहस को हिला देगा, तो चलो वहां नहीं जाएं।

तो, अपने अनसुलझे सीएसएस समस्या पर ...

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

यदि आप निम्नलिखित बाधाओं के भीतर फिट हो सकते हैं, तो एक अपेक्षाकृत सरल तरीका है:

  • दो तत्वों की ऊंचाई तय की जाती है।
  • कंटेनर की ऊंचाई तय हो गई है।
  • ओवरलैप नहीं करने के लिए तत्व पर्याप्त संकीर्ण होंगे (या एक निश्चित चौड़ाई पर सेट किया जा सकता है)।

फिर आप नकारात्मक मार्जिन के साथ पूर्ण स्थिति का उपयोग कर सकते हैं:

.group-header { height: 50px; position: relative; }
.group-title, .group-buttons { position: absolute; top: 50%; }
# Assuming the height of .group-title is a known 34px
.group-title { left: 0; margin-top: -17px; }
# Assuming the height of .group-buttons is a known 38px
.group-buttons { right: 0; margin-top: -19px; }

लेकिन यह ज्यादातर स्थितियों में व्यर्थ है ... यदि आप पहले से ही तत्वों की ऊंचाई जानते हैं, तो आप बस फ़्लोट्स का उपयोग कर सकते हैं और उन्हें आवश्यकतानुसार स्थिति में लाने के लिए पर्याप्त मार्जिन जोड़ सकते हैं।

यहाँ एक और तरीका है जो इनलाइन ब्लॉक के रूप में दो कॉलमों को लंबवत रूप से संरेखित करने के लिए टेक्स्ट बेसलाइन का उपयोग करता है। यहां दोष यह है कि आपको कॉलम के लिए तय चौड़ाई को बाएं किनारे से चौड़ाई भरने की आवश्यकता है। क्योंकि हमें तत्वों को एक टेक्स्ट बेसलाइन पर बंद रखने की आवश्यकता है, हम केवल फ्लोट का उपयोग नहीं कर सकते हैं: दूसरे कॉलम के लिए सही। (इसके बजाय, हमें पहले स्तंभ को चौड़ा करना होगा ताकि उसे धक्का दिया जा सके।)

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; }
      .valign { display: inline-block; vertical-align: middle; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-title { padding: 8px; width: 384px; }
      .group-buttons { padding: 8px; width: 84px; text-align: right; }
    </style>
    <!--[if lt IE 8]>
    <style type="text/css">
      .valign { display: inline; margin-top: -2px; padding-top: 1px; }
    </style>
    <![endif]-->
  </head>
  <body>
    <div class="group-header">
      <div class="valign">
        <div class="group-title">This is my title.</div>
      </div><!-- avoid whitespace between these! --><div class="valign">
        <div class="group-buttons"><input type="button" value="Collapse"></div>
      </div>
    </div>
    <div class="group-content">
      <p>And it works perfectly, but mind the hacks.</p>
    </div>
  </body>
</html>

HTML: हम प्रत्येक कॉलम के चारों ओर .valign रैपर जोड़ते हैं। (उन्हें और अधिक "शब्दार्थ" नाम दें अगर यह आपको अधिक खुश करता है।) ये बिना व्हाट्सएप के बीच में रखने की जरूरत है अन्यथा पाठ रिक्त स्थान उन्हें अलग कर देगा। (मुझे पता है कि यह बेकार है, लेकिन यही आपको मार्कअप के साथ "शुद्ध" होने और इसे प्रस्तुति परत से अलग करने के लिए मिलता है! हा!)

सीएसएस: हम vertical-align:middleसमूह-हेडर तत्व के टेक्स्ट बेसलाइन को ब्लॉक को लाइन अप करने के लिए उपयोग करते हैं । प्रत्येक ब्लॉक की अलग-अलग ऊंचाइयां लंबवत केंद्रित रहेंगी और उनके कंटेनर की ऊंचाई को धक्का देगी। चौड़ाई फिट करने के लिए तत्वों की चौड़ाई की गणना करने की आवश्यकता है। यहां, वे 400 और 100 हैं, उनकी क्षैतिज पैडिंग माइनस है।

आईई फिक्स: इंटरनेट एक्सप्लोरर केवल मूल-इनलाइन तत्वों (जैसे स्पैन, डिव नहीं) के लिए इनलाइन-ब्लॉक प्रदर्शित करता है। लेकिन, अगर हम div हैलैटआउट देते हैं और फिर इसे इनलाइन प्रदर्शित करते हैं, तो यह इनलाइन-ब्लॉक की तरह ही व्यवहार करेगा। मार्जिन समायोजन शीर्ष पर 1px अंतर को ठीक करने के लिए है (देखने के लिए .group-title में पृष्ठभूमि रंग जोड़ने का प्रयास करें)।


1
हम्म डिस्प्ले: टेबल-एक्स टैग्स को टेबल का उपयोग करके लेआउट करने का उद्देश्य लगता है, केवल टेबल टैग का उपयोग किए बिना?
डेन्यूबियन नाविक

3

मैं इस उदाहरण में तालिका का उपयोग न करने की सलाह दूंगा, क्योंकि यह सारणीबद्ध डेटा नहीं है; यह शुद्ध रूप से प्रस्तुत करना है कि बटन दाईं ओर स्थित है। यह वही है जो मैं आपकी तालिका संरचना (जहाँ आप अपनी साइट के पदानुक्रम में हैं, सूट करने के लिए एक अलग H # में परिवर्तन) की नकल करेंगे:

<style>
  .group-header { background: yellow; zoom: 1; padding: 8px; }
  .group-header:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
  /* set width appropriately to allow room for button */
  .group-header h3 { float: left; width: 300px; }
  /* set line-height or margins to align with h3 baseline or middle */
  .group-header input { float: right; }
</style>

<div class="group-header">
  <h3>This is my title</h3>
  <input type="button" value="Collapse"/>
</div>

यदि आप मध्य में सही वर्टिकल अलाइनमेंट चाहते हैं (यानी, यदि टेक्स्ट रैप करता है तो बटन अभी भी टेक्स्ट की दोनों पंक्तियों के संबंध में मध्य-संरेखित है), तो आपको या तो टेबल करने की जरूरत है या position: absoluteमार्जिन के साथ कुछ करना होगा । आप position: relativeअपने ड्रॉप-डाउन मेनू में जोड़ सकते हैं (या इसके माता-पिता की संभावना है) इसे बटनों के समान क्रमबद्ध स्तर में खींचने के लिए, अगर यह उस पर आता है, तो आप इसे जेड-इंडेक्स के साथ उनके ऊपर टकरा सकते हैं।

ध्यान दें कि आपको width: 100%div पर होने की आवश्यकता नहीं है क्योंकि यह एक ब्लॉक-स्तरीय तत्व है, और zoom: 1div को ऐसा व्यवहार करता है जैसे IE में क्लियरफिक्स है (अन्य ब्राउज़र वास्तविक क्लीयरफ़िक्स उठाते हैं)। यदि आप चीजों को थोड़ा और विशेष रूप से लक्षित कर रहे हैं, तो आपको उन सभी बाहरी वर्गों की भी आवश्यकता नहीं है, हालांकि स्थिति को आसान बनाने के लिए आपको बटन पर एक आवरण div या स्पैन की आवश्यकता हो सकती है।


आपका समाधान IE6 पर काम नहीं करता है, क्योंकि इसके कारण: छद्म वर्ग के बाद।
सेबेस्टियन होइट्ज

1
यह IE 6 में काम करता है, के लिए धन्यवाद zoom: 1में .group-headerहै, जो hasLayout से चलाता है और IE 6 कारण एक ही व्यवहार करने के लिए के रूप में अगर यह था: तत्व सक्रिय हैं।
एक क्रेयॉन

2

एक div में एक डबल फ्लोट करें और क्लीयरफिक्स का उपयोग करें। http://www.webtoolkit.info/css-clearfix.html क्या आपके पास कोई पैडिंग / मार्जिन प्रतिबंध है?

<div class="clearfix">
   <div style="float:left">Title</div>
   <input type="button" value="Button" style="float:right" />
</div>

मुझे एक ऊर्ध्वाधर केंद्र की आवश्यकता है (और थोड़ा अतिरिक्त पैडिंग)। मुझे लगता है कि मैंने स्पष्ट किया कि आपके पोस्ट के बाद हालांकि।
cletus


1

मैंने फ्लेक्सबॉक्स का उपयोग करना चुना है, क्योंकि इसने चीजों को इतना आसान बना दिया है।

आपको मूल रूप से उन बच्चों के माता-पिता के पास जाने की जरूरत है जिन्हें आप संरेखित करना चाहते हैं और जोड़ना चाहते हैं display:box(बेशक उपसर्ग)। उन्हें पक्षों में बैठाने के लिए, औचित्य-सामग्री का उपयोग करें । अंतरिक्ष के बीच सही बात है जब आपके पास ऐसे तत्व होते हैं जिन्हें अंत में संरेखित करने की आवश्यकता होती है, जैसे इस मामले में (लिंक देखें) ...

फिर ऊर्ध्वाधर संरेखित मुद्दा। क्योंकि मैंने दो तत्वों का जनक बनाया है, आप एक Flexbox को संरेखित करना चाहते हैं। अब इसका उपयोग करना आसान है align-items: center

फिर मैंने उन शैलियों को जोड़ा जो आप पहले चाहते थे, शीर्षक में फ्लोट को हटा दिया और हेडर में बटन और एक पैडिंग जोड़ा:

.group-header, .group-content {
    width: 500px;
    margin: 0 auto;
}
.group-header{
    border: 1px solid red;
    background: yellow;
    overflow: hidden;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-justify-content: space-between;
    -moz-justify-content: space-between;
    -ms-justify-content: space-between;
    -o-justify-content: space-between;
    justify-content: space-between;
    webkit-align-items: center;
    -moz-align-items: center;
    -ms-align-items: center;
    -o-align-items: center;
    align-items: center;
    padding: 8px 0;
}
.group-content{
    border: 1px solid black;
    background: #DDD;
}
.group-title {
    padding-left: 8px;
}
.group-buttons {
    padding-right: 8px
}

डेमो देखें


1

मैं मानता हूं कि किसी को वास्तव में केवल सारणीबद्ध डेटा के लिए तालिकाओं का उपयोग करना चाहिए, साधारण कारण के लिए जो तालिकाएं तब तक नहीं दिखाती हैं जब तक वे लोडिंग समाप्त नहीं करते हैं (कोई फर्क नहीं पड़ता कि यह कितनी तेजी से है, यह धीमी है कि सीएसएस विधि)। हालाँकि, मुझे लगता है कि यह सबसे सरल और सबसे सुंदर समाधान है:

<html>
    <head>
        <title>stack header</title>
        <style type="text/css">
            #stackheader {
                background-color: #666;
                color: #FFF;
                width: 410px;
                height: 50px;
            }
            #title {
                color: #FFF;
                float: left;
                padding: 15px 0 0 15px;
            }
            #button {
                color: #FFF;
                float: right;
                padding: 15px 15px 0 0;
            }
        </style>
    </head>

    <body>
        <div id="stackheader">
        <div id="title">Title</div>
        <div id="button">Button</div>
        </div>
    </body>
</html>

बटन फ़ंक्शन और किसी भी अतिरिक्त विवरण को इस मूल रूप से स्टाइल किया जा सकता है। बुरे टैग के लिए क्षमा याचना।

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