1、问题的出现:

<textarea>标签为表单元素,但一般用于多行文本的输入,但是有一个明显的缺点就是不能实现高度自适应,内容过多就回出现滚动条。

为了实现高度自适应:用div标签来代模拟textarea文本域,实现高度自适应!

2、解决方案:

HTML代码:

<div class="test_box" contenteditable="true"><br /></div>    // 变为可编辑模式

CSS代码:

.test_box {
width: 400px;
min-height: 120px;
max-height: 300px;
_height: 120px;     //兼容IE6,给定高--内部元素溢出会撑开父标签
margin-left: auto;
margin-right: auto;
padding: 3px;
outline: 0;       //Firefox浏览器的div在可编辑模式下湖区焦点的时候会有虚线框
border: 1px solid #a0b3d6;
font-size: 12px;
word-wrap: break-word; //允许长单词或者url地址换行到下一行
overflow-x: hidden;
overflow-y: auto;
_overflow-y: visible;
}

3、解析:

<textarea>标签中的换行是以换行符的形式出现的;若换行符用于一般的div则不会出现换行,默认为空格;

因为div中默认的空白就会被忽略,所以无论是空白还是换行,都会被当做一个空格处理;

若要显示空白或者换行:添加white-space:pre;

若只显示换行,不显示空白:添加white-space:pre-line;

4、属性分析:

white-space属性
属性名 属性值 描述
white-space normal 默认。空白会被浏览器忽略。
white-space pre   空白会被浏览器保存,类似于<pre>标签
white-space nowrap 文本不会换行,直到遇到<br>标签
white-space pre-wrap 保留空白符序列,但正常的进行换行
white-space pre-line 合并空白符序列,但正常进行换行
contenteditable标签属性
属性值 描述
inherit 默认。如果父元素可编辑,元素内容就可编辑
true 内容可编辑
false 内容不可编辑

5、css实现单行、多行文本溢出显示省略号(…)

对于单行文本溢出显示省略号:

overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;

对于多行文本溢出显示省略号:(webkit内核)

  overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;

移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;

  • text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。
  • display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
  • -webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。
  • -webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。

css之——div模拟textarea文本域的实现的更多相关文章

  1. div模拟textarea文本域轻松实现高度自适应——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1362 一.关于tex ...

  2. 使用contenteditable+div模拟textarea文本域实现高度自适应

    使用contenteditable+div模拟textarea文本域实现高度自适应 开发过程中由于需要在发送消息的时候需要有一个可以高度自适应的文本域,一开始是使用textarea并搭配auto-si ...

  3. div模拟textarea文本域轻松实现高度自适应

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. jquery之div模拟textarea文本域轻松实现高度自适应

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. DIV仿textarea文本域,contenteditable如何只能输入纯文本

    对于支持HTML5浏览器有2种方法: 1. HTML5 <div contenteditable="plaintext-only"></div> 2.  C ...

  6. div模拟textarea自适应高度

    之前在公司做项目的时候,有这么一个需求,要我写一个评论框,可以随着评论的行数增加而自动扩大,最开始我想用textarea实现,但是后来尝试后发现textarea并不适合,textarea的高度不会随着 ...

  7. textarea文本域轻松实现高度自适应

    转载:http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 今天需要些一个回复评论的页 ...

  8. div模拟textarea

    有些Weber可能没有用过contenteditable这个属性,如果想编辑一个DIV里面的内容,这个属性是一个非常不错的选择   <div contenteditable="true ...

  9. div模拟textarea以实现高度自适应实例页面

    作为多行文本域功能来讲,textarea满足了我们大部分的需求.然而,textarea有一个不足就是不能像普通div标签一样高度可以跟随内容自适应.textarea总是很自信地显摆它的滚动条,高度固执 ...

随机推荐

  1. 对mysql进行快照复制

    Myself> flush tables with read lock; 之后开始创建快照 [root@server0 mysql]# lvcreate -L 100M -s -n dbback ...

  2. Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换

    A 直接判存不存在连续的三个包含A,B,C就行 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a ...

  3. P1058 立体图题解

    小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m \times nm×n的矩形区域,上面有m \times ...

  4. zabbix命令之:zabbix_sender命令

    zabbix server除了可以从客户端主动获取数据,客户端也可以主动将数据推送给服务端,客户端通过zabbix_sender指令来实现向服务端主动推送数据. 在zabbix客户端安装 配置yum源 ...

  5. Python修炼之路-Socket

    网络编程 socket套接字 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求. socket ...

  6. h5页面弹窗时页面固定(弹窗下面的页面不滑动)

    页面出现弹窗时,底部页面不能随之滑动怎么解决? 只需将页面的body增加一个样式 overflow:hidden;就能解决 jq: //开启弹窗 $('body').attr('style','ove ...

  7. Spring IOC(一)

    最近复习,准备整理下复习笔记 Spring IOC 部分: 控制反转(Inversion of Control) IOC是什么 简言之 IOC完成的事情原先由程序员主动通过new实例化对象事情,转交给 ...

  8. 【NOIP2016提高A组模拟9.17】数格子

    题目 分析 设表示每一行的状态,用一个4位的二进制来表示,当前这一行中的每一个位数对下一位有没有影响. 设\(f_{i,s}\)表示,做完了的i行,其状态为s,的方案数. 两个状态之间是否可以转移就留 ...

  9. 【shell】awk格式对齐文本

    源: 218.104.69.100 218.104.69.100 安徽合肥 218.104.69.99 218.104.69.99 安徽合肥 61.190.72.38 61.190.72.38 安徽合 ...

  10. css-select的三角在不同浏览器的样式是不一样的,所以我们这样解决???

    select{ width:57px; height:23px; border:1px solid #e9e9e9; outline: none; appearance: none; -moz-app ...