对于存在大图的站点而言,不能将图片放大无疑是一种功能上的缺陷,访客无法查看细节且在浏览过程中受周围布局影响较大,严重影响浏览体验。
帝国CMS指定图片放大
就我本人的需求而言,将指定图片放大指文章/内容页中出现的大图。但问题在于帝国CMS调用无法直接提取图片,也就是说,图片和文字是同时调用的。而同时调用,文字的存在依然对体验有着不小的影响。那么,指定图片放大,且文字不出现该如何实现?
具体思路如下:
获取图片点击序列 >> 根据点击序列选择图片路径 >> 插入图片标签 >> 插入图片路径
具体源码如下:
$(".whole-pic-remind img").click(function(){
n = $(this).index('.whole-pic-remind img');
nimg = $('.whole-pic-remind img')[n].src;
$('.whole-pic-container').html('<img src="" title="点击隐藏">');
$('.whole-pic-container img').attr('src',nimg);
})
图片的展现形式
点击指定图片放大存在两种情况:图片宽高不超过屏幕宽高,此时显示方式应该是居中,如>>小黄人;图片宽高超过屏幕宽高,此时图片应从顶部开始展示,如>>猎头公司。
按照我最初的想法,是获取图片宽高、屏幕宽高而后决定展现形式,但在实际操作中我又一次不得不承认CSS掌握不够:vertical-align:middle,即可解决问题。此处依然以上一个问题中的元素为例。
1、CSS基础样式
父元素: whole-pic-container ,参数设置为line-height:100vh;text-align:center;
子元素: whole-pic-container img ,参数设置为 display:inline-block;vertical-align:middle;
在这种情况下,小图会水平 + 垂直居中于屏幕,大图需要再多一个步骤。
2、大图的设置
大图需要计算当前浏览窗口在整个屏幕中的高度,而后将这个高度赋为大图的顶部位置,若不加入本步骤,大图会从文档顶部开始显示,那么你眼中展现的可能就是图片的中部甚至尾部,浏览体验不佳。
获取当前屏幕高度:di = $(document).scrollTop(),而后将获取到的高度赋给父级即可,父子级的定位关系在此不做赘述。
或许所有的问题都是思路的问题,当你将思路理顺了,逻辑弄清楚了,不会的地方就上百度,功能自然可以实现。
本文介绍的方法就是本站点使用的方法,如出现问题可参考(示例:http://www.20174174.com/illustration/OriginalPic/46.html)。