在页面中创建一个不可编辑的文本块,并且文本块的篇幅较大,第一反应是创建一个textarea,并将它的disabled="disabled",并设置相应的scroll属性,就可以构建一个尚可的文本块。

  但这样的文本块存在许多的问题,最为严重的是textarea内部只允许纯文本,并不能识别html标签(较新的ie浏览器可识别标签,但包括chrome在内的主流浏览器不能识别),所以,一些特定的格式无法很好表达。并且,在一些版本的ie浏览器上,当设置disabled="disabled"后,滚动条也将被禁用,影响文本的正常阅读。参考了一些主流的做法,感觉比较可行的是div+table的布局方案。示例代码如下:

 <div id="div_get" style="width:700px;overflow:scroll;height:400px;overflow-x:hidden">
<table id="tb_get" style="width:700px;" >
</table>
</div>

  首先创建一个div,设置这个层的长与宽,设置overflow:scroll,表示当层中的内容大于层所设置的大小后,启用滚动条进行拓展,overflow-x:hidden为禁用纵向的滚条,这里只是为了美观目的。创建层后,通过向层内添加html,一定程度上已经完成了Textatea关于实现不可编辑文本块的功能。但为了方便布局,以及从数据库中抓取数据用AJAX填入,我又用到了table,在这里我只是设置了表格的宽度。在pc端的主流浏览器中一切正常,但放到iphone的safari测试时,发现滚动条并不是停在预期的位置,而是卡在某处,通过对浏览器中的scrollHeight的比较,iphone上的长度会长于其他浏览器,走了各种弯路后发现,需要设置table的长度,可以有效防止滚动条的位置超出预期。至于长度,建议与对应层的长度相同。
  

  由于需要,当AJAX放入内容,需要将滚动条定位到最下方,可以通过以下js实现:

    document.getElementById("id").scrollTop = document.getElementById("id").scrollHeight;

    这里的id是div的,注意不是table的

  考虑到,当用户阅读内容,如果AJAX刷新,直接将滚动条移到最下方,十分不友好,于是乎,加一判断条件document.getElementById("id").scrollTop == 0,仅当滚动条在最上方时执行此操作(刷新完滚动条一般在最上处,而用户阅读时,滚动条移位,则不触发这项操作)。

伪Textatea的构建(div+table),以及相应的滚动条问题与safari上的优化的更多相关文章

  1. 功能整合(一):滚动条的变相隐藏、js控制div的渐变显示、滚动条监听

    1.滚动条的变相隐藏 思路: 1.  把body的横向,纵向的超出部分隐藏,宽设置100%:高设置100%.就没有body的滚动条了, 2.  然后把最外层的div的宽设置的比body的宽宽一点,把d ...

  2. table设置表格有滚动条

    table 设置表格有滚动条. 少说多做,代码中有注释: <!DOCTYPE HTML> <html> <head> <meta http-equiv=&qu ...

  3. div里面的元素在【垂直 方向】上水平分布 使用calc()函数动态计算

    1==>如何让div里面的元素在[垂直 方向]上水平分布.important-dec{ height: 121px; //必须固定高度 flex-direction: column; //垂直排 ...

  4. css+div table

    div+css table表格样式 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  5. 用伪类实现一个div的宽度和高度是固定百分比

    遇到一个题目:一个div宽度是固定百分比的情况下,如何设置高度是宽度的80% 看到题目的第一反应是用js控制,获取到div的宽度之后再用宽度的80%来设置div的高度,但是如何在不用js的情况下,只用 ...

  6. 以KeyValue形式构建Lua Table

    Key为字符串 -- 定义一个key,value形式的table local kv = {fruit = "apple", bread = "french", ...

  7. 如何使用css伪类,实现div左上角出现封面等提示信息

     HTML <div class="ui-cover-tip”><div> CSS .ui-cover-tip{ position: relative; width: ...

  8. DIV内容超出长度显示省略号,鼠标移上自动显示全部内容(EasyUI DataGrid)

    如果想把DIV中超出的文本显示成省略号,而不是换行全部显示,有2个办法. 注:本文主要是以EasyUI的DataGrid为案例的,如果是其他场景只要底层是用DIV显示文本的应该都能使用. 首先可以给此 ...

  9. DIV实现水平或垂直滚动条

    添加样式: 在html中,需要创建2层div来实现.一个div包含另一个div: 效果:

随机推荐

  1. [转载]PV操作简单理解

      原文链接:http://blog.csdn.net/liushuijinger/article/details/7586656 进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转 ...

  2. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  3. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

    http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS ...

  4. Java将TXT上的数据转换成excel里面

    package test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; im ...

  5. appium java 环境搭建

    appium是一款open source 移动自动化测试框架,既支持Android 也支持IOS. appium 基于webdriver协议执行测试脚本. 今天,如炒剩饭,介绍一下搭建appium A ...

  6. 重写jquery的ajax方法

    //首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...

  7. 【mongo】聚合相关资料

    一个很好的博客:http://www.cnblogs.com/shanyou/p/3494854.html 官网:https://docs.mongodb.com/manual/reference/o ...

  8. 转:POI操作Excel导出

    package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...

  9. linux系统的初化始配置

    一.网络的初始化 1.ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 子网掩码 [root@localhost /]# ifconfig eno1677773 ...

  10. C语言、结构体 定义

    C语言允许用户自己建立由 不同类型数据组成的组合型数据结构 成为结构体. struct Student { int num; //学号 ]; //姓名为字符串 char sex; //性别为字符型 i ...