Javascript 对齐平移后居中的跨度元素

Javascript 对齐平移后居中的跨度元素,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,我正在尝试将一组跨度元素(使用ng repeat创建)推送到x轴上的某个计算位置 这是在一个指令中完成的,其中每个元素的位置是基于一些启发式计算的 但是,这些元素不是居中的,而是左对齐的。当文本(长度可变)需要在上述位置下居中时,这会产生问题 直观地说,可以计算包含文本的元素的宽度,并将其从translateX位置偏移,但是html是在指令中编译的,并且在呈现后进行更改会导致明显的闪烁 在下面的代码中,您可以想象垂直|代表文本应居中的中点位置 HTML: JavaScript(片段): angu

我正在尝试将一组跨度元素(使用ng repeat创建)推送到x轴上的某个计算位置

这是在一个指令中完成的,其中每个元素的位置是基于一些启发式计算的

但是,这些元素不是居中的,而是左对齐的。当文本(长度可变)需要在上述位置下居中时,这会产生问题

直观地说,可以计算包含文本的元素的宽度,并将其从translateX位置偏移,但是html是在指令中编译的,并且在呈现后进行更改会导致明显的闪烁

在下面的代码中,您可以想象垂直|代表文本应居中的中点位置

HTML:

JavaScript(片段):

angular.module('varApp',[])
.controller('TodoCtrl',函数($scope){
var items=$scope.items=[];

for(var i=2;i通过将文本内容放在宽度等于起始位置和结束位置之间的偏移量的范围内来获得我想要的内容

Javascript:

angular.module('varApp', [])
.controller('TodoCtrl', function($scope) {
    var items = $scope.items = [];

  for(var i = 2; i <= 10; i++) {
    var string = new Array(i).join('a');
    items.push({
        value: string,
      style: {
        // should be transform: translateX(calcValue(el))
        marginLeft: (i * 100) + "px",
        minWidth: ((i+1) * 100) - (i * 100)
      }
    })
  }
});
angular.module('varApp',[])
.controller('TodoCtrl',函数($scope){
var items=$scope.items=[];

for(var i=2;i通过将文本内容放在宽度等于起始位置和结束位置之间的偏移量的范围内来获得我想要的内容

Javascript:

angular.module('varApp', [])
.controller('TodoCtrl', function($scope) {
    var items = $scope.items = [];

  for(var i = 2; i <= 10; i++) {
    var string = new Array(i).join('a');
    items.push({
        value: string,
      style: {
        // should be transform: translateX(calcValue(el))
        marginLeft: (i * 100) + "px",
        minWidth: ((i+1) * 100) - (i * 100)
      }
    })
  }
});
angular.module('varApp',[])
.controller('TodoCtrl',函数($scope){
var items=$scope.items=[];
对于(var i=2;i
angular.module('varApp', [])
.controller('TodoCtrl', function($scope) {
    var items = $scope.items = [];

  for(var i = 2; i <= 10; i++) {
    var string = new Array(i).join('a');
    items.push({
        value: string,
      style: {
        // should be transform: translateX(calcValue(el))
        marginLeft: (i * 10) + "px"
      }
    })
  }
});
angular.module('varApp', [])
.controller('TodoCtrl', function($scope) {
    var items = $scope.items = [];

  for(var i = 2; i <= 10; i++) {
    var string = new Array(i).join('a');
    items.push({
        value: string,
      style: {
        // should be transform: translateX(calcValue(el))
        marginLeft: (i * 100) + "px",
        minWidth: ((i+1) * 100) - (i * 100)
      }
    })
  }
});