Слишком много места (плавающие div) - PullRequest
0 голосов
/ 08 июля 2011

Я плаваю div и теперь есть пробел.Это мой код:

<style>
ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

ul li {
    display: block;
    float: left;
    border: 1px solid red;
    width: 80px;

}
</style>

<ul>

        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
        <li>Item 4</li>
        <li>Item 5</li>
        <li>Item 6</li>
        <li>Item 7</li>
        <li>Item 8</li>
        <li>Item 9</li>
        <li>Item 10</li>
        <li>Item 11</li>
        <li>Item 12</li>
        <li>Item 13</li>
        <li>Item 14</li>
        <li>Item 15</li>
        <li>Item 16</li>
        <li>Item 17</li>
        <li>Item 18</li>
        <li>Item 19</li>
        <li>Item 20</li>
        <li>Item 21</li>
        <li>Item 22</li>
        <li>Item 23</li>
        <li>Item 24</li>
        <li>Item 25</li>
        <li>Item 26</li>
        <li>Item 27</li>
        <li>Item 28</li>
        <li>Item 29</li>
        <li>Item 30</li>
        <li>Item 31</li>
        <li>Item 32</li>
        <li>Item 33</li>
        <li>Item 34</li>
        <li>Item 35</li>
        <li>Item 36</li>
        <li>Item 37</li>
        <li>Item 38</li>
        <li>Item 39</li>
        <li>Item 40</li>
        <li>Item 41</li>
        <li>Item 42</li>
        <li>Item 43</li>
        <li>Item 44</li>
        <li>Item 45</li>
        <li>Item 46</li>
        <li>Item 47</li>
        <li>Item 48</li>
        <li>Item 49</li>
        <li>Item 50</li>
        <li>Item 51</li>
        <li>Item 52</li>
        <li>Item 53</li>
        <li>Item 54</li>
        <li>Item 55</li>
        <li>Item 56</li>
        <li>Item 57</li>
        <li>Item 58</li>
        <li>Item 59</li>
        <li>Item 60</li>
        <li>Item 61</li>
        <li>Item 62</li>
        <li>Item 63</li>
        <li>Item 64</li>
        <li>Item 65</li>
        <li>Item 66</li>
        <li style="" class="">
    Multiple<br>
    Lines
    </li><li>Item 67</li>
        <li>Item 68</li>
        <li>Item 69</li>
        <li>Item 70</li>
        <li>Item 71</li>
        <li>Item 72</li>
        <li>Item 73</li>
        <li>Item 74</li>
        <li>Item 75</li>
        <li>Item 76</li>
        <li>Item 77</li>
        <li>Item 78</li>
        <li>Item 79</li>
        <li>Item 80</li>
        <li>Item 81</li>
        <li>Item 82</li>
        <li>Item 83</li>
        <li>Item 84</li>
        <li>Item 85</li>
        <li>Item 86</li>
        <li>Item 87</li>
        <li>Item 88</li>
        <li>Item 89</li>
        <li>Item 90</li>
        <li>Item 91</li>
        <li>Item 92</li>
        <li>Item 93</li>
        <li>Item 94</li>
        <li>Item 95</li>
        <li>Item 96</li>
        <li>Item 97</li>
        <li>Item 98</li>
        <li>Item 99</li>
        <li>Item 100</li>
    </ul>

Вы можете видеть разрыв слева от блока «Несколько строк».Как я могу автоматически «заполнить» это место?

С уважением, Кевин

Ответы [ 3 ]

2 голосов
/ 08 июля 2011

Проблема в том, что в многострочных ячейках для границ будут использоваться только 2 пикселя, тогда как в двух ячейках, занимающих одно и то же пространство, будет использоваться 4 пикселя границы.Это создает разрыв в 2 пикселя.

Одним из решений является использование outline вместо border.Свойство outline не занимает место на странице;он просто рисует границу вокруг объекта поверх всего остального.

Так что вместо border: 1px solid red вы можете использовать outline: 1px solid red.

Убедитесь в этой демонстрации jfiddle..Обратите внимание, что я также добавил line-height: 1.4em, но это только для того, чтобы дать ячейкам немного больше места, поскольку ячейки со свойством outline эффективно на 2 пикселя глубже.

0 голосов
/ 08 июля 2011

http://jsfiddle.net/ethBT/

Я не думаю, что вы можете автоматически заполнить это пространство. То, как работает ваш код, в основном гласит: «Пускай все, что осталось». Так как один предмет больше, он занимает больше места. Как только что указал mrk, вы можете установить минимальную высоту всех li равной высоте нескольких строк. Хотя это означает, что все клетки будут в два раза больше, и я не думаю, что это то, что вы хотите.

Я не могу придумать альтернативу, которая получит этот эффект, не прибегая к тому, что дает вам больше контроля. Например, таблица.

0 голосов
/ 08 июля 2011

Вы можете добавить min-height к селектору ul li к минимальной высоте "Multiple Lines" li.

В моем случае я добавил это к ul li

 min-height:37px

Но это решило проблему только с размером шрифта по умолчанию, и теперь КАЖДЫЙ размер будет иметь высоту не менее 37px, что может не соответствовать вашим ожиданиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...