css - 是否可以在 Wordpress 中使 *portrait* <video> 标签响应?

标签 css wordpress video wordpress-theming

[重要说明:这仅影响自托管 <video>标签,而不是 youtube 或 vimeo iframe]

因此,我在页面中嵌入了具有垂直比例(纵向)(通常为 720 像素宽度和 1280 像素高度)的手机视频。

一切正常,除了视频不会适应页面。宽度将适合,但用户需要在视频播放时上下滚动以欣赏显示的内容。

我已经尝试了所有 CSS 技巧来使视频 div 响应,但它不起作用。

视频被包裹在一个 div 中,内容如下:

.wp-video-shortcode, video, .mejs-mediaelement {
    max-width: 100% !important;
    max-height:100% !important;
}

但没有效果(只有宽度会随着页面大小的变化而调整!)。

如果我手动更改短代码中的宽度和高度,如下所示:

[video width="720" height="1280" mp4="http://url.mp4" autoplay="true" poster="http://url.jpg"][/video]

成为

[video width="340" height="680" mp4="http://url.mp4" autoplay="true" poster="http://url.jpg"][/video]

视频变小了,但还是不会适配页面。

我想我已经明白为什么...?如果我偏离了轨道,请告诉我:

整个前提如何<video>嵌入 Wordpress 的大小,似乎是基于 width : 甚至还有一个名为 $content_width 的全局变量为此目的,虽然没有 $content_height .

具体来说,这就是 wp_video_shortcode 中发生的事情功能:

global $content_width;

// if the video is bigger than the theme
        if ( ! empty( $content_width ) && $atts['width'] > $content_width ) {
            $atts['height'] = round( ( $atts['height'] * $content_width ) / $atts['width'] );
            $atts['width'] = $content_width;
        }

正如您在上面看到的,wp 似乎只根据页面宽度检查视频。

如何解决这个问题?

最佳答案

我认为简短的回答是 WordPress 无法“开箱即用”地嵌入响应式肖像(视频)。

但是,您可以通过一些自定义编码在 WordPress 中实现您想要的。以下内容改编自 Twitter Bootstrap 框架,特别是此处记录的内容:http://getbootstrap.com/components/#responsive-embed

我所做的更改使其适用于纵向(视频)嵌入,宽高比为 9:16(假设您的视频显然是 720 像素 x 1280 像素(= 9:16 宽高比))。

HTML:

<div class="container">
  <div class="embed-responsive embed-responsive-9by16">
    <iframe class="embed-responsive-item" src="[URL to your video]"></iframe>
  </div>
</div>

CSS:

.embed-responsive {
    position: relative;
    display: block;
    height: 0;
    padding: 0;
    overflow: hidden;
}

.embed-responsive-9by16 {
    padding-bottom: 177.78%;
}

.embed-responsive .embed-responsive-item, .embed-responsive embed, .embed-responsive iframe, .embed-responsive object, .embed-responsive video {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

JSFiddle 示例:https://jsfiddle.net/c4akmfxd/ (此示例中 iframe 的 URL 是我能想到的第一个既响应又可通过 HTTPS 访问的 URL(JSFiddle 必须具有 HTTPS)(这是我建立的一个名为“十月”的网站)。

<div与类 container只是一个例子 - 它可以是任何你想要的具有适当宽度的东西,可以将你的肖像嵌入其中 - 并且可以是你的 <body>标记,或您网页的任何部分。

如果您需要不同的纵横比,只需更改(或创建一个新的 CSS 类).embed-responsive-9by16 的填充底部CSS 类。您可以计算出所需的百分比: height / width * 100 (在您的情况下:1280 / 720 * 100 = 177.78%)。

如何在 WordPress 中获得它是另一回事 - 并且在很大程度上取决于您的设置。您可以编辑 CSS 文件以添加这些 CSS 类;在您的页面中获取 HTML 可能是另一回事,因为 WordPress 有时会“重写”您粘贴到 HTML View 中的 HTML 并删除您想要的内容。但是 JSFiddle 证明您可以实现响应式肖像嵌入。

尽管如此,我认为您不需要对 PHP 变量 $content_width 做任何事情。 .

关于css - 是否可以在 Wordpress 中使 *portrait* <video> 标签响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967159/

相关文章:

android - FFMPEG : Adding font to Video gives error

css - IE/Edge 中复选框失败的切换布局

javascript - Spring - [CSS, JS, Images] 我超棒的风格在哪里?

css - 为什么@font-face 在 safari 上工作而不在 firefox 上工作? (Mac 版本)

python lxml 我如何在项目名称中使用标签?

javascript - jQuery + Flash 媒体播放或 YouTube : call function after flv finishes playing?

c# - 使用 C# 将视频从 Mp4、avi 格式转换为 wmv 格式

html - Css Accordion 菜单,如何将高度设置为自动?

一页 wordpress 侧边栏的 CSS 特定规则

mysql - 如何避免在 INSERT INTO wordpress 中重复