Bilibili

如何得到一个自适应宽度的高宽比固定的 HTML 容器

写上一篇文章时遇到了一个问题,我想插入一个 bilibili 的 iframe 来嵌入视频,如果直接用 B 站给的 iframe 代码,出来的是很小的一块,强行把 iframe 的 width 变成 100% 后,宽度是自适应撑开了,高度还是只有一点点高,然后 height 怎么写都不太对,如果再考虑手机等小屏幕设备需要自适应宽度,这个更无解了。搜了一圈,找到了一篇文章【前端笔记】使用iframe嵌入等比缩放的哔哩哔哩视频,按这个做法解决了问题

仔细看了下实现,其实挺有意思的,应该可以算前端的一个经典问题,就是如何设定一个 HTML 元素,能做到自适应宽度,且高宽比固定

一般我们需要维持高宽比的是图片,这个在 <img> 标签上可以有各种缩放选项能满足需求。对于视频,或者 iframe 嵌入,则没有比较好的原生实现方式。在上面找到的那个文章里,其实是先构建一个能自适应宽度且高宽比固定的 HTML 容器(一个 position: relative<div>),然后把真正要做到自适应的元素放到这个容器里,并用绝对定位占满空间,那么问题从怎么设定这个元素属性变成怎么得到可以自适应宽度且高宽比固定的一个容器

按搜到的那个实现做,是用一个空 <div>,先设定宽度 width: 100% 可以做到自适应宽度,接着为了维持高宽比,先强行设定高度 height: 0,然后用 padding-bottom: 75% 来做到等比撑开。这里的百分比计算是按照宽度来计算的,详细的定义可以看 w3.org 里关于 box 元素 padding-properties 的定义 http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#padding-properties。搜索结果里也都有这么来介绍,比如这两例:

今天问公司的前端担当 @tdzl2003,给出了另一个思路清奇的操作,直接塞一个比例图片进去,然后把这个图片撑开就行了,图片可以用透明色,而且 base64 编码后的图并没有多大,不会影响视觉效果也不影响性能,比如要 4:3 就弄一个 4 像素宽 3 像素高的空白图

果然前端都是各种骚操作,各种给跪

摩的大飚客

庞麦郎一首我的滑板鞋前段时间甚是流行, 到处都能看到 “我的滑板鞋, 时尚时尚最时尚, 摩擦摩擦, 在这光滑的地上, 摩擦”, 甚至家喵前几天都被洗脑, 没事在我面前哼哼下 “一步两步”, 忍无可忍给她放了下这首歌到底是怎样的, 猫耳已聋的家喵表示这歌太霸气了…

不怕瞎狗耳的观众朋友们可以试着点一下这个虾米播放器的播放按钮

呐, 这个歌 (如果这也算歌的话) 就是这样了, 如果在移动设备上看不到虾米播放器的也没关系, 可以去百度音乐 庞麦郎 – 我的滑板鞋 去摩擦摩擦

如果仅仅是这样, 习惯了鬼畜的笨狗显然是不会推荐的, 细心的应该也看出来了, 这篇博文的标题叫摩的大飚客, 那我们就来挖一下背后的故事

先把滑板鞋说完, 原唱就是个渣渣, 真心渣渣, 除了歌词算讲了个故事并且略押一点韵, 其他不管是音准还是节奏完全不在调上, 上面放的那个版本已经是被强大后期做过的, 原曲我没去找, 也懒得找, 因为这货以前的摩的大飚客已经让我彻底明白什么才叫神作

嗯, 进入正题, 所谓的摩的大飚客, 我最推崇的是这一版, 优酷播放器祭上

(看不到的可以直接点去优酷: 摩的大飚客 Live 版)

看完了的朋友应该对这个制作精良, 后期完美, 节奏洗脑, MV 简直就是良心作的作品表示深深的赞许吧? 喜欢看弹幕的可以去 bilibili 看这个 打吊针神曲续作, 跟刚才优酷那个是一样的, 只是这边有各种弹幕欢乐的吐槽. 沙宝亮和尚雯婕也真的是被黑的无与伦比, 沙宝那眉毛怂的, 敢再牛逼一点么? 中间都能蓝屏一下, 估计全屏看的当时就以为电脑扛不住这么大气场直接烧了. 最后黄妈和杜海涛只能算是微微一黑, 齐秦和陈明完全就是被吓傻的节奏. 对了, 里面 “wowow dance now” 的那个妹子就是唱冰雪奇缘随它吧插曲版的胡维娜

但是, 故事到这里显然不算完, 如果你只看上面这个, 是完全感受不到所谓后期的强大. 还好这个我是找了原曲和各种后期版的, 点击 数位专辑«打吊针» 去 bilibili 体验各个版本的打吊针吧 (我还是喜欢叫摩的大飚客), 注意里面分了很多页, 1P 就是神一般的原曲, 你一定会感慨这么烂的歌 (如果这也叫歌) 居然有人能通过那么强大的后期将其妙手回春点石成金, 2P 是上面的 Live 版, 真心神作, 后面的就是各种别的鬼畜调教, 可以去看看自己抗洗脑能力有多强

最后, 大家听过摩的大飚客的原版就能想象我的滑板鞋原版能有多差劲吧, 另外也感慨下做后期的人做我的滑板鞋时明显没有之前那么认真了, 做出来的气场还是弱了好多, 不过也还是不妨碍成为神曲了

我的部落格, 时尚时尚最时尚, 拿起鼠标在垫子上摩擦摩擦~