当前位置:首页>WordPress建站>基础教程>WordPress使用jQuery 按比例调整图片高度/宽度

WordPress使用jQuery 按比例调整图片高度/宽度

同学们,今天我们来谈谈WordPress主题制作的细节问题:限制文章中图片的最大宽度,防止图片“撑破”页面,用的比较多的方法是在CSS中使用 overflow:hiddenmax-width:600px 来限制,但是效果不理想,倡萌今天分享一下比较完美的方法: jQuery 按比例调整图片高度/宽度。

2013-4-14更新:使用 max-width 也是可以按等比缩小图片的。以前倡萌之所以任务无法实现,是因为我自己使用WLW离线发布时,使用WLW定义了图片的格式,而没办法继承样式表的样式。特此说明,希望大家不要被误导!

三种方法的效果比较

wpdaxue.com-201210074

从上图可以看出,overflow 仅仅是隐藏了部分图片,导致图片显示不全;max-width 只是限制的最大宽度,图片压缩变形;而jQuery 却可以等比例调整图片的高和宽,图片没有变形,这就是我们要的效果!

等比例调整图片的高和宽

方法一:jQuery 代码(荐)

现在大部分的网站都使用了 jQuery 库,所以我们只需添加下面的 jQuery 代码即可实现:

$(document).ready(function() {
    $('.post img').each(function() {
    var maxWidth = 600; // 图片最大宽度
    var maxHeight = 2000;    // 图片最大高度
    var ratio = 0;  // 缩放比例
    var width = $(this).width();    // 图片实际宽度
    var height = $(this).height();  // 图片实际高度

    // 检查图片是否超宽
    if(width > maxWidth){
        ratio = maxWidth / width;   // 计算缩放比例
        $(this).css("width", maxWidth); // 设定实际显示宽度
        height = height * ratio;    // 计算等比例缩放后的高度
        $(this).css("height", height * ratio);  // 设定等比例缩放后的高度
    }

    // 检查图片是否超高
    if(height > maxHeight){
        ratio = maxHeight / height; // 计算缩放比例
        $(this).css("height", maxHeight);   // 设定实际显示高度
        width = width * ratio;    // 计算等比例缩放后的高度
        $(this).css("width", width * ratio);    // 设定等比例缩放后的高度
    }
    });
});

实际使用时,注意修改 $(‘.post img’) 为你文章内容的class值,以及最大宽度、高度。

关于jQuery 库,请阅读《WordPress提速:选择好的jQuery库(Google/Microsoft/SAE)

方法二:纯Javascript代码

<script type="text/javascript">
function ResizeImage(image, 插图最大宽度, 插图最大高度)
{
    if (image.className == "Thumbnail")
    {
        w = image.width;
        h = image.height;

        if( w == 0 || h == 0 )
        {
            image.width = maxwidth;
            image.height = maxheight;
        }
        else if (w > h)
        {
            if (w > maxwidth) image.width = maxwidth;
        }
        else
        {
            if (h > maxheight) image.height = maxheight;
        }

        image.className = "ScaledThumbnail";
    }
}
</script>

实现效果和上面一样,不需要引用 jQuery 库,请设置最大高度和宽度值;在发布文章时,要手动给每张图片添加一个 class=”Thumbnail”

好了,今天课程到此为止,如果你有更好的方法,欢迎投稿分享!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
基础教程

WordPress代码高亮插件:WP-Syntax

2012-10-11 11:03:38

基础教程

WordPress自动截取限定数字的摘要

2012-10-29 5:31:00

17 条回复 A文章作者 M管理员
  1. 这个方法,如果图片未加载成功遍历了,有时候得不到宽度高度的

  2. max-width可以等比额,,,而且,,用百分比的话,和jq差不多。,。。

    • WLW发布文章如果不选择继承日志边框是会变形的

    • 不用wlw。。。

    • 比默认编辑器方便…

    • 还是喜欢wp的编辑器

    • 看样子你没用过WLW,,,,

    • 嗯。。。确实没用过,但是我觉得我用不到

    • WLW是什么?

    • 没用过。问下,以前发布的日志,会再同步到本地吗?

  3. 为什么我用这个方法会失效?

  4. .text a img{max-width:618px;height:auto} 这样子就可以了 估计校长没添加height:auto

    • 我现在已经知道问题所在了:我使用了wlw发布文章时,没有设置为继承文章的样式,而是直接使用wlw格式化了图片高宽,所以才出现了这样的问题

  5. 一直在用max-width=600px;并没有变形啊,控制了最大宽度,高度是等比例缩放的

    • 不知道你的是如何弄,反正我限制最大宽度,是会变形

    • max是不会导致图片变形的。

  6. 还有一种方法,应该是跟jquery的差不多。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索