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

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

一、前言

首先看一下效果:

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


二、分析与解决

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!

相关文章
|
3月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
65 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
2月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
275 0
|
5月前
|
前端开发 JavaScript
前端 CSS 经典:文字描边
前端 CSS 经典:文字描边
232 0
|
小程序 前端开发 算法
前端(十六)——微信小程序语音转文字,文字转语音功能的实现
前端(十六)——微信小程序语音转文字,文字转语音功能的实现
1185 0
|
7月前
|
前端开发
前端 CSS 经典:好看的文字阴影
前端 CSS 经典:好看的文字阴影
54 0
|
7月前
|
前端开发 算法
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
|
7月前
|
前端开发 数据安全/隐私保护
【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示
【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示
|
前端开发
前端项目实战捌拾肆react-admin+material ui-踩坑-material ui Typography铸排文字
前端项目实战捌拾肆react-admin+material ui-踩坑-material ui Typography铸排文字
51 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
48 0
|
前端开发
【前端切图】CSS文字渐变和背景渐变
【前端切图】CSS文字渐变和背景渐变
79 0