灯箱效果是我一直想加又没有加的功能,正好最近百度在推移动落地页检测,顺手做一下优化
我的检测结果是:您的页面可能存在图片不可全屏查看,全屏查看后不可缩放/左右滑动的问题,影响落地页体验
我们可以直接使用FancyBox
来完成我们的需求,FancyBox
是一款优秀的弹出框Jquery
插件
1、允许我们用鼠标和键盘上的四个方向键切换图片
2、可以根据当前窗口大小自动调整弹出框的大小,当我们改变浏览器窗口大小时,将会看到弹出框自动缩放
3、支持缩略图列表、放大、全屏等功能
4、弹出框支持显示多种类型的内容:图片、html
、视频…
5、支持触控、缩放手势操作图片
实现加入FancyBox灯箱效果教程
1、引入相关文件
可以将FancyBox
的js、css文件下载到主题目录中进行引入,这里我们直接使用CDN外链
请先在header.php
文件的head
标签前引入Jquery
文件
<script type='text/javascript' src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>
如果存在就跳过(大部分应该都有),然后在footer.php
文件的标签前引入
FancyBox
的js、css文件
<link rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />
<script type="text/javascript" src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js"></script>
2、增加data-fancybox属性
这里分为两种情况,一种为之前插入图片的时候,添加过<a>
标签
即:【添加多媒体】→【上传图片或媒体库】→选中图片→点击【插入至文章】之前,选择【附件显示设置】链接到【媒体文件】
需要将以下代码添加到当前主题的functions.php
文件中
// fancybox3图片添加 data-fancybox 属性
add_filter('the_content', 'fancybox');
function fancybox ($content){
global $post;
$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)>(.*?)<\/a>/i";
$replacement = '<a$1href=$2$3.$4$5 data-fancybox="images"$6>$7</a>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
另外一种是从来没有添加过<a>
标签的,我们使用js自动添加链接到原图
$(function() {
$(".entry-content p img").each(function(i) {
if (!this.parentNode.href) {
$(this).wrap("<a href='" + this.src + "' data-fancybox='fancybox' data-caption='" + this.alt + "'></a>")
}
})
});
.entry-content p img
需要修改为你自己网站的图片正文的CSS类,这上面js代码加入到header.php
或footer.php
文件中
3.初始化fancybox
一切加载完成后,就可以初始化FancyBox
了,在刚才引入的FancyBox
的js、css文件下面增加
$(document).ready(function() {
$("[data-fancybox]").fancybox()
});
如果一切顺利,那么你的网站现在点击图片就可以看到图片灯箱效果,不满意默认效果?那就来自定义配置吧
在初始化的时候增加配置,比如这个样子:
$(document).ready(function() {
$("[data-fancybox]").fancybox({
protect:true, // 禁用右键保存
})
});
更多配置项查看文档吧
今天查看落地页检测已经可以通过~
我使用了这个方法,为什么检测还是过不了呢。
@YY 等百度更新,不是那么快的
@沈唁 一周了检测都还是报错。。
@YY 网站发出来
@沈唁 方便加您的联系方式吗?
@YY 这个有联系方式。https://qq52o.me/sponsor.html
好像是图片太小的时候,就不能通过检测。。。跟是不是多张图片好像没有多大关系。
@kif 跟大小无关。
我按你这个方法来改造完后,发现问题,如果一个页面只有一张图片,那就可以通过百度的落地页检测,如果一个页面有多张图片,百度落地页检测就不通过,不知道是啥问题,能看一下吗?
@kif 站点呢?
现在很多主题都自带有这个功能,不过就算没有根据教程折腾也是挺简单的
我用的知更鸟的主题,引入这两段代码后,博客缩略图没有了,点图片也没反应,有解决方法吗? css和js 两个链接
@千月 知更鸟应该自带有灯箱吧?
@沈唁 原来是我加代码的时候,不知道碰到哪里了导致的,恢复3个文件正常了。现在效果能出来,就是图片显示不完整,边上还有一个滚动条
@沈唁 知更鸟没自带,是我把文件改出问题了,现在是图片显示不完整,边上有个滚动条
我按照你这个方法通过不了检测啊,之前好像可以通过,后来就不行了。不知道您的网站现在还能通过不?
@daniel 可以的。
@沈唁 你这个博客好像没有这个功能,你网站地址多少,我参考对比下看看问题在哪里,已经被百度折磨好久了,感谢!
@daniel 有啊,不过我用图片的少,看这篇吧,这篇文章图片多。https://qq52o.me/2681.html
帝国cms能用fancybox吗
@ttt 可以。
图片灯箱确实使用,也很有必要!【想问一下你的代码高亮用啥做的,我现在用的是highlightjs,长文章多次调用感觉会有点卡顿,现在在考虑要不要直接用css写最普通的那种了…..
@程志辉 代码高亮使用的Prism,有文章介绍https://qq52o.me/631.html