Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js


Posted in Javascript onJuly 10, 2016

在顶求网的首页中我使用了BootStrap的轮播(carousel)插件来展示文章中的图片。我在程序中自动抓取文章的第一张图片作为该轮播控件中要显示的图片,由于文章的图片大小不一,而轮播插件的大小基本是固定的,所以展示的时候图片出现了变形。在网上找了很多中方式也没有解决(过程曲折,不再赘述),直到找到了这款Jquery的缩放插件——jqthumb.js.下面来看看如何使用它以及如何利用它来控制轮播控件中图片的大小,而且能够做到不变形,可以显示图片的主要部分(类似于微信朋友圈的图片混排效果——不知道大家有没有注意,在微信朋友圈中无论你发的图片的比率是什么,总能够被完美的排列,而不会发生变形)。首先我们看看Bootstrap的Carousel的html代码: 

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Wrapper for slides -->
 <div class="carousel-inner" role="listbox">
  <div class="item active">
  <a href="包含图片一文章路径">
   <img src="图片一路径" alt="图片一" onload="DrawImage(this)"/></a>
   <div class="carousel-caption">
    <h4 class="alpha">
     <a style="color:white;" href="包含图片一文章路径">图片一标题</a>
    </h4>
    </div>
  
  </div>
  <div class="item">
  <a href="包含图片二文章路径">
   <img src="图片二路径" alt="图片二" onload="DrawImage(this)"/>
  </a>
  <div class="carousel-caption">
    <h4 class="alpha">
     <a style="color:white;" href="包含图片二文章路径">图片二标题</a>
    </h4>
    </div>
  </div>
  <div class="item">
   <a href="包含图片三文章路径">
    <img src="图片三路径" alt="图片三" onload="DrawImage(this)"/>
   </a>
   <div class="carousel-caption">
    <h4 class="alpha">
     <a style="color:white;" href="包含图片三文章路径">图片三标题</a>
    </h4>
    </div>
  </div>
 </div>
 

由上述代码可以看到,每个图片(img)在加载(onload)的时候都调用了一个函数DrawImage,在这个函数中我们就可以调用jqthumb.js的方法来控制图片的大小了,注意该函数一定要加在上述HTML代码前,否则第一次加载的时候控制图片大小会失败(因为页面加载时序的原因),函数代码如下: 

<!--导入插件-->
<script type="text/javascript" src="/static/plugins/thumb/js/jqthumb.js"></script>
<script>
function DrawImage(hotimg)
{
 $(hotimg).jqthumb({
 classname  : 'jqthumb',
   width   : '100%',
   height   : '300px',
   position  : { y: '50%', x: '50%'},
   zoom   : '1',
   method   : 'auto',
 });
}
</script>

在该函数中我们调用了jqthumb方法来定义一个宽度和轮播插件相同高度为300px的原图片的缩略图,该缩略图是由图片的中心开始生成的(注意其position属性的设置),这样即使图片的大小变化了,也可以显示图片的主要内容,而且图片比率可以保持不变。 

来源:顶求网

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是所有内容,希望能对大家有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
js读写json文件实例代码
Oct 21 Javascript
使用js画图之画切线
Jan 12 Javascript
js实现数字每三位加逗号的方法
Feb 05 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
node.js入门学习之url模块
Feb 25 Javascript
作为老司机使用 React 总结的 11 个经验教训
Apr 08 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 #Javascript
jQuery回到顶部的代码
Jul 09 #Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 #Javascript
JavaScript跨域调用基于JSON的RESTful API
Jul 09 #Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 #Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 #Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 #Javascript
You might like
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
php封装的smarty类完整实例
2016/10/19 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
贪污检举信范文
2015/03/02 职场文书
中学音乐课教学反思
2016/02/18 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android