2009-06-06 4 views
4

У меня есть форма, которая содержит несколько флажков, расположенных по вертикали в div. Я хочу удалить пространство между каждым флажком. Но я не могу найти решения.Удалить промежуток между флажками

<div style="height:100px;width:25px;float:left;"> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
</div> 

У кого-нибудь есть решение этой проблемы?

+0

Это * может * быть довольно сложный вопрос из-за различий между веб-браузерами, - говорю я мог, потому что вы предоставили достаточно мало информации о вашем контексте, скажем, : * какой браузер вы используете? * какая декламация doctype вы использовали? * ... - это отображение страницы в режиме quirks? * Вы стремитесь к кросс-браузерной совместимости? – conny

ответ

7

Я нашел решение:

<input type="checkbox" style="margin: 0; padding 0; height:13px"/> 

Для IE, необходимо установить высоту, чтобы удалить пространство между флажками.

+0

работает ли это над вашими браузерами? Кроме того, обратите внимание, что 13 будет лучше, если это 13px –

+0

Да, он работает в моих браузерах (IE7, FF3 и Chrome). Я знаю, что «13px» лучше. Благодарю. – Billy

5

После разговора с Полом O'B, в CSS гуру, это хорошее решение, которое работает в IE 6, 7, 8, FF 3 и Chrome:

<style type="text/css">  
    #aDiv input { 
     margin: 0; 
     padding: 0; 
     display:block; 
     height:12px; 
     overflow:hidden 
    } 
</style> 

<div id="aDiv" style="width:25px"> 
    <input type="checkbox"> 
    <input type="checkbox"> 
    <input type="checkbox"> 
    <input type="checkbox"> 
    <input type="checkbox"> 
    <input type="checkbox"> 
</div> 

Это использование доктайп из HTML 4.01 строгий. если вы хотите бок о бок для флажков, используйте высоту 13 пикселей.

Селектор атрибутов не будет работать на IE 6, поэтому его вынимают здесь. Если вам нужно добавить другой элемент ввода, который не является флажком, используйте вместо него класс.

+0

Это не работает в Internet Explorer. – RichieHindle

+0

Да, Internet Explorer не работает. Поведение IE всегда особенное. – Billy

+0

решение смена ... смотрите выше. –

2

Возможно, новые строки между <input> тегами интерпретируются как любые другие пробелы, поэтому вы видите пробелы между ними. Я думаю, что правила CSS не имеют к этому никакого отношения.


Edit: Дальнейшее расследование приводит меня к выводу, что пробелы будут воздействовать только на горизонтальные пробелы. Что касается вертикального пространства, я считаю, что невозможно гарантировать, что флажки будут склеиваться без использования пользовательской графики - веб-браузеры не обязаны делать их идеально квадратными по стандартам, поэтому даже если вы найдете способ сделать их ограничивающие коробки касаться друг друга , эффект может быть неудовлетворительным.

Чтобы сделать свои ограничивающие боксы максимально возможными, установите line-height атрибут для div элемент. С оригинальными спрайтами это выглядит не так, как вы хотели, в любом браузере, который я тестировал.

Использование пользовательской графики некоторой высоты и идентичных line-height должно сделать трюк.


Другой редактировать: Некоторые люди здесь предложили использовать фиксированную высоту входного элемента 13px. Запомнить! Это Неверный. Вы не можете полагаться на факт, что некоторые браузеры имеют встроенный флажок справки этой высоты.

0

Просто установите:

<input type="checkbox" style="margin: 0"> 

Но он не будет работать в IE.

Я думаю, что разные браузеры визуализируют элементы html по-разному. Таким образом, становится трудно полностью уловить ситуацию.

Однако я нашел одно решение, но на этот раз нам нужно применить трюк к элементу тела.

CSS-будет выглядеть следующим образом:

<style type="text/css"> 
    input.mycheckbox { 
     height: 13px; 
     width: 13px 
    } 

    body { 
     font-size: 40%; 
    } 
</style> 

И содержимое внутри тега тела является:

Надеется, что это помогает.

0

Это работает для меня:

<style type="text/css"> 
body,html,input {padding:0;margin:0;} 
</style> 
<div style="height:100px;width:25px;float:left;"> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
</div> 

Edit: Это Valid CSS сейчас :)

1

Существует белое пространство между каждым флажком. Единственный способ, чтобы удалить его, чтобы float их:

<style type="text/css"> 
    .myCheckBoxDiv > input[type="checkbox"] 
    { 
     float: left; 
    } 
    .myCheckBoxDiv:after 
    { 
     clear: both; 
     content: ""; 
     display: block; 
    } 
</style> 

<div class="myCheckBoxDiv"> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
    <input type="checkbox"/> 
</div> 
Смежные вопросы