如何在Hugo/Hexo博客中插入响应式Bilibili视频代码块

1. 方法:

  • bilibili默认给的是一个iframe,在iframe中添加css样式:style="position:absolute; height: 100%; width: 100%;"
  • 在原来的iframe外面嵌套一层div,div添加样式:style="position:relative; padding-bottom:75%"

直接上代码:

<div style="position:relative; padding-bottom:75%; width:100%; height:0">
    <iframe src="//player.bilibili.com/player.html?bvid=BV1xx411c7XW&amp;page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position:absolute; height: 100%; width: 100%;"></iframe>
</div>

把bvid后面的视频代码替换成需要的视频即可。

效果如下:

Hugo的话,将下面的代码保存为\layouts\shortcodes\bilibili.html,在markdown中使用{{bilibili 视频id}}即可调用:

<div style="position:relative; padding-bottom:75%; width:100%; height:0">
    <iframe src="//player.bilibili.com/player.html?bvid={{.Get 0}}&amp;page={{.Get 1}}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position:absolute; height: 100%; width: 100%;"></iframe>
</div>

2. 原理:

  • iframe本身不可自动伸缩

  • iframe宽度和高度设置为100%后,会尽可能的填充满它的父级元素

  • 所以在iframe外部嵌套一个div,只要这个div根据页面大小变化按比例变化,就可以实现了

  • iframe使用绝对位置(position: absolute), 默认与父级div的左上角对齐

  • div使用相对位置,并且用padding-bottom,来计算相对父元素的宽度(父元素宽度的75%作为div的高度),100:75则为4:3

 

参考:

响应式web布局中iframe的自适应

W3School - CSS "position"

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值