2013-02-05 23 views
14

के तहत रैपिंग से टेक्स्ट को रोकें। मैं चेकबॉक्स का एक सेट डाल रहा हूं और यदि टेक्स्ट बहुत लंबा है तो मैं चेकबॉक्स के नीचे टेक्स्ट रैपिंग के पुराने पुराने अंक में चल रहा हूं।चेकबॉक्स

मेरे HTML:

<div class="right"> 
    <form id="updateProfile"> 
     <fieldset class="checkboxes"> 
      <p>4. What is your favorite type of vacation?</p> 
      <label><input type="checkbox" name="vacation" value="Ski Trips"> Ski Trips</label> 
      <label><input type="checkbox" name="vacation" value="Beach Visits"> Beach Visits</label> 
      <label><input type="checkbox" name="vacation" value="Cruises"> Cruises</label> 
      <label><input type="checkbox" name="vacation" value="Historical and educational trips"> Historical and educational trips</label> 
      <label><input type="checkbox" name="vacation" value="Yachting"> Yachting</label> 
      <label><input type="checkbox" name="vacation" value="Road Trip"> Road Trip</label> 
      <label><input type="checkbox" name="vacation" value="Spa Weekend"> Spa Weekend</label> 
      <label><input type="checkbox" name="vacation" value="Bed and Breakfast"> Bed and Breakfast</label> 
      <label><input type="checkbox" name="vacation" value="Stay home and relax"> Stay home and relax</label> 
      <label><input type="checkbox" name="vacation" value="Gambling Trips"> Gambling Trips</label> 
      <label><input type="checkbox" name="vacation" value="Volunteer"> Volunteer</label> 
     </fieldset> 
    </form> 
</div> 

मेरे सीएसएस:

div.right{width:580px;} 

form#updateProfile fieldset label{ 
    display: block; 
    margin-bottom: 5px; 
    font-size: 16px; 
    float: left; 
    width: 33%; 
} 

देखें मेरी यहाँ बेला: http://jsfiddle.net/fmpeyton/7WmGr/

बहुत अलग साइटों पर खोज के बाद, मैं एक उचित लगता है नहीं कर पा रहे उपाय। मैं अपने मार्कअप/शैलियों को बदलने के सुझावों के लिए खुला हूं, लेकिन मैं कोड को यथासंभव स्वच्छ और अर्थपूर्ण रखना चाहता हूं।

धन्यवाद!

उत्तर

22

यह काम करने के लिए लगता है:

http://jsfiddle.net/7WmGr/5/

मैं label 18px और चेक बॉक्स -18px के margin-left के margin-left दे दी है।

HTML:

<div class="right"> 
    <form id="updateProfile"> 
     <fieldset class="checkboxes"> 
      <p>4. What is your favorite type of vacation?</p> 
      <label><input type="checkbox" name="vacation" value="Ski Trips"> Ski Trips</label> 
      <label><input type="checkbox" name="vacation" value="Beach Visits"> Beach Visits</label> 
      <label><input type="checkbox" name="vacation" value="Cruises"> Cruises</label> 
      <label><input type="checkbox" name="vacation" value="Historical and educational trips"> Historical and educational trips</label> 
      <label><input type="checkbox" name="vacation" value="Yachting"> Yachting</label> 
      <label><input type="checkbox" name="vacation" value="Road Trip"> Road Trip</label> 
      <label><input type="checkbox" name="vacation" value="Spa Weekend"> Spa Weekend</label> 
      <label><input type="checkbox" name="vacation" value="Bed and Breakfast"> Bed and Breakfast</label> 
      <label><input type="checkbox" name="vacation" value="Stay home and relax"> Stay home and relax</label> 
      <label><input type="checkbox" name="vacation" value="Gambling Trips"> Gambling Trips</label> 
      <label><input type="checkbox" name="vacation" value="Volunteer"> Volunteer</label> 
     </fieldset> 
    </form> 
</div> 

सीएसएस:

div.right{width:598px;} 

form#updateProfile fieldset label{ 
    display: block; 
    margin-bottom: 5px; 
    font-size: 16px; 
    float: left; 
    width: 30%; 
    margin-left:18px; 
} 
form#updateProfile fieldset label input[type='checkbox']{margin-left:-18px;} 

Crome & IE9 में काम करने लगता है।

+1

मुझे इसे 18px के लिए बाईं ओर के बजाय मार्जिन-दाएं बनाना था; यह तब टेक्स्ट को ओवरलैपिंग से रोकता है – ccStars

3

एक विकल्प ऐसा कुछ होगा।

form#updateProfile fieldset label{ 
    display: block; 
    margin-bottom: 5px; 
    font-size: 16px; 
    float: left; 
    width: 30%; 
    padding-left: 3%; 
    position: relative; 
} 

input { 
    position: absolute; 
    left: -5px; 
} 

यहाँ डेमो: http://jsbin.com/opoqon/1/edit

तरह से मैं यह करने के लिए करते हैं अलग है, जो labels साथ inputs लपेटकर नहीं है, बल्कि

<input id="ski-trips" type="checkbox" name="vacation" value="Ski Trips"><label for="ski-trips">Ski Trips</label> 

जो तब आसान स्टाइल के लिए अनुमति देता है की तरह कुछ कर रही ।

यहाँ इस तरह का एक उदाहरण है: http://jsbin.com/otezut/1/edit

लेकिन किसी भी तरह से काम करेगा।

+0

आप मेरे हीरो हैं! मैंने ऐसा करने के अनगिनत तरीकों की कोशिश की है और यह मेरे लिए सबसे अच्छा और सबसे भरोसेमंद काम करता है! धन्यवाद! – mason81

+0

क्या मुझे कुछ याद आ रही है? दूसरी विधि बिल्कुल डरावनी दिखती है - एक लाइन पर चेकबॉक्स, दूसरे पर लेबल, एक लंबा लेबल पूरी तरह से बाकी के प्रवाह को तोड़ देता है; मूल रूप से, सबकुछ जो चेकबॉक्स की सूची के साथ गलत हो सकता है, दूसरा जेएसबीन दर्शाता है। – Martha

+0

@ मार्था यह मानते हुए कि यह दो साल से अधिक पुराना है, इसे निश्चित रूप से जांचना चाहिए। अब इसे देखकर, मैं शायद एक अलग दृष्टिकोण का चयन करूंगा। – gotohales

0

यह एक और विकल्प है। यह अभी तक बहुत आसान है। आप उस भाग को लेते हैं जो लपेट रहा है। <label><input type="checkbox" name="vacation" value="Historical and educational trips"> Historical and educational <span class="antiWrap">trips</span></label> और आप कक्षा के साथ एक अवधि जोड़ते हैं। मैंने क्लास एंटीवाप कहा। फिर आप इसे बाएं मार्जिन जोड़ने के लिए सीएसएस का उपयोग करते हैं। .antiWrap { margin-left: 18px; } यहां आपके कोड का उपयोग कर Myfiddle आधारित है। http://jsfiddle.net/alexhram/7WmGr/3/ मुझे लगता है कि यह आपके लिए क्या चल रहा है? मुझे बताएं।

+0

@mookamafoob ने 'इनपुट' में 'इनपुट' को लेआउट बदल दिया नहीं है क्योंकि 'लेबल' स्क्रीन पर कुछ भी प्रस्तुत नहीं करता है। हालांकि आपको w3schools.com पर उदाहरण के अनुसार 'लेबल' के अंदर इस मामले में केवल विकल्प टेक्स्ट को "ऐतिहासिक और शैक्षणिक यात्राएं" रखनी चाहिए। यह प्रभाव जोड़ने के लिए पर्याप्त है। – Chakotay

+0

सुझाव के लिए धन्यवाद। मैं यह देखने की कोशिश कर रहा हूं कि अतिरिक्त मार्कअप जोड़ने के बिना, सभी मामलों पर लागू होने वाली शैली को लागू करने का कोई तरीका है या नहीं। –

2

मुझे यह पसंद है ...

HTML:

<input type="checkbox" name="vacation" value="Ski Trips"><label>very long label ...</label> 

सीएसएस:

input[type="checkbox"] { 
    position: absolute; 
} 
input[type="checkbox"] ~ label { 
    padding-left:1.4em; 
    display:inline-block; 
} 
0

यहाँ एक है कि इनपुट तत्वों का आकार पर अधिक निर्भर नहीं है।

div {width: 12em;} 
 

 
label { 
 
    display: block; 
 
    white-space: nowrap; 
 
    margin: 10px; 
 
} 
 

 
label input { 
 
    vertical-align: middle; 
 
} 
 

 
label span { 
 
    display: inline-block; 
 
    white-space: normal; 
 
    vertical-align: top; 
 
    position: relative; 
 
    top: 2px; 
 
}
<div> 
 

 
<label><input type="radio"><span>I won't wrap</span></label> 
 
<label><input type="checkbox"><span>I won't wrap</span></label> 
 

 
<label><input type="radio"><span>I am a long label which will wrap</span></label> 
 
<label><input type="checkbox"><span>I am a long label, I will wrap beside the input</span></label> 
 

 
</div>

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