<input type="text" name="fgonetl" class="active" value="《《工作人员职业健康管理办法》(卫生部令第 55 号,2007 年)》"> 第 <input type="text" name="fgone" class="active" value="第 6 条"> 条规定,
上图中是一个 HTML 页面, 两个输入框都是一样的长度,这样如果字太多就会出现隐藏的情况,这个效果是不能满足业务需要的,请问下前端高手,如何解决这样样式问题
![]() | 1 Sapp 2021-03-30 16:39:47 +08:00 ![]() |
3 Archeb 2021-03-30 16:41:57 +08:00 1 、用 JS 2 、用 span+contenteditable 模拟 input 3 、奇技淫巧 https://css-tricks.com/the-cleanest-trick-for-autogrowing-textareas/ 要兼容性用①,要简单用②,③仅供参考 |
4 coldrain645 2021-03-30 16:43:30 +08:00 @Sapp 真秀! |
![]() | 5 daijinming OP @Sapp 很感谢朋友,能用这个很直观的形式帮助我查找问题,可以这个不能满足我的需要。采用 js 动态的设置长度不是我需要的,我需要的一个 style,假如叫它自适应,简单设置下样式就好,这个 HTML 不是我能控制的,我这边顶多增加一个通用样式,HTML 中可能还会有很多这样的 input,每个都采用 js 控制不行的 |
6 zhuweiyou 2021-03-30 16:45:11 +08:00 <input Oninput="this.style.width = this.value.replace(/[^\x00-\xff]/g, '**').length / 2 * 14 + 'px'" /> 14 是你的 font-size. |
![]() | 7 daijinming OP @zhuweiyou 加个限制,这个只是从服务器读取,不是用户输入的,用户不能输入 |
8 zhuweiyou 2021-03-30 16:48:01 +08:00 @daijinming 用户既然不能输入, 为什么要做成文本框... 你放个 <span> 不就行了吗? |
![]() | 9 daijinming OP @Archeb 很全面啊,第三个我比较青睐,但是好像不是太满足 input element,有点遗憾,还是很感谢 |
![]() | 10 InternetExplorer 2021-03-30 16:49:13 +08:00 你能加 style,我觉得也应该能加 js |
![]() | 11 daijinming OP @InternetExplorer 你说的有道理,这个背景还真是挺多的,不能加 JS 是因为这个主要用于转 PDF 打印,并且 HTML 有很多种类的内容,表单元素也很多,所以.... |
![]() | 12 initd 2021-03-30 16:54:31 +08:00 不用<input>, 用<p>, 添加 ID, 然后 .innerText= |
![]() | 13 anUglyDog 2021-03-30 17:06:39 +08:00 众所周知,input 有个属性是 size,为什么没人用呢,因为它搞不定非等宽字体的长度计算。 |
![]() | 14 anUglyDog 2021-03-30 17:08:52 +08:00 ![]() @zhuweiyou 感觉这个不够严谨,可以直接每次取值放到一个隐藏的 div 里让浏览器渲染完再取计算后的宽度,这样万无一失。 |
15 gdtdpt 2021-03-30 17:09:36 +08:00 <div>《《工作人员职业健康管理办法》(卫生部令第 55 号,2007 年)》</div> div { display: inline-block; padding-bottom: 5px; border-bottom:1px solid black; } 没测试过,大概是这样吧 |
17 dongtingyue 2021-03-30 17:18:25 +08:00 自己写 div 加编辑属性,div 加个框伪装成 input 。input 本身应该是没办法根据输入自适应宽度的。 |
![]() | 18 simlesos 2021-03-30 17:32:47 +08:00 |
![]() | 19 daijinming OP |