JS+CSS文章查看系统

这是我在CSDN上看到的一篇文章中写到的:

 

电脑上看文章比较吃力主要原因有以下两点:

1.这一点最重要:电脑屏幕大。同样长度的文字,在电脑上可能拉得很宽,但是行数很少,是一个大长条;在手机上就是一个方块。因此,在电脑上看,人的眼球需要转动很大的幅度才能读完一行;而手机上,对于母语汉语来说,可以一扫而过,阅读速度大大提高。其实看纸质文本也是一个道理,我们平时看杂志读报纸,没有哪一页不分栏吧?

2.在电脑上读网页上的文字,很容易分散注意力,因为到处都是超链接,经常要抵御去点它们的冲动,而且看上去很乱。而手机阅读纯文本要简单得多,我们的注意力可以集中在文字以及其所要表达的意义。不过这一点通过控制自己是可以做到的。

3.网页北京色一般为白色,而字体为黑色,对比度过于强烈损伤视力,而且字体大小样式等不可以重设影响阅读效果。

 

 

自己写了个JS+CSS的小东西,用来看提升用户体验的。

NameWindowsTextShow

做成一个连接:点击后执行JavaScript函数;

Function: WindowsTextShow(Id  div.id);

div.id 为要展示文本的divID

 

代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <title>Untitled Page</title>
  5.         <style type="text/css">
  6.         #divback
  7.         {
  8.             width: 100%;
  9.             height: expression(body.scrollHeight);
  10.             background-color: #000;
  11.             position: absolute;
  12.             top: 0;
  13.             left: 0;
  14.             z-index: 49;
  15.             display: none;
  16.             filter: progid:DXImageTransform.Microsoft.Alphaopacity=25;
  17.             filter: alpha(opacity=55);
  18.         }
  19.         .WindowsTextShow
  20.         {
  21.             top: expression(documentElement.scrollTop + 50);
  22.             left: 50px;
  23.             height: expression(documentElement.clientHeight - 50*2);
  24.             width: expression(body.clientWidth-50*2);
  25.             position: absolute;
  26.             z-index: 50;
  27.             color: Black;
  28.             border: 3px solid #E5E5E5;
  29.             background-color: #F0F0F0;
  30.         }
  31.         .WindowsTextShowFull
  32.         {
  33.             top: expression(documentElement.scrollTop);
  34.             left: 0px;
  35.             height: 100%;
  36.             width: 100%;
  37.             position: absolute;
  38.             z-index: 50;
  39.             border: 3px solid #E5E5E5;
  40.             background-color: #F0F0F0;
  41.         }
  42.         #textContent
  43.         {
  44.             padding: 5px;
  45.             height: 80%;
  46.             overflow: auto;
  47.             line-height: normal;
  48.             font-size: 14px;
  49.             color: Black;
  50.             background-color: White;
  51.         }
  52.         #ctrlSet
  53.         {
  54.             font-size: 12px;
  55.         }
  56.         .ctrlSetState
  57.         {
  58.             display: block;
  59.         }
  60.     </style>
  61.     <script charset="GB2312" language="javascript" type="text/javascript">
  62.         var ocolorPopup = window.createPopup();
  63.         var ecolorPopup = null;
  64.         var isfullScreen = false;
  65.         var isRunning = false;
  66.         var isCtrlSetShow = true;
  67.         var div_box = document.createElement("DIV");
  68.         var div_back = document.createElement("DIV");
  69.         var textwindowtop = 50 + document.documentElement.scrollTop;
  70.         var textwindowleft = 50;
  71.         function colordialogmouseout(obj) {
  72.             obj.style.borderColor = "";
  73.             obj.bgColor = "";
  74.         }
  75.         function colordialogmouseover(obj) {
  76.             obj.style.borderColor = "#0A66EE";
  77.             obj.bgColor = "#EEEEEE";
  78.         }
  79.         function colordialogmousedown(color) {
  80.             ecolorPopup.value = color;
  81.             if (GetRadioValue("colorType") == "textColor") {
  82.                 textContent.style.color = color;
  83.             }
  84.             else if (GetRadioValue("colorType") == "textbackColor") {
  85.                 textContent.style.backgroundColor = color;
  86.             }
  87.             else {
  88.                 divback.style.backgroundColor = color;
  89.             }
  90.             ocolorPopup.document.body.blur();
  91.         }
  92.         function colorset() {
  93.             if (window.event.keyCode == 13) {
  94.                 if (iscolor()) {
  95.                     ecolorPopup.value = document.getElementById("setcolorbox").value;
  96.                     if (GetRadioValue("colorType") == "textColor") {
  97.                         textContent.style.color = ecolorPopup.value;
  98.                     }
  99.                     else if (GetRadioValue("colorType") == "textbackColor") {
  100.                         textContent.style.backgroundColor = ecolorPopup.value;
  101.                     }
  102.                     else {
  103.                         divback.style.backgroundColor = ecolorPopup.value;
  104.                     }
  105.                 }
  106.                 ocolorPopup.document.body.blur();
  107.             }
  108.         }
  109.         function iscolor() {
  110.             var pattern = /^#[0-9a-fA-F]{6}$/
  111.             var objvalue = document.getElementById("setcolorbox").value;
  112.             if (objvalue.match(pattern) != null) {
  113.                 return true;
  114.             }
  115.             else {
  116.                 return false;
  117.             }
  118.         }
  119.         function colordialogmore() {
  120.             var sColor = dlgHelper.ChooseColorDlg(ecolorPopup.value);
  121.             sColorsColor = sColor.toString(16);
  122.             if (sColor.length < 6) {
  123.                 var sTempString = "000000".substring(0, 6 - sColor.length);
  124.                 sColor = sTempString.concat(sColor);
  125.             }
  126.             ecolorPopup.value = "#" + sColor.toUpperCase();
  127.             //document.body.bgColor="#"+sColor.toUpperCase(); 
  128.             ocolorPopup.document.body.blur();
  129.         }
  130.         function colordialog() {
  131.             var e = event.srcElement;
  132.             e.onkeyup = colordialog;
  133.             eecolorPopup = e;
  134.             var ocbody;
  135.             var oPopBody = ocolorPopup.document.body;
  136.             var colorlist = new Array(40);
  137.             var colordialogw = 158;
  138.             var colordialogh = 147
  139.             var colordialogx = e.offsetLeft + textwindowleft - 7;
  140.             var colordialogy = e.offsetTop + textwindowtop - colordialogh - 10;
  141.             oPopBody.style.backgroundColor = "#f9f8f7";
  142.             oPopBody.style.border = "solid #999999 1px";
  143.             oPopBody.style.fontSize = "12px";
  144.             colorlist[0] = "#000000"; colorlist[1] = "#993300"; colorlist[2] = "#333300"; colorlist[3] = "#003300";
  145.             colorlist[4] = "#003366"; colorlist[5] = "#000080"; colorlist[6] = "#333399"; colorlist[7] = "#333333";
  146.             colorlist[8] = "#800000"; colorlist[9] = "#FF6600"; colorlist[10] = "#808000"; colorlist[11] = "#008000";
  147.             colorlist[12] = "#008080"; colorlist[13] = "#0000FF"; colorlist[14] = "#666699"; colorlist[15] = "#808080";
  148.             colorlist[16] = "#FF0000"; colorlist[17] = "#FF9900"; colorlist[18] = "#99CC00"; colorlist[19] = "#339966";
  149.             colorlist[20] = "#33CCCC"; colorlist[21] = "#3366FF"; colorlist[22] = "#800080"; colorlist[23] = "#999999";
  150.             colorlist[24] = "#FF00FF"; colorlist[25] = "#FFCC00"; colorlist[26] = "#FFFF00"; colorlist[27] = "#00FF00";
  151.             colorlist[28] = "#00FFFF"; colorlist[29] = "#00CCFF"; colorlist[30] = "#993366"; colorlist[31] = "#CCCCCC";
  152.             colorlist[32] = "#FF99CC"; colorlist[33] = "#FFCC99"; colorlist[34] = "#FFFF99"; colorlist[35] = "#CCFFCC";
  153.             colorlist[36] = "#CCFFFF"; colorlist[37] = "#99CCFF"; colorlist[38] = "#CC99FF"; colorlist[39] = "#FFFFFF";
  154.             ocbody = "";
  155.             ocbody += "<table CELLPADDING=0 CELLSPACING=3>";
  156.             ocbody += "<tr height=/"20/" width=/"20/"><td align=/"center/"><table style=/"border:1px solid #808080;/" width=/"12/" height=/"12/" bgcolor=/"" + e.value + "/"><tr><td></td></tr></table></td><td bgcolor=/"eeeeee/" colspan=/"7/" style=/"font-size:12px;/" align=/"center/">当前颜色</td></tr>";
  157.             for (var i = 0; i < colorlist.length; i++) {
  158.                 if (i % 8 == 0)
  159.                     ocbody += "<tr>";
  160.                 ocbody += "<td width=/"14/" height=/"16/" style=/"border:1px solid;/" onMouseOut=/"parent.colordialogmouseout(this);/" onMouseOver=/"parent.colordialogmouseover(this);/" onMouseDown=/"parent.colordialogmousedown('" + colorlist[i] + "')/" align=/"center/" valign=/"middle/"><table style=/"border:1px solid #808080;/" width=/"12/" height=/"12/" bgcolor=/"" + colorlist[i] + "/"><tr><td></td></tr></table></td>";
  161.                 if (i % 8 == 7)
  162.                     ocbody += "</tr>";
  163.             }
  164.             //ocbody += "<tr><td align=/"center/" height=/"22/" colspan=/"8/" onMouseOut=/"parent.colordialogmouseout(this);/" onMouseOver=/"parent.colordialogmouseover(this);/" style=/"border:1px solid;font-size:12px;cursor:default;/" onMouseDown=/"parent.colordialogmore()/">其它颜色...</td></tr>";
  165.             ocbody += "</table>";
  166.             oPopBody.innerHTML = ocbody;
  167.             ocolorPopup.show(colordialogx, colordialogy, colordialogw, colordialogh, document.body);
  168.         }
  169.         //-->
  170.         function WindowsTextShow(divid) {
  171.             if (!isRunning) {
  172.                 WindowsTextInit(divid);
  173.                 isRunning = true;
  174.             }
  175.             SetWindows();
  176.         }
  177.         function SetWindows() {
  178.             textwindowtop = 50 + document.documentElement.scrollTop;
  179.             textwindowleft = 50;
  180.             div_back.style.display = 'block';
  181.             div_back.style.visibility = 'visible';
  182.             div_box.style.display = 'block';
  183.             div_box.className = "WindowsTextShow";
  184.         }
  185.         function RefreshWin() {
  186.             textwindowtop = 50 + document.documentElement.scrollTop;
  187.             textwindowleft = 50;
  188.         }
  189.         function WindowsTextInit(divid) {
  190.             var div_ctrlSet = document.createElement("DIV");
  191.             var div_textContent = document.createElement("DIV");
  192.             div_ctrlSet.id = "ctrlSet";
  193.             div_textContent.id = "textContent";
  194.             div_box.id = "WindowsTextShow";
  195.             div_box.className = "WindowsTextShow";
  196.             div_back.id = "divback";
  197.             WindowsTextAddObj(div_box, div_textContent);
  198.             WindowsTextAddObj(div_box, div_ctrlSet);
  199.             SetObjContent(div_textContent, document.getElementById(divid).innerHTML);
  200.             SetObjContent(div_ctrlSet, "<div id='typeSet'>选择更改项:<input checked='checked' name='colorType' type='radio' value='textColor' />文字<input name='colorType' type='radio' value='textbackColor' />背景<input name='colorType' type='radio' value='backGroundColor' />遮盖物</div>");
  201.             SetObjContent(div_ctrlSet, "<div id='colorSet'>选择颜色:<input id='setcolorbox' name='sel1' type='text' onkeydown='colorset()' onfocus='colordialog()'/></div>");
  202.             SetObjContent(div_ctrlSet, "<div id='fontSizeSet'>选择字体:<select name='select' id='fontslt' onChange='SetFont(textContent)'><option selected>选择阅读字体</option></select></div>");
  203.             SetObjContent(div_ctrlSet, "<div id='fullScreenSet'>全屏切换:<input type='button' onclick='FullScreen()' id='fullScreen' name='fullScreen' value='FullScreen'/></div>");
  204.             SetObjContent(div_ctrlSet, "<div id='hiddenCtrSet'>隐藏设置:<input type='button' onclick='HiddenCtrlSet()' name='HiddenCtrlSet' value='HiddenCtrlSet'/></div>");
  205.             SetObjContent(div_ctrlSet, "<div id='closeSet'>关闭窗口:<input type='button' onclick='CloseWindows()' name='CloseWindows' value='CloseWindows'/></div>");
  206.             document.body.appendChild(div_back);
  207.             document.body.appendChild(div_box);
  208.             SelectAddObj();
  209.         }
  210.         function HiddenCtrlSet() {
  211.             if (isCtrlSetShow) {
  212.                 document.getElementById("typeSet").style.display = "none";
  213.                 document.getElementById("colorSet").style.display = "none";
  214.                 document.getElementById("fontSizeSet").style.display = "none";
  215.                 document.getElementById("fullScreenSet").style.display = "none";
  216.                 isCtrlSetShow = false;
  217.             }
  218.             else {
  219.                 document.getElementById("typeSet").style.display = "block";
  220.                 document.getElementById("colorSet").style.display = "block";
  221.                 document.getElementById("fontSizeSet").style.display = "block";
  222.                 document.getElementById("fullScreenSet").style.display = "block";
  223.                 isCtrlSetShow = true;
  224.             }
  225.         }
  226.         function FullScreen() {
  227.             if (isfullScreen) {
  228.                 isfullScreen = false;
  229.                 textwindowtop += 50;
  230.                 textwindowleft += 50;
  231.                 div_box.className = "WindowsTextShow";
  232.                 document.getElementById("fullScreen").value = "FullScreen";
  233.             }
  234.             else {
  235.                 isfullScreen = true;
  236.                 textwindowtop -50;
  237.                 textwindowleft -50;
  238.                 div_box.className = "WindowsTextShowFull";
  239.                 document.getElementById("fullScreen").value = "DefaultScreen";
  240.             }
  241.         }
  242.         function GetIEHeight() //函数:获取尺寸
  243.         {
  244.             var winHeight = 0;
  245.             if (window.innerHeight)
  246.                 winHeight = window.innerHeight;
  247.             else if ((document.body) && (document.body.clientHeight))
  248.                 winHeight = document.body.clientHeight;
  249.             if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) {
  250.                 winHeight = document.documentElement.clientHeight;
  251.             }
  252.             return winHeight;
  253.         }
  254.         function GetRadioValue(ids) {
  255.             var obj = document.getElementsByName(ids);
  256.             for (var i = 0; i < obj.length; i++) {
  257.                 if (obj[i].checked) {
  258.                     return obj[i].value;
  259.                 }
  260.             }
  261.         }
  262.         function SetFont(winid) {
  263.             if ((fontslt.selectedIndex != -1) && (fontslt.selectedIndex != 0)) {
  264.                 winid.style.fontSize = fontslt.options[fontslt.selectedIndex].value;
  265.             }
  266.         }
  267.         function SelectAddObj() {
  268.             for (i = 9; i < 51; i++) {
  269.                 var varItem = new Option(i + "pt字体", i);
  270.                 document.getElementById("fontslt").options.add(varItem);
  271.             }
  272.         }
  273.         function SetObjContent(ids, obj) {
  274.             ids.innerHTML += obj;
  275.         }
  276.         function WindowsTextAddObj(ids, obj) {
  277.             ids.appendChild(obj);
  278.         }
  279.         function CloseWindows() {
  280.             div_back.style.display = 'none';
  281.             div_box.style.display = 'none';
  282.             div_box.className = "WindowsTextShow";
  283.             div_back.style.visibility = 'hidden';
  284.             isfullScreen = false;
  285.             document.getElementById("fullScreen").value = "FullScreen";
  286.         }    
  287.     </script>
  288. </head>
  289. <body>
  290. <div style=" width:900px; height:1400px; background-color:Gray; margin:0 auto;">
  291.     <div style=" height:100px; background-color:Red;"></div>
  292.     <div style=" height:1200px; background-color:Black;">
  293.         <div style="width:75%; float:left;">
  294.             <div style="height:100px; background-color:Blue;">
  295.             《跑跑卡丁车》国内运营商裁员超30%
  296.             <a href="javascript:WindowsTextShow('textBox')">看文字</a>
  297.             </div>
  298.             <div id="textBox" style="height:1100px; background-color:White;">
  299.                 卡丁车“熄火” 网游冬意渐增
  300.   本报记者 刘方远 
  301.   毕业生小王(化名)近日陷入了找工作的奔波之中。不久前,他还以为投身号称“反经济周期”的网游行业,能让他在这轮寒冬中得以自保。
  302.   “公司从这个月初开始裁减人员,陆陆续续几批共约一百多人,占公司总人数的30%到40%。”小王是乐线软件开发(上海)有限公司今年新招的员工,该公司是韩国网游厂商Nexon在中国的分公司,旗下有《跑跑卡丁车》等知名网络游戏。
  303.   据悉,《跑跑卡丁车》在国内休闲游戏领域一直名列前茅,为运营商带来的收入相当可观。由于网游对金融环境具有避风港效应,此前,国内网游厂商纷纷对该行业表示了乐观,乐线软件为何在此刻选择了大幅度“瘦身”?
  304.   12月24日,记者就此事向乐信软件求证,乐线软件管理中心一位韩方负责人向记者表示,公司目前不便对此进行表态。
  305.   战线调整?
  306.   乐信软件的母公司Nexon在国内小有名气,早年盛大网络代理的休闲游戏《泡泡堂》便是出自Nexon之手。看到《泡泡堂》在中国市场的巨大成功后,Nexon随后放弃了与盛大合作,独立成立了乐信软件在中国运营《跑跑卡丁车》等休闲游戏。
  307.   据网游业界知情人士介绍,《跑跑卡丁车》现在的运营平台名为世纪天成,由上海邮通和乐线软件共同搭建,“外界所知的‘世纪天成’实际控制方便是乐线软件。”除了《跑跑卡丁车》外,世纪天成运营的游戏还有《洛奇》、《新天翼之链》、《天关战纪》、《反恐精英Online》等。
  308.   《洛奇》是在国内上线的第一款游戏,但反应平平,但自2006年正式在国内推出《跑跑卡丁车》以来,公司开始出现转机。一位网游业内人士告诉记者,仅跑跑卡丁车一款游戏,最高一个月就能带来近千万收入,不过世纪天成的其它游戏市场表现仍很一般。
  309.   12月12日,世纪天成在《天关战纪》及《新天翼之链》这两款网游官网上同时发出了“终止运营公告”,称这两款游戏的所有服务器都将于12月30日10:00关闭。
  310.   对此,小王告诉记者,这也许就是公司此次缩减员工的原因,因为一些老游戏业绩下滑,公司要转型,加上还有新游戏要上线,所以要做大规模调整。
  311.   另有知情人士告诉记者,世纪天成此次的人员调整涉及大量中高层人员,“很多第一批做《洛奇》、《卡丁车》的人都走了,可能是韩方因经济危机进行的调整。”
  312.   据悉,《反恐精英Online》便是世纪天成近期上市测试的一款新游戏,“虽然这款游戏在韩国的表现并不好,但由于国内有比韩国更多的CS玩家基础,因此这款游戏被他们寄予厚望。”
  313.   网游有没有冬天?
  314.   事实上,一些国际级游戏巨头也开始了“瘦身”。
  315.   12月开始,美国知名游戏开发商EA(艺电)公司宣布,公司将再裁员400人,加上10月份的裁员计划,裁员人数将达1000人,约占员工总数的10%。
  316.   不过,业内专家认为,由于EA主要仍是依靠传统的单机游戏模式,并且面对的是西方成熟市场,因此受经济环境影响较大,而中国的网络游戏市场由于还处在增长阶段,因此受到冲击较小。
  317.   对此,盛大、巨人、第九城市等方面都向记者表达了类似的观点——网游属于廉价娱乐,经济危机导致的收入下降,短期内不太可能影响低消费的娱乐项目,因此并没有看到市场大幅萎缩。
  318.   “对已经上市的大网游企业而言,这轮经济形势带来的影响并不大,一是因为产品已经比较成熟,二是有充足的资金。”第九城市总裁陈晓薇向记者表示,目前九城的重点就是实施多元化的产品策略,完善针对不同需求的分散依赖单一产品线的风险。
  319.   据市场调查公司艾瑞咨询称,中国网络游戏运营商在今年第三季度的收入总和同比增长了50%以上,达到近8亿美元,同时本季度网络游戏市场的增长势头仍很强劲。
  320.   不过,对于没有上市的中小网游厂商而言,日子确实开始变得难过起来,因为小工作室很难再拿到投资,进一步的研发投入断粮后,小工作室的未来将难以为继。一家中型网游公司的负责人告诉记者,“近期一些大的扩张计划都暂时搁浅了,只能依靠已有的游戏维持现状。”
  321.             </div>
  322.         </div>
  323.         <div style="width:25%; float:left;"></div>
  324.     </div>
  325.     <div style=" height:100px; background-color:Red;"></div>
  326. </div>
  327. </body>
  328. </html>

其实像CSDN这种文章类网站完全应该采用一下,挺实用的。

下面是我做的两个演示,其中一个借用CSDN网站,可以看看如果CSDN加上后的效果。

http://bbs.blueidea.com/thread-2904382-1-1.html

大家可以试试,现在只支持IE我是在IE7下做的,有兴趣的自己可以做css hack,让他支持更多的浏览器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章