syntaxhighlighter 代码超长之后自动换行对齐
web 其他 2018-05-28 3501 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

7439930 2655 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

网站采用SyntaxHighlighter插件进行代码高亮显示,有一个问题就是,如果一行代码太长,不自动换行,下面出现滚动条,不方便查看。

from clipboard

有什么办法呢?在经过在pre标签里面加入css样式word-wrap: break-word;word-break:break-all;不管用后,放弃了。

偶然发现,使用SyntaxHighlighter插件高亮显示的代码,并不是后台编辑时候的代码,是经过转义/替换后的代码,如图

from clipboard

上图是<pre class="brush: vb;"></pre>转义后的完整代码。

所以通过在pre标签里加样式改变前台页面显示,是徒劳的。

打开样式表shCoreDefault.css72行,把white-space: pre !important;改为white-space: pre-wrap !important;

from clipboard

20200716
发现一个问题,只用white-space: pre-wrap !important;是不行的,当英文单词太长的时候,还是会超出,再加一个word-break:break-all;就可以了

关于white-space的意思,可查看http://www.w3school.com.cn/cssref/pr_text_white-space.asp,pre-wrap的意思是保留空白符序列,但是正常地进行换行。

然后,高亮代码就可以自动换行了。

但是,自动换行后,就跟左侧的行号对应不上了,这时候就要在网页底部加一段js代码,把行用each遍历一下,计算出右侧的行高,然后把得到的值赋给左侧的行号列。

js代码如下:

<script>
$(window).load(function(){
	$('.code .line').each(function(index){
		var yqhg=$(this).height();
		$('.gutter .line:eq('+index+')').attr('style','height:'+yqhg+'px !important')
	});
});
</script>
一定要放在网页的最底部。


修改后的额效果如图

from clipboard


20200623

原来用的jquery版本是jQuery v1.11.1.js

后来换成jquery-3.4.1.min.js

然后提示错误;TypeError: e.indexOf is not a function

原因是因为

$(window).load(function(){})在高版本中已经废弃,请用:$(window).on('load',function(){});替代


另外,好像bootstrap.min.js和syntaxhighlighter_3.0.83/scripts/shCore.js等一系列js有冲突,

bootstrap.min.js放在jquery-3.4.1.min.js和syntaxhighlighter_3.0.83/scripts/shCore.js……之间,左侧行号就与右侧不对齐了,原因是$('.code .line').each(function(index){……没有执行,把bootstrap.min.js放在最后就可以。

版权声明:本篇文章来源于网络。 来源链接

相关推荐
Uncaught (in promise) 的解决方法,可能原因
其他 | 2022-06-25 1082083
Uncaught (in promise) 的解决方法,可能原因;仅仅只是一种参考原因 我是因为copy的项目直接修改的,结果一直报错 Uncaught (in promise),检查发现接口请求数据已经正常返回,后来经过排查发现是在拦截器里面别人的判断是response.data.status !== 1 就算请求失败,从而Promi...
钉钉怎样设置快捷键?钉钉系统设置在哪
其他 | 2019-03-20 22758
钉钉怎样设置快捷键? 1,打开电脑端钉钉面板,点击右上角自己的头像,下拉菜单中点击系统设置 2,进入系统设置面板,下拉滚动条,找到快捷键设置
评论:0条
评论加载中...
发表评论