2016-09-26 2 views
2

Я стараюсь, чтобы высота строки состояния составляла 100% от контейнера. Я попытался дать ему фиксированную высоту, но даже когда высота увеличивается ... текст в новой строке появляется ниже строки состояния, а не рядом с ней.Иметь высоту строки состояния 100%

Код:

.list { 
 
    padding: 0; 
 
    border: 1px #666666 solid; 
 
    width: 250px; 
 
} 
 
.list > .status-bar { 
 
    background-color: red; 
 
    width: 20px; 
 
    padding: 20px; 
 
    display: inline-block; 
 
    height: 100%; 
 
}
<div class="list"> 
 
    <span class="status-bar">&nbsp;</span>Test 1 Test 1Test 1 Test 1 Test 1 Test 1 
 
</div>

JSFiddle Demo

+0

Является ли конечный результат тем, что строка состояния всегда занимает левую сторону и имеет текст справа? – LGSon

+0

Да точно @LGSon – user4756836

ответ

2

Я рекомендую идти с flexbox, это даст вам больше гибкости и контроль макета.

.list { 
 
    padding: 0; 
 
    border: 1px #666666 solid; 
 
    width: 250px; 
 
    display: flex; 
 
} 
 
.list .status-bar { 
 
    background-color: red; 
 
    width: 20px; 
 
    padding: 20px; 
 
} 
 
.list .status-text { 
 
    flex: 1; 
 
}
<div class="list"> 
 
    <div class="status-bar"></div> 
 
    <div class="status-text">Test 1 Test 1Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1</div> 
 
</div> 
 

С вертикально по центру текста

.list { 
 
    padding: 0; 
 
    border: 1px #666666 solid; 
 
    width: 250px; 
 
    display: flex; 
 
} 
 
.list .status-bar { 
 
    background-color: red; 
 
    width: 20px; 
 
    padding: 40px 20px; 
 
} 
 
.list .status-text { 
 
    flex: 1; 
 
    display: flex; 
 
    align-items: center; 
 
}
<div class="list"> 
 
    <div class="status-bar"></div> 
 
    <div class="status-text">Test 1 Test 1</div> 
 
</div>

1

Вы можете попробовать это:

  1. плавающем status-bar в влево, чтобы текст мог обернуться вокруг него.

  2. Затем нанесите clearfix для поплавка, очистив поплавок с помощью этого:

    .list:after{ 
        clear: both; 
        content: ''; 
        display: block; 
    } 
    

Позвольте мне знать ваше мнение по этому вопросу. Благодаря!

.list { 
 
    padding:0; 
 
    border: 1px #666666 solid; 
 
    width: 250px; 
 
} 
 

 
.list > .status-bar { 
 
    background-color: red; 
 
    width: 20px; 
 
    padding:20px; 
 
    display: inline-block; 
 
    height:100%; 
 
    float: left; 
 
} 
 

 
.list:after{ 
 
    clear: both; 
 
    content: ''; 
 
    display: block; 
 
}
<div class="list"> 
 
    <span class="status-bar">&nbsp;</span>Test 1 Test 1Test 1 Test 1 Test 1 Test 1 
 
    
 
</div>

+0

Один вопрос ... Как я могу сделать текст вертикально выровненным с вашими изменениями? – user4756836

+0

@ user4756836 просто увидел ваш комментарий здесь ... похоже, у вас уже есть решение в ответе LGSon :) В этом ответе для вертикального выравнивания встроенного элемента ему нужна некоторая тактика «встроенного блока» и указав ширину ... – kukkuz

1

Это происходит потому, что текст длиннее, чем ширина вашего контейнера. Он обертывается и идет ниже вашей строки состояния. Вы можете исправить это, добавив CSS white-space: nowrap; в ваш класс .list.

.list { 
 
    padding:0; 
 
    border: 1px #666666 solid; 
 
    width: 250px; 
 
    white-space: nowrap; /* added */ 
 
} 
 

 
.list > .status-bar { 
 
    background-color: red; 
 
    width: 20px; 
 
    padding:20px; 
 
    display: inline-block; 
 
    height:100%; 
 
}
<div class="list"> 
 
    <span class="status-bar">&nbsp;</span>Test 1 Test 1Test 1 Test 1 Test 1 Test 1 
 
</div>

Текст переливается вправо (который вы можете захотеть обрабатывать каким-то образом - может быть overflow:hidden), но это не решить вопрос.

Смежные вопросы