实现span标签里的文字,第一行两边对齐,第二行右对齐

需求是,左侧的文字,第一行平铺,如果文字多余四个了,换行,右对齐

 

我用flex布局,一左一右:

html:

<div class="flex" *ngFor="let item of lists">
        <div class="justify">
          <span *ngFor="let item01 of item.title">
            {{item01}}
            <i></i>
          </span>
        </div>
        <span class="generalinf">{{item.text}}</span>
</div>  

css:

.justify {
    display: inline-block;
    text-align: justify;
    white-space: normal;
    max-width: 100px;
    width: 100px;
    color: #666;
    padding-right: 16px;

    span:first-child {
      display: block;
      overflow: hidden;
      height: 24px;
    }

    span:not(:first-child) {
      display: flex;
      flex-flow: column;
      text-align: right;
    }

    i {
      display: inline-block;
      padding-left: 100%;
      width: 100%;
    }
  }

  .generalinf {
    flex: 1;
    word-wrap: break-word;
    white-space: normal;
    margin-bottom: 15px;
  }

  这么写,并不能实现想要的效果,因为我就有一个span的标签,所以我用了js来控制:

首先要把html里的循环的数据写一下:

 lists: Array<any> = [
    {
      title: ['法定代大幅大姐说肯德基分开度表'],
      text: '法师法师'
    },
    {
      title: ['注册资本对付对付'],
      text: '成xx'
    }

  ]

  然后是方法:

给个方法,初始化的时候就调用
textRight() {
    console.log(this.lists)
    
    for (let i = 0; i < this.lists.length; i++) {
      var initarr = [];   //初始化一个空数组
      var str = this.lists[i].title.join();
      for (let j = 0; j < str.length / 4; j++) {
        var text = str.slice(j * 4, (j + 1) * 4); //每四个截取一个字符串
        console.log(text);
        var arrtext = text.split(','); //字符串转为数组
        // console.log(arrtext);
       
        // 循环这个数组,并放到空数组里
        for (var k = 0; k < arrtext.length;k++){
          console.log(arrtext[k])
          initarr.push(arrtext[k]); 
        }
        console.log(initarr)
        //把转换的字符串放到空数组里
        this.lists[i].title = initarr
        console.log(this.lists[i].title);
      }
    }
}

  如此,即可,如有问题,欢迎指正

posted @ 2018-09-28 14:09  adongP  阅读(7061)  评论(0编辑  收藏  举报