返回列表 回复 发帖

[原创] 根治DZ顽症~限制图片宽度防止撑破表格 for DZ5.5

作者:yeego
功能:限制图片宽度防止撑破表格,并可通过鼠标滚轮缩放图片,特别适用于MAXSPEED5.2等窄版风格。
演示:
1.引用图片:http://www.jiangqiao.sh.cn/thread-18-1-1.html
2.附件图片:http://www.jiangqiao.sh.cn/thread-42-1-1.html

说明:
    很喜欢界面独特精致的窄版风格,但是有个问题一直困扰着我,那就是图片撑破表格的问题。因为像MAXSPEED5.2这类窄版风格,总表格宽度才900多像素,留给帖子显示内容的表格宽度也就700左右,所以如果图片宽度过大,往往在帖内只显示“冰山一角”。
    有人说DZ有自动缩放图片的功能,但是经过研究后才发现程序是这么来判断的:if(this.width >screen.width*0.7) {this.resized=true; this.width=screen.width*0.7;即如果“图片宽度”大于“屏幕宽度”*0.7,则缩小“图片宽度”为“屏幕宽度”*0.7。如果使用窄版风格问题就来了~
      假设图片宽度为1024(不过分吧),屏幕宽度也为1024(目前最最普遍的显示器分辨率),那么图片缩放后的宽度为716.8,而像maxspeed这类窄版风格留给图片显示的表格宽度是640左右。试想如果图片宽度更高呢?显示器分辨率更高呢?
    在DZ官方论坛搜遍了也没找到解决办法,但是看到不少朋友都遇到了相同的问题,参考了一下zwmmy的帖子(http://www.discuz.net/viewthread.php?tid=558117)发现,其实自己动手很容易解决。可以理解DZ官方技术人员是从全局来考虑问题的,可能忽略了小部分用户的感受,但是有种担忧是,DZ越来越听不进用户的建议了!
1、修改模版文件:viewthread_attachlist.htm
查找
  1. <img src="attachment.php?aid=$attach[aid]&noupdate=yes" border="0" onload="attachimg(this, 'load', '{lang image_open_zoom}')" onmouseover="attachimg(this, 'mouseover')" onclick="attachimg(this, 'click', 'attachment.php?aid=$attach[aid]')" onmousewheel="return imgzoom(this)" alt="" />
复制代码
替换为:(红色数字为所限制的图片宽度
<img src="attachment.php?aid=$attach[aid]&noupdate=yes" border="0" onload="if(this.width >640) {this.resized=true; this.width=640; this.alt='{lang image_open_zoom}';}" onMouseOver="if(this.resized) this.style.cursor='hand';" onClick="if(!this.resized) {return false;} else {window.open('attachment.php?aid=$attach[aid]');}" onmousewheel="return imgzoom(this);" />
查找:
  1. <img src="$attach[url]/$attach[attachment]" border="0" onload="attachimg(this, 'load', '{lang image_open_zoom}')" onmouseover="attachimg(this, 'mouseover')" onclick="attachimg(this, 'click', '$attach[url]/$attach[attachment]')" onmousewheel="return imgzoom(this)" alt="" />
复制代码
替换为:(红色数字为所限制的图片宽度
<img src="$attach[url]/$attach[attachment]" border="0" onload="if(this.width >640) {this.resized=true; this.width=640; this.alt='{lang image_open_zoom}';}" onMouseOver="if(this.resized) this.style.cursor='hand';" onClick="if(!this.resized) {return false;} else {window.open('$attach[url]/$attach[attachment]');}" onmousewheel="return imgzoom(this);" />
2.修改 include/discuzcode.func.php
查找:共四处
  1. screen.width*0.7
复制代码
全部替换为你所想限制的图片宽度,如:640
3.修改 include/javascript/common.js
查找:共两处
  1. screen.width*0.7
复制代码
全部替换为你所想限制的图片宽度,如:640

如果还想实现鼠标滚轮缩放图片大小的话(DZ默认是ctrl+鼠标滚轮)继续看下去(原创 : Alan888)
1.修改 include/javascript/common.js
查找:
  1. function imgzoom(o) {
  2.         if(event.ctrlKey) {
  3.                 var zoom = parseInt(o.style.zoom, 10) || 100;
  4.                 zoom -= event.wheelDelta / 12;
  5.                 if(zoom > 0) {
  6.                         o.style.zoom = zoom + '%';
  7.                 }
  8.                 return false;
  9.         } else {
  10.                 return true;
  11.         }
  12. }
复制代码
替换为
  1. function imgzoom(o){
  2. var zoom=parseInt(o.style.zoom, 10)||100;zoom+=event.wheelDelta/12;if (zoom>0) o.style.zoom=zoom+'%';return false;}
  3. function Download(ForumNo,TopicNo,ReplyNo){
  4. document.Download.forum.value=ForumNo;
  5. document.Download.topic.value=TopicNo;
  6. document.Download.reply.value=ReplyNo;
  7. document.Download.submit();
  8. }
复制代码
2.避免连签名图像也可放大缩小可按下修改 viewthread.php
查找
  1. $post['attachments'] = array();
复制代码
上面加
  1. $post['signature']  = str_replace(' onmousewheel="return imgzoom(this);"', '', $post['signature'] );
复制代码
3. 分别删除include/discuzcode.func.php (2处)、include/javascript/bbcode.js、misc.lang.php、templates.lang.php中的
  1. CTRL+
复制代码
最后记得更新缓存!
网易微博分享 豆瓣网 搜狐微博
沙发,哈长,坐下慢慢看!
哈 !  
  
坐一下下!
n年没看的东西,看不懂了
看不懂的说
完全看不懂。。。。
莫道醉人唯美酒,茶香入心亦醉人
返回列表