前端——把一大段文字显示在前端并且有文字下面有虚线

简介: 前端——把一大段文字显示在前端并且有文字下面有虚线

一、前言

首先看一下效果:

给了一大段文字,字体左边对齐,并且字体下方的虚线延伸到最右边对齐:


二、分析与解决

1. HTML部分

设定一个div,以便于后期把文字放入其中

<div class="line-content" id="cnnr-detail">
</div>


2. JS部分

我们获取到这段文字之后,需要对其进行处理

//文字是否有换行符
strReset: function (str, location, rowLength) {
    var self = this;
    $(location).html("");
    if(str.search("\n") != -1){
        var strArray = str.split(/\n/g);
        for(var i = 0; i < strArray.length; i++){
            var stri = strArray[i];
            self.moreRowsReset(stri, location, rowLength);
        }
    } else {
        self.moreRowsReset(str, location, rowLength);
    }
},
//大段文字整理,每行有多少个字符,并且循环append添加到设定的div下
moreRowsReset: function (str, location, rowLength) {
    var self = this;
    var len = str.length;
    var lenByte = self.getByteLength(str);
    var k = rowLength;
    for(var i = 0; i < lenByte; i+=rowLength){
        //如果这一段文字为空的话,直接break
        if(str.substring(Math.ceil(i/2)).length === 0){
            break;
        }
        //判断是否为最后一行
        if(lenByte - i > rowLength){
            var strtemp = str.substring(Math.ceil((i+rowLength)/2));
            //var reg = new RegExp("[\\u4E00-\\u9FFF]+$","g");
            //var reg =/\p{P}/;
            var reg = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/;
            //如果每行的字数有变化,就把行数变回到原来的字数
            if(k - rowLength == 4){
                rowLength+=4;
            }
            //判断行首是否为标点符号
            if(reg.test(strtemp.charAt(0))){
                rowLength-=4;
            }
            var strTemp = str.substring(Math.ceil(i/2),Math.ceil((i+rowLength)/2));
            $(location).append("<span class=\"cnnr-detail\">"+strTemp+"</span>");
        }else{
            var strTemp = str.substring(Math.ceil(i/2),Math.ceil((i+rowLength)/2));
            if(self.getByteLength(strTemp) <= 1){
                //break;
            };
            $(location).append("<span class=\"cnnr-detail\""+ " style='text-align: left; text-align-last: left;'" +">"+strTemp+"</span>");
        }
    }
},
//获取这段文字的字节长度
getByteLength: function (str) {
    var len = str.length;
    var blen = 0;
    for(i=0; i<len; i++) {
        if ((str.charCodeAt(i) & 0xff00) != 0) {
            blen ++;
        }
        blen ++;
    }
    return blen;
},

3. CSS部分

左右对齐的样式:text-align: justify;        text-align-last: justify;

注意:每一行如果不超过指定的字节数时,我们使用左对齐,最后一行一定是左对齐,不然显示出来不好看,已经在JS里面设定了

style='text-align: left; text-align-last: left;'

/*外部div样式*/
.line-content{
    display: inline-block; /*内部使用块级*/
    overflow: hidden; /*隐藏滚动条*/
    vertical-align: top;
    width: 86%;
    padding: 0.1vh 0 0 0;
    color: #4fa6e5;
}
/*每一行的样式,设置两边对齐以及文字下面的虚线*/
.cnnr-detail{
    display: block;
    text-align: justify;
    text-align-last: justify;
    line-height: 2.3vw;
    padding-bottom: 0.4vw;
    border-bottom: rgb(18, 99, 160) dotted 0.1vw;
}


OK, GAME OVER!

相关文章
|
9月前
|
前端开发
前端项目实战捌拾肆react-admin+material ui-踩坑-material ui Typography铸排文字
前端项目实战捌拾肆react-admin+material ui-踩坑-material ui Typography铸排文字
26 0
|
9月前
|
前端开发
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
31 0
|
6月前
|
前端开发
【前端切图】CSS文字渐变和背景渐变
【前端切图】CSS文字渐变和背景渐变
37 0
|
8月前
|
前端开发
webkit-box-reflect,前端Css文字倒影,制作炫酷的时钟倒影效果.
webkit-box-reflect,前端Css文字倒影,制作炫酷的时钟倒影效果.
|
9月前
|
前端开发
前端实现复制文字操作
前端实现复制文字操作
39 0
|
9月前
|
前端开发
前端 SVG 与 Canvas 框架案例 (画线、矩形、箭头、文字 ....)
前端 SVG 与 Canvas 框架案例 (画线、矩形、箭头、文字 ....)
107 0
|
11月前
|
前端开发
前端|CSS盒阴影和文字阴影
前端|CSS盒阴影和文字阴影
84 0
|
11月前
|
JavaScript 前端开发 API
前端|获取网页中鼠标选中文字
前端|获取网页中鼠标选中文字
172 0
|
12月前
|
前端开发
【React工作记录六十七】前端实现复制文字操作
【React工作记录六十七】前端实现复制文字操作
104 0
|
前端开发
【web前端开发】CSS文字和文本样式
本篇文章主要讲解CSS中的文字和文本样式及一些实用技巧.文章最后有思维导图.