#html #css
#HTML #css
Вопрос:
Я пытаюсь создать простую гистограмму, используя неупорядоченный список. У меня есть текст внутри каждого из столбцов, и он повернут так, чтобы он был вертикальным. График является адаптивным, поэтому ширина полос уменьшается при уменьшении размера экрана.
<div id="chart">
<ul id="bars">
<li><div data-percentage="85" class="bar"><span>HTML</span></div></li>
<li><div data-percentage="85" class="bar"><span>CSS</span></div></li>
<li><div data-percentage="60" class="bar"><span>jQuery</span></div></li>
<li><div data-percentage="60" class="bar"><span>PHP</span></div></li>
<li><div data-percentage="35" class="bar"><span>MySQL</span></div></li>
<li><div data-percentage="85" class="bar"><span>Worpress</span></div></li>
</ul>
</div>
Связанные CSS и jQuery можно найти в jsFiddle: http://jsfiddle.net/8QVa6 /
Когда ширина полос уменьшается, текст обрезается вправо, есть идеи, какой CSS мне не хватает, чтобы все время держать его по центру?
Ответ №1:
Я бы использовал top: 50%
with position: relative
для элементов label span
. Это должно быть display: block
для того, чтобы это работало.
#chart #bars li .bar span {
color: #fff;
display: block;
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
position: relative;
top: 50%;
margin-top: -10px; /* about half line height */
}
Это margin: -10px
необходимо для компенсации высоты строки после поворота. Вы можете оставить это, если это не так уж плохо, если метка не точно центрирована.
Смотрите форк: http://jsfiddle.net/Nb53Z/2 /
Комментарии:
1. Это сработало с горизонтальным перемещением, но вместо вертикального центрирования есть ли возможность выровнять по вертикали сверху и оставить отступ размером 10-15 пикселей?
2. На самом деле, забудьте об этом. Мне нравится, как вы это придумали! Спасибо!
3. Я просто хотел попросить у вас изображение, показывающее ожидаемый результат, потому что ваш заголовок Q и ваш предыдущий комментарий кажутся немного противоречивыми. : o Правильное ли мое решение или есть детали, которые я пропустил?
4. Нет, ваше решение идеально.
Ответ №2:
Вы используете display:inline-table
на промежутке, вам нужно добавить display: table;
к родительскому
#chart #bars li .bar {
display: table;
width: 90%;
margin-left: 10%;
margin-bottom:10px;
position: absolute;
bottom: 0;
}
Комментарии:
1. Тем не менее, результат отзывчивости оказывается совершенно беспорядочным. Из-за общих стилей.