форматирование вертикального текста в divs

#css #angularjs #vertical-text

#css #angularjs #vertical-текст

Вопрос:

Я пытаюсь отобразить текст заголовка столбца вертикально, поэтому столбцы получаются узкими. Кажется, я не могу заставить текст поворачиваться и оставаться в пределах div.

Я сделал быстрый jsfiddle.

https://jsfiddle.net/DaveC426914/w674sLbL/9/

Моя «предварительная проблема» заключается в том, что моя демонстрация отображается некорректно. Данные повторяются три раза, то есть три 17-секундных, три 18-секундных и три 19-секундных. Я не знаю почему.

(Скрипта barebones Angular, с которой я начал, не содержала div ng-app =»MyApp», поэтому мне пришлось добавить ее, иначе angular никогда не будет применен. Я подумал, может быть, это как-то связано с этим, но удаление этого div нарушает работу приложения.)

Как только я это исправлю, моя настоящая проблема в том, что я не могу заставить текст вести себя должным образом. Он должен располагаться в пределах полей высотой 100 пикселей и шириной 20 пикселей, которые должны располагаться вплотную друг к другу, так, чтобы ширина столбцов составляла всего 20 пикселей или около того. Они отображают ширину 100 пикселей.

 <div class="table-header-cell" ng-repeat="item in headerDates">
  {{item.date}}
</div>

.table-header-cell {
    display: inline-block;
    border: 1px solid grey;
    margin: 1px 1px 5px;
    height: 30px;
    transform: rotate(-90deg);
      transform-origin: left bottom; 
    width: 100px;
}
  

Я пробовал варианты вложения div в div и применения поворота к внешним или внутренним разделам. Я также попытался установить ширину в 100 пикселей и высоту в 20 пикселей в надежде, что это применит изменение размеров перед поворотом, но пока ни одна комбинация не сработала.

Ответ №1:

Попробуйте поместить текст во внутренний div и применить к нему свойства преобразования и поля вместо всей ширины и поворота в одном div.

Используйте следующий html:

 <div ng-app="myApp">
 <div ng-controller="MyCtrl">
  <div class="table-header-cell" ng-repeat="item in headerDates">
   <div class="innertext">
     {{item.date}}
   </div>
  </div>
 </div>
</div>
  

и css:

 .table-header-cell {
display: inline-block;
border: 1px solid grey;
margin: 1px 1px 5px;
width: 30px;
height:90px;
}

.table-header-cell .innertext {
transform: rotate(-90deg);
width: 150px;
margin: 0 -60px;
}
  

Надеюсь, это должно дать вам результаты, которые вы ищете.

Если это поможет, пожалуйста, отметьте ответ и проголосуйте за него. Спасибо

Комментарии:

1. Действительно, это была одна из вещей, которые я пробовал. Ваш CSS действительно работает: именно -60px сделали свое дело. Спасибо!

Ответ №2:

Для проблемы с angular ng-repeat вам нужно убедиться, что ваш тип загрузки «Без переноса в тело» для вашего JavaScript, также вы загружали Angular дважды, поэтому я удалил вторую загрузку.

И для поворота вы должны не поворачивать контейнер, а создать внутренний контейнер и вращать его.

 <div ng-app="myApp">
    <div ng-controller="MyCtrl">
        <div class="table-header-cell" ng-repeat="item in headerDates">
            <div class="cell">
                {{item.date}}
            </div>            
        </div>
    </div>
</div>


.table-header-cell {
    display: inline-block;
    border: 1px solid grey;
    margin: 1px 1px 5px;
    height: 100px;
    width: 30px;
}

.cell {
    transform: rotate(-90deg);
    margin-left: -30px;
    margin-top: 30px;
    width: 100px;
}
  

Вот исправленная скрипка: https://jsfiddle.net/w674sLbL/10 /

Надеюсь, это поможет.