2012-07-16 22 views
8

मैं HTML और जावास्क्रिप्ट में एक कस्टम कैलेंडर बनाने की कोशिश कर रहा हूं जहां आप एक दिन से दूसरे दिन कार्यों को खींच और छोड़ सकते हैं। मैं पहले कॉलम और अंतिम दो स्तंभों को निश्चित चौड़ाई के रूप में रखना चाहता हूं और शेष कॉलम (सोमवार से शुक्रवार) तरल पदार्थ रखना चाहते हैं ताकि तालिका हमेशा इसके 100% माता-पिता को भर दे।एचटीएमएल टेबल - 100% चौड़ाई तालिका, निश्चित चौड़ाई और यूनिफ़ॉर्म तरल कॉलम का संयोजन

मेरी समस्या यह है कि तरल पदार्थ टीडी स्वचालित रूप से आकार में कितना सामग्री है, इसका अर्थ यह है कि जब मैं एक दिन से दूसरे कार्य को कॉल करता हूं तो कॉलम चौड़ाई का आकार बदल जाता है। मैं सोमवार से शुक्रवार को सामग्री के बावजूद बिल्कुल वही आकार होना चाहता हूं और पाठ-ओवरफ्लो सेट किए बिना: छुपा; (जैसा कि कार्यों को हमेशा दिखाई देने की आवश्यकता होती है)

यानी मैं चाहता हूं कि ग्रे कॉलम निश्चित चौड़ाई और लाल कॉलम तरल पदार्थ हों, लेकिन उनमें से किसी भी सामग्री के बावजूद प्रत्येक-दूसरे के साथ वर्दी।

संपादित करें: मैं खींचें के लिए jQuery का उपयोग कर रहा और ड्रॉप कार्यक्षमता तो एक जावास्क्रिप्ट समाधान भी ठीक है (हालांकि नहीं बेहतर) होगा।

JSFiddle Live example

HTML:

<table> 
    <tr> 
    <th class="row_header">Row Header</th> 
    <th class="fluid">Mon</th> 
    <th class="fluid">Tue</th> 
    <th class="fluid">Wed</th> 
    <th class="fluid">Thurs</th> 
    <th class="fluid">Fri</th> 
    <th class="weekend">Sat</th> 
    <th class="weekend">Sun</th> 
    </tr> 
    <tr> 
    <td>Before Lunch</td> 
    <td>This col will be wider than the others because it has lots of content...</td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td>But I would really like them to always be the same size!</td> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

सीएसएस:

table { 
     width: 100%; 
    }  

    td, th { 
     border:1px solid black; 
    } 

    th { 
     font-weight:bold;    
     background:red; 
    } 

    .row_header { 
     width:50px; 
     background:#ccc; 
    } 

    .weekend { 
     width:100px; 
     background:#ccc; 
    } 

    .fluid { 
     ??? 
    } 
+1

बहुत अच्छा प्रश्न है। मुझे यकीन नहीं है कि यह शुद्ध सीएसएस के साथ किया जा सकता है। आपको तालिका की कुल चौड़ाई की गणना करने के लिए जावास्क्रिप्ट का उपयोग करने की आवश्यकता होगी और तदनुसार शैलियों को लागू करें। –

उत्तर

2

jQuery का उपयोग करना (शायद नियमित जे एस के साथ भी किया जा सकता है, लेकिन मैं इसे नौकरियों के इस प्रकार के लिए पसंद करते हैं):

(नोट: मैं मेज एक आईडी दे दी है, तो यह चयन करने के लिए आसान होगा , संवारता का एक सा के साथ बिना किया जा सकता)

$(function() { 
     var $my_table = $("#my_table") 
      ,current_width = $my_table.width() 
      ,fluid_columns = $("table .fluid") 
      ,spread_width = (current_width - 150)/fluid_columns.length; 

     fluid_columns.width(spread_width); 

     $(window).on("resize", function() { 
      current_width = $my_table.width(); 
      spread_width = (current_width - 150)/fluid_columns.length; 
      fluid_columns.width(spread_width); 
     }) 
    }); 
+0

हाँ, यह हमें बहुत करीब ले जाता है। दुर्भाग्यवश बहुत छोटे संकल्पों पर यह अभी भी टूट गया है। शायद मुझे यह समझने की ज़रूरत है कि ब्राउज़र मेरी मदद करने की कोशिश कर रहा है और चरम उदाहरण से बचने के लिए तालिका अनुभाग पर मध्य चौड़ाई लगा रहा है। – Danny

+0

हां, एक न्यूनतम चौड़ाई आपके लिए काम करेगी। –

1

आप संभवतः कर सका:

.fluid { 
    width:10%; 
} 
+0

यह मेरे लिए काम नहीं करता प्रतीत होता है। .row_header और .weekend पर चौड़ाई को अनदेखा किया जा रहा है और छोटे संकल्पों पर यह अभी भी असमान रूप से कॉलम की चौड़ाई [नमूना यहां] (http://i.imgur.com/gVZvV।पीएनजी) – Danny

+0

क्या आप मीडिया प्रश्न कर सकते हैं, फिर प्रतिशत को उचित रूप से बदल सकते हैं? – ColWhi

+0

यह कैसे मदद करेगा? क्या आप कृपया मुझे एक उदाहरण दे सकते हैं? – Danny

10

डैनी,

मुझे लगता है कि यह आप क्या देख रहे है।

यहाँ फिडल http://jsfiddle.net/T6YNK/22/

क्रोम में जांच की गई।

कोड

   <table> 
     <tr> 
     <th class="row_header">Row Header</th> 
     <th class="fluid">Mon</th> 
     <th class="fluid">Tue</th> 
     <th class="fluid">Wed</th> 
     <th class="fluid">Thurs</th> 
     <th class="fluid">Fri</th> 
     <th class="weekend">Sat</th> 
     <th class="weekend">Sun</th> 
     </tr> 
     <tr> 
     <td>Before Lunch</td> 
     <td>This col will be wider than the others because it has lots of content...</td> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td>But I would really like them to always be the same size!</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     </tr> 
    </table> 

    <style type="text/css"> 

     table { 
      width: 100%; 
     }   

     td, th { 
      border:1px solid black; 
     } 

     th { 
      font-weight:bold;    
      background:red; 
     } 

     .row_header { 
      width:50px; 
      background:#ccc; 
     } 

     .weekend { 
      width:100px; 
      background:#ccc; 
     } 

     td, 
     th  { 
      overflow:hidden; 
     } 
    .fluid { 

} 
.weekend, 
.row_header{ 
width:50px !important; 

} 

table{ 
    border: 1px solid black; 
    table-layout: fixed; 
    width:100%; 

} 
    </style>​ 
+1

सर्वश्रेष्ठ उत्तर, केवल सीएसएस और कोई jQuery का उपयोग कर। –

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