一直想实现博客文章中图片并列排版,因为有些图片比较长如果单占一行就会很不好看,但奈何没有啥实现思路。前几天看到大佬熊猫小A的Typecho博客主题VOID中实现了这个功能。于是厚着脸皮看了大佬的HTML结构,花了一个下午的时间用JQuery模仿了出来(捂脸)。先展示一下最终效果:

[photos]

![](https://cdn.jsdelivr.net/gh/zhengyujie/img/img/71663996.jpg)

![](https://cdn.jsdelivr.net/gh/zhengyujie/img/img/72611749.jpg)

![](https://cdn.jsdelivr.net/gh/zhengyujie/img/img/72279144.jpg)

[/photos]

实现思路

由于每张图片有不同的长宽比,所以将图片放在同一行,给每张图片安排的宽度也是不同的。这里使用了CSS中的flex布局,通过给每个图片块指定不同的flex-grow来分配不同的宽度。主要的HTML结构如下:




主要的CSS代码:

div.photos {

display: flex;

flex-wrap: wrap;

}

figure.photo {

margin: 2.5px;

}

.photo img {

max-width: 100%;

display: block;

}

接下来的重点就是怎么计算每个图片块的flex-grow。由于每个图片块需要有相同的高度,所以每个图片块分配到的宽度之间的比例应该和每张图片的宽长比之间的比例相同。所以我们直接将每张图片的宽长比作为该图片块的flex-grow,这样就实现了所有图片块高度相同。

jQuery实现

首先我们需要获取每张图片的长和宽:

jQuery('img').each(function(i, item){

var img = new Image();

img.onload = function () {

var w = img.width;

var h = img.height;

};

img.src = jQuery(item).attr('src');

})

然后我们需要为每张图片外嵌套一层

jQuery(item).wrap("

");

接着计算每张图片的宽长比并给每个图片块分配flex-grow:

jQuery(item).parent().css('flex', (w * 50 / h) + ' 1 0%');

同时我还实现了灯箱的功能,其实就是在图片外加一层,链接为图片的地址:

jQuery(item).wrap("");

jQuery(item).parent().attr("href",img.src);

jQuery(item).parent().attr("data-fancybox","gallery");

这样就实现了点击放大的功能。最后附上最终的jQuery代码:

jQuery('img').each(function(i, item){

var img = new Image();

img.onload = function () {

var w = img.width;

var h = img.height;

console.log(w,h);

jQuery(item).wrap("

");

jQuery(item).parent().css('flex', (w * 50 / h) + ' 1 0%');

jQuery(item).wrap("");

jQuery(item).parent().attr("href",img.src);

jQuery(item).parent().attr("data-fancybox","gallery");

};

img.src = jQuery(item).attr('src');

})

当然还有最后一步,我们需要将markdown中的[photos][/photos]替换成

function replace_text($text){

$replace = array(

'

[photos]
' => '

',

'[/photos]

' => '

'

);

$text = str_replace(array_keys($replace), $replace, $text);

return $text;

}

add_filter('the_content', 'replace_text');

html5图片并列排版,图片并列排版实现相关推荐

  1. html5图片并列排版,小编,图片与文字并排怎么排版呢?

    图文排版 H5秀 手机图文 小伙伴 小米,我想左边放图片,右边是文字,但是图片插入之后,再编辑文字只能在下一行,我就直接调整段前距,但有时候预览它会错位,想问图片与文字并排如何排版出来呢? 这是一个日 ...

  2. java中图片排版,如何快速排版PPT中的图片?这样做真实而不失美感

    如何快速排版PPT中的图片呢?大家都知道制作PPT会用到大量的图片,这样内容看起来才会丰富,可是图片一多,排版就成了一个大问题,想要制作一份精美的PPT文件,排版尤为重要. 图片太多不要慌乱,学会小编 ...

  3. html编写四宫格展示图片,七彩色图片排版工具一键制作四宫格图片教程

    七彩色图片排版工具是一款好用的图片排版工具.我们可以使用七彩色图片排版工具将电脑中的图片进行一键一键排版: 进入下载七彩色图片排版工具 2.1 官方版 大小:3.36 MB 日期:2019/2/25 ...

  4. 论文排版——写毕业论文时图片格式问题,图片只显示一小部分,其他部分被上方文字覆盖

    写毕业论文时图片格式问题 写毕业论文时图片格式问题,图片只显示一小部分,其他部分被上放文字覆盖,如图所示: 这种情况出现的原因是论文内容部分一般要求的格式是宋体小四首行缩进行距固定值20磅,问题就在这 ...

  5. 分享一个非常有用的HTML5+CSS3响应式图片案例

    随着Retina屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变这种 ...

  6. html5 canvas 加载图片

    html5 canvas 加载图片 视频 https://www.bilibili.com/video/BV19E411G7Vj?p=30 https://www.bilibili.com/video ...

  7. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效

    特效描述:利用HTML5实现 全屏图片 文字过渡 切换特效.利用HTML5实现全屏图片文字过渡切换特效 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码  Masupitami Wal ...

  8. java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片

    [Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...

  9. java canvas 缩放图片_详解如何用HTML5 Canvas API控制图片的缩放变换

    摘要:这篇HTML5栏目下的"详解如何用HTML5 Canvas API控制图片的缩放变换",介绍的技术点是"html5_canvas.canvas.Html5.控制图片 ...

  10. html5canvas绘制图片源码,HTML5 CANVAS:绘制图片

    HTML5 CANVAS:绘制图片 通过前面的学习,我们现在已经可以在HTML5 canvas中绘制图形和文字,并给它们设置一些样式.我们还可以在中绘制图片.用于在作为绘制源的图片可以是下面的几种元素 ...

最新文章

  1. oracle存储过程 调用java_Oracle存储过程调用Java方法
  2. cocoapods的安装(这真是一个神奇的东西,每次安装的方法都不一样,而且很容易出现各种各样的错误)...
  3. java 对象引用 弱引用吗_Java对象的强引用、软引用、弱引用和虚引用 笔记
  4. JS、Java、C 依然强势,Go、Kotlin、Python 成为潜力股,2020 开发者生态系统报告揭晓!...
  5. 查询记录时rs.previous()的使用
  6. 使用POI导入导出Excel2003、2007示例
  7. SQL Server DTS
  8. ECS 云助手,实现云上运维自动化
  9. 道德经和译文_道德经 - 道德经全文及译文 - 道德经全文 - 老子道德经
  10. base64加密解密
  11. 推荐几本图灵最新移动开发图书
  12. 《操作系统真象还原》——0.6 为什么称为“陷入”内核
  13. android实战开发记账本App,android开发实战-记账本APP(一)
  14. web项目034-----JS模版引擎
  15. 【阅读文献】单目视觉SLAM方法综述【1】~单目视觉SLAM分类方法
  16. python交易是什么意思_Py交易是什么意思
  17. 利用Cloudflare Workers部署臭鼬在线接头霸王项目实例
  18. 35岁的软件测试从业人员还有出路?听10年测试老鸟易哥怎么说!
  19. android中文乱码的解决办法
  20. 得到经纬度数据使用Plotly画世界地图(美赛心得)

热门文章

  1. 互联网巨头开放给创业者的新机会!
  2. 金彩教育:店铺运营怎么看数据
  3. 无损音乐知识收集1(转)
  4. RoCEv2 无损队列缓存
  5. 什么是IaaS PaaS SaaS,看这一篇就够了
  6. bing输入法linux,必应Bing输入法特殊符号输入方法图文教程
  7. 1934. 贝茜放慢脚步
  8. 春暖花开,放慢脚步,享受生活!
  9. 杭电CTF 练习题RE WP
  10. 根据不同时区计算北京时间