当前位置: 首页 > news >正文

江西企业 网站建设四川建设网app下载

江西企业 网站建设,四川建设网app下载,抖音代运营投诉平台,wordpress i18n实现效果 实现思路 获取标题盒子的真实宽度, 我这里用的是clientWidth#xff1b;获取文本内容所占的实际宽度#xff1b;根据文字的大小计算出每个文字所占的宽度#xff1b;判断文本内容的实际宽度是否超出了标题盒子的宽度#xff1b;通过文字所占的宽度累加之和与标题…实现效果 实现思路 获取标题盒子的真实宽度, 我这里用的是clientWidth获取文本内容所占的实际宽度根据文字的大小计算出每个文字所占的宽度判断文本内容的实际宽度是否超出了标题盒子的宽度通过文字所占的宽度累加之和与标题盒子的宽度做对比计算出要截取位置的索引同理文本尾部的内容需要翻转一下然后计算索引截取完之后再翻转回来 代码 div classtitle idtest开头这里是中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容结尾。/divcss代码: 设置文本不换行同时设置overflow:hidden让文本溢出盒子隐藏 .title {width: 640px;height: 40px;line-height: 40px;font-size: 14px;color: #00b388;border: 1px solid #ddd;overflow: hidden;/* text-overflow: ellipsis; */white-space: nowrap;/* box-sizing: border-box; */padding: 0 10px; }javascript代码获取标题盒子的宽度时要注意,如果在css样式代码中设置了padding, 就需要获取标题盒子的左右padding值。 通过getComputedStyle属性获取到所有的css样式属性对应的值, 由于获取的padding值都是带具体像素单位的比如: px可以用parseInt特殊处理一下。 判断文本内容是否超出标题盒子 // 标题盒子dom const dom document.getElementById(test);// 获取dom元素的padding值 function getPadding(el) {const domCss window.getComputedStyle(el, null);const pl Number.parseInt(domCss.paddingLeft, 10) || 0;const pr Number.parseInt(domCss.paddingRight, 10) || 0;console.log(padding-left:, pl, padding-right:, pr);return {left: pl,right: pr} } // 检测dom元素的宽度 function checkLength(dom) {// 创建一个 Range 对象const range document.createRange();// 设置选中文本的起始和结束位置range.setStart(dom, 0),range.setEnd(dom, dom.childNodes.length);// 获取元素在文档中的位置和大小信息,这里直接获取的元素的宽度let rangeWidth range.getBoundingClientRect().width;// 获取的宽度一般都会有多位小数点判断如果小于0.001的就直接舍掉const offsetWidth rangeWidth - Math.floor(rangeWidth);if (offsetWidth 0.001) {rangeWidth Math.floor(rangeWidth);}// 获取元素padding值const { left, right } getPadding(dom);const paddingWidth left right;// status文本内容是否超出标题盒子// width: 标题盒子真实能够容纳文本内容的宽度return {status: paddingWidth rangeWidth dom.clientWidth,width: dom.clientWidth - paddingWidth}; }通过charCodeAt返回指定位置的字符的Unicode编码, 返回的值对应ASCII码表对应的值0-127包含了常用的英文、数字、符号等这些都是占一个字节长度的字符而大于127的为占两个字节长度的字符。 截取和计算文本长度 // 计算文本长度当长度之和大于等于dom元素的宽度后返回当前文字所在的索引截取时会用到。 function calcTextLength(text, width) {let realLength 0;let index 0;for (let i 0; i text.length; i) {charCode text.charCodeAt(i);if (charCode 0 charCode 128) {realLength 1;} else {realLength 2 * 14; // 14是字体大小}// 判断长度为true时终止循环记录索引并返回if (realLength width) {index i;break;}}return index; }// 设置文本内容 function setTextContent(text) {const { status, width } checkLength(dom);let str ;if (status) {// 翻转文本let reverseStr text.split().reverse().join();// 计算左右两边文本要截取的字符索引const leftTextIndex calcTextLength(text, width);const rightTextIndex calcTextLength(reverseStr, width);// 将右侧字符先截取后翻转reverseStr reverseStr.substring(0, rightTextIndex);reverseStr reverseStr.split().reverse().join();// 字符拼接str ${text.substring(0, leftTextIndex)}...${reverseStr};} else {str text;}dom.innerHTML str; }相关知识 js判断文字被溢出隐藏的几种方法 通过document.createRange和document.getBoundingClientRect()这两个方法实现的。也就是上面代码中实现的checkLength方法。创建一个隐藏的div模拟实际宽度 通过创建一个不会在页面显示出来的dom元素然后把文本内容设置进去真实的文本长度与标题盒子比较宽度判断是否被溢出隐藏了。 function getDomDivWidth(dom) {const elementWidth dom.clientWidth;const tempElement document.createElement(div);const style window.getComputedStyle(dom, null)const { left, right } getPadding(dom); // 这里我写的有点重复了可以优化tempElement.style.cssText position: absolute;top: -9999px;left: -9999px;white-space: nowrap;padding-left:${style.paddingLeft};padding-right:${style.paddingRight};font-size: ${style.fontSize};font-family: ${style.fontFamily};font-weight: ${style.fontWeight};letter-spacing: ${style.letterSpacing};;tempElement.textContent dom.textContent;document.body.appendChild(tempElement);const obj {status: tempElement.clientWidth right left elementWidth,width: elementWidth - left - right}document.body.removeChild(tempElement);return obj; }创建一个block元素来包裹inline元素 外层套一个块级(block)元素内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性不对内层元素做处理这样内层元素的宽度是不变的。因此通过获取内层元素的宽度和外层元素的宽度作比较就可以判断出文本是否被溢出隐藏了。 // html代码 div classtitle idtestspan classcontent近日银行纷纷下调大额存单利率但银行定期存款仍被疯抢。银行理财经理表示有意向购买定期存款要尽快不确定利率是否会再降。/span /div// 创建一个block元素来包裹inline元素 const content document.querySelector(.content); function getBlockDomWidth(dom) {const { left, right } getPadding(dom);console.log(dom.clientWidth, content.clientWidth)const obj { status: dom.clientWidth content.clientWidth left right,width: dom.clientWidth - left - right}return obj; }使用canvas中的measureText方法和TextMetrics对象来获取元素的高度 通过Canvas 2D渲染上下文(context)可以调用measureText方法此方法会返回TextMetrics对象该对象的width属性值就是字符占据的宽度由此也能获取到文本的真实宽度此方法有弊端比如说兼容性精确度等等。 // 获取文本长度 function getTextWidth(text, font 14) {const canvas document.createElement(canvas);const context canvas.getContext(2d)context.font fontconst metrics context.measureText(text);return metrics.width }JS获取字符串长度的几种常用方法 通过charCodeAt判断字符编码 通过charCodeAt获取指定位置字符的Unicode编码返回的值对应ASCII码表对应的值0-127包含了常用的英文、数字、符号等这些都是占一个字节长度的字符而大于127的为占两个字节长度的字符。 function calcTextLength(text) {let realLength 0;for (let i 0; i text.length; i) {charCode text.charCodeAt(i);if (charCode 0 charCode 128) {realLength 1;} else {realLength 2;}}return realLength; }采取将双字节字符替换成aa的做法取长度 function getTextWidth(text) {return text.replace(/[^\x00-\xff]/g,aa).length; };
http://www.w-s-a.com/news/417709/

相关文章:

  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发