游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

多行内容超出显示的JS解决方案

  一个貌似很简单,但写起来也不简单的问题对于多行文字,超出。。。显示。
  通过css可以实现,但受限于浏览器兼容问题,有时候还需要依赖js来实现。
  通过js实现,就需要考虑到文字大小,中英文、数字、标点符号所对应的字节长度不一致,如果考虑的不全面,对于不同的文字内容,总会有点差距。
  首先,我们需要了解,中文汉字,英文字母,数字以及特殊符号所占的字节长度是不一样的,如果需要计算准确,就不能按照字符串的元素个数去截取,把它们换算成字节数来截取,准确度更高。所以,我们需要一个获取字符串字节长度的方法:functionbitCompute(content){vartotal0,lenarguments〔0〕。length0for(vari0;ilen;i){if(content〔i〕。charCodeAt()255){total2;}else{total1;}}returntotal}
  对于要截取多少内容的字节数,我们需要知悉能放入容器内的字节数与总字节数的比例,展示字节数总字节数offsetWidthscrollWidth:functioncomplate(){varoffsetWidthel。offsetWidth;varscrollWidthel。scrollWidth;vargapscrollWidthoffsetWidth;varpercentMath。floor(offsetWidthscrollWidth1e3)1e3;return{gap:gap,percent:percent}}
  根据计算得出的数据,我们就可以操作字符串了。functioncut(content){el。innerhtmlcontent;varinfocomplate(),percentinfo。percent;vartotalbitCompute(content)。total;varshowLen(totalpercent)。toFixed(0)cfg。placeholder;contentbitCompute(content,showLen)。content;returncontentcfg。padding;}functionbitCompute(content,maxLen){vartotal0,lenarguments〔0〕。length0,outContent;for(vari0;ilen;i){if(content〔i〕。charCodeAt()255){total2;}else{total1;}if(maxLentotalmaxLen){break;}outContentcontent〔i〕;}return{total:total,content:outContent}}
  当然文字展示的多少,也是和字体大小相关的,所以我们也需要把字体大小的因素考虑到,而且作为一个工作方法,本身就不应该页面中的元素有关联,所以我们应该在方法中自己创建元素,放入内容,计算offsetWidth和scrollWidth。functioncutFactory(opt){varcfg{padding:opt。padding。。。,classList:opt。classList〔〕,style:opt。style{},debug:opt。debug};cfg。placeholderbitCompute(cfg。padding)。total;vareldoc。createElement(span);el。classNamecfg。classList。join();varcustomStyles〔〕;for(varstyleKeyincfg。style){if(cfg。style。hasOwnProperty(styleKey)){customStyles。push(styleKey:cfg。style〔styleKey〕);}}el。style。cssTextposition:absolute;left:0;top:0;background:transparent;color:transparent;height:100;whitespace:nowrap;overflow:visible;border:0;(cfg。debug?background:white;color:red;:)customStyles。join(;);varpdoc。createElement(p);p。appendChild(el);p。style。cssTextwidth:99;minheight:50px;lineheight:50px;position:absolute;left:3px;top:3px;overflow:hidden;outline:0;background:transparent;(cfg。debug?outline:1pxsolidred;background:black;:);doc。body。appendChild(p);varcsswin。getComputedStyle(el);cfg。fontSizeparseFloat(css。fontSize)16;returnfunction(content){el。innerhtmlcontent;varout{flag:false,cut:,all:content,last:content}if(complate()。gap0){out。flagtrue,out。lastout。cutcut(content)}returnout}}
  最后,再暴露一个方法,方便使用者调用。
  为了性能考虑,不创建过多dom元素,我们可以缓存一下字体大小和容器宽度相同的截取方法。functionsubStringEL(name,fontSize,width){this。subStringELFns(this。subStringELFns{});varkeykeyfontSizewidth;varfnthis。subStringELFns〔key〕;if(!fn){fnthis。subStringELFns〔key〕cutFactory({style:{fontsize:fontSize,width:width}})}returnfn(name);}
  这样就完美的解决了多行超出。。。显示的问题了,兼容性很好,而且也能准确截取,灵活方便。

赢了与雷军10亿赌约后,董明珠做了这3件事!网友好样的南都讯随着格力电器和小米集团先后发布2018年营收数据,无数吃瓜群众围观了五年的十亿赌约终于有了结果:董明珠赢了。1月19日,小米集团公布2018年实现总营收1749亿元……乐高大电影2曝全新预告海报贱萌小人开启太空冒险星关系12月11日讯经典动画电影《乐高大电影2》今日曝欢乐圣诞定制短片,贱萌乐高小人艾米特换上圣诞新装,带领新老朋友一起打造巨型圣诞树,玩转节日嗨趴。这版短片堪称圣诞节定制专款……国风热血番雾山五行惊艳亮相好传动画连发佳作试映火爆星关系12月11日讯国风热血番剧《雾山五行》今日发布山雨欲来版前导海报及预告片,该剧讲述了拥有金木水火土五行元素力量的少年为对抗在山村掀起血雨腥风各界妖兽,展开不懈战斗的故事,……互联网对时尚流行体系的改变一般来说,时尚文化传播的途径是自上而下的,即上游的文化向下游传播。二次大战以后,国际时尚产业逐渐形成了以法国巴黎、意大利米兰、英国伦敦、美国纽约为主导,再向世界多数国家和地区辐……RealD与万达电影签约未来两年内将安装100块RealD终星关系12月10日讯今日,北京及洛杉矶全球3D与影像技术公司RealD与万达电影股份有限公司今天宣布签署合作意向书。万达电影将在未来两年内在旗下中国区的万达影城安装不少于100……印度合伙人看片会独家专享超前感受印度侠者PADMAN的魅力12月6日,由国影纵横协助发行的印度励志影片《印度合伙人》在郑州奥斯卡电影大世界举办了首映观影活动。省会媒体、影评人和部分观众在正式公映前欣赏到了这部影片。《印度合伙人》……龙猫郑州超前观影影迷点赞全程泪奔12月6日,备受全国影迷热盼的宫崎骏动画电影《龙猫》在郑州奥斯卡电影大世界举行超前观影。省会媒体记者、院线经理及诸多电影业内人士齐聚现场,为《龙猫》和宫崎骏打Call。自影片超……国家媒体奖项双丰收苏伦式爱情电影成类型片标杆星关系12月10日讯由导演苏伦编剧并执导的奇幻爱情电影《超时空同居》斩获第17届中国电影华表奖优秀青年电影创作奖。次日苏伦导演于2018电影嘉年华颁奖典礼再下一城,凭借《超时空……海王内地首周末狂揽6。5亿登顶全球票房榜正片片段展现银幕女神星关系12月10日讯由华纳兄弟影片公司出品、《速度与激情7》导演温子仁打造的DC全新超级英雄电影《海王》正在全国热映中,票房口碑持续大爆,公映24小时票房破2亿,48小时4。2……iOS14。7。1纠结升不升级?网友纵享丝滑,可以养老的版本相信所有小伙伴都遇到过这样一个问题,手机发布新系统了,我要不要更新呢?新系统怎么样呢?这不,作为iOS14仅剩不多的几个正式版,iOS14。7。1发布也有一段时间了,不少……荣耀赵明6月芯片供应全面恢复,首选安卓,以后会考虑鸿蒙荣耀从独立之后就一直都受到网友们的关注,大家都想看看这个脱离了老大哥之后的独立品牌,会有一番怎么样的作为,不过荣耀从独立之后就仅仅发布了一款手机,荣耀V40系列。该系列是荣耀还……掠食城市海外获赞不朽的史诗指环王导演打造全新奇观世界星关系12月7日讯由执导过《指环王》《霍比特人》系列的导演彼得杰克逊倾力打造的全新科幻史诗巨制《掠食城市》即将海外上映,影片恢弘史诗的世界观、震撼人心的特效和扣人心弦的冒险故事……
外八门之局中局横店开机优秀团队实力打造星关系10月24日讯10月22日,由北京时代星空文化传媒有限公司、北京河流文化传媒有限公司出品,北京想象颗粒文化传媒有限公司、华瑞影业(天津)有限责任公司、杭州璟宸盈通文化发展……珠宝行业必看,怎样轻松获客提高业绩?推荐云鲸大数据轻松获客珠宝行业经久不衰的原因是什么呢。首先珠宝消费相对简单,传统的婚庆消费仍然占据着大部分市场。与此同时,随着中国个体对珠宝的收藏爱好和审美能力的提高,珠宝消费将会持续增长。伴……春江水暖获金鸡双提名国内外颁奖季两开花星关系10月23日讯第32届中国电影金鸡奖日前公布了完整提名。青年导演顾晓刚执导的首部剧情长片《春江水暖》荣获最佳中小成本故事片提名,本片音乐监制窦唯获最佳音乐提名。影片山水画……他们已不再变老发布笑对苦难版剧照战火中的灿烂笑容令人心碎星关系10月22日讯由《指环王》《霍比特人》系列导演彼得杰克逊执导,烂番茄好评率100、豆瓣9分高口碑史诗级战争纪录片《他们已不再变老》将于11月11日全国艺联专线上映。影片今……电影地藏之尊地藏王菩萨扮演者张春受期待今日,由导演于振明执导,内地实力派演员张春领衔主演的院线电影《地藏之尊》顺利杀青,影片主要描述了新罗国王子金乔觉为求佛法真传,航海入唐,有力求学,艰苦修行,普度众生的过程,成为……什么是共配?模式是什么?有哪些优势?系统怎么选择?共配的概念共配就是通过把区域内资源整合起来,共用场地、人力、设备、系统等资源,提高运营管理中繁琐无效的环节,提升员工的工作效率,降低成本,从而实现112的配送能力升级。共……电影起跑线曝英语就是印度视频你的起跑线你说了算由萨基特乔杜里执导,伊尔凡可汗、萨巴卡玛尔等主演的印度电影《起跑线》将于4月4日全国上映。今日片方发布英语就是印度视频,揭晓英语在印度人心目中的超高地位,拉吉和米塔夫妇费尽心思……湮灭发布人物特辑女子科考团X区域与恐惧博弈2018北美开年口碑力作,由亚历克斯嘉兰执导,娜塔莉波特曼、詹妮弗杰森李等领衔主演的新科幻经典大片《湮灭》即将于4月13日全国上映。今日,电影发布了一支人物特辑,展现了几位主演……狂暴巨兽里不拿狼牙棒的尼根打得过强森?人家可是要竞选总统的!经历了佳作频出的2017强森年后,2018年巨石强森继续高产开挂,创作日程已然排到了2024年,其中最令人期待的个人作品是参与2024年的美国总统竞选!而强森人生力作开画之前,……用户需求大量增加谷歌将在德国新建两所云计算中心谷歌计划将在未来10年间,投资10亿欧元(约12亿美元),在德国建设新的数据中心,以扩大其在德国的运营业务,并开发建设云服务基础设施等。值得一提的是,扩建后的项目将从能源……脱单告急武汉路演钟楚曦反撩粉丝化身魔性小姐姐强推电影《脱单告急》武汉路演钟楚曦反撩粉丝化身魔性小姐姐强推电影由陈正道监制,柯孟融执导,任鹏编剧,董子健、钟楚曦、春夏主演的爱情喜剧《脱单告急》(曾用名《完全男生手册》)将于4……工作疲惫之余用DesktopGoose来缓解一下吧DesktopGoose,一只捣乱的桌面宠物鹅桌面宠物软件哪款好?桌面宠物软件推荐DesktopGoose抖音桌面宠物鸭,DesktopGoosemac破解版可以给你的桌……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网