【问题标题】:CSS: video centered and resized between header and footerCSS:视频居中并在页眉和页脚之间调整大小
【发布时间】:2018-02-21 18:53:26
【问题描述】:

我在页面中居中和调整 video.js 大小时遇到​​困难,我想设置响应式大小并且永远不会超出页眉和页脚的边界,无论如何,在它们内部。

这是我的起点,基本上我需要放一个视频,而不是更大的黑色方块是可能的,但不要执行页眉和页脚边界,最好是在页脚上获取 video.js 控制栏相同的宽度。 有没有人可以帮我找到一个好的解决方案? 非常感谢!

html:

                <!doctype html>
                <html>
                <head>
                <meta charset="UTF-8">
                <title>title</title>
            <link href="//vjs.zencdn.net/6.6.3/video-js.min.css" rel="stylesheet">
            <script src="//vjs.zencdn.net/6.6.3/video.min.js"></script>
            <script src="http://reference.dashif.org/dash.js/nightly/dist/dash.all.min.js"></script>
<script src="https://github.com/videojs/videojs-contrib-dash/releases/download/v2.9.1/videojs-dash.min.js"></script>

                <style type="text/css">

           .video-js .vjs-current-time { display: none; }
           .video-js .vjs-time-divider { display: none; }
           .video-js .vjs-duration { display: none; }
           .video-js .vjs-progress-control { display: none; }
           .video-js .vjs-remaining-time { display: none; right: auto;} 

                 body,html{
                    margin:0;
                    padding: 0;
                    background-color: white;
                }   

                * {
                    box-sizing: border-box;
                }       

                .head {
                     position: relative;
                    display: block;
                    padding: 8px;
                    float: left;
                }
                .head:after {
                    content: "";
                    display: table;
                    clear: both;
                }   
                .left {
                width: 75%;
                background-color: #FF5A00;
                }

                .right {
                    width: 25%;
                    background-color: #FFFFFF;
                }

                    img {
                    vertical-align: middle;
                }   

                .cent
                {

                    height:50px;
                    width:50px;
                    background-color:black;
                    margin:auto;
                    position:absolute;
                    left:50%;
                    top:50%;
                    margin-left:-25px;
                    margin-top:-25px;
                }

                    .footer {
                  position: absolute;
                  right: 0;
                  bottom: 0;
                  left: 0;
                  padding: 1rem;
                  background-color: #efefef;
                  text-align: center;
                        font-family: 'titles', Fallback, sans-serif;
                    font-size: 100%;
                    font-weight: normal;
                    letter-spacing: 1px;
                }
                    </style>
                </head>

                <body>
                    <div header="head">
                  <div class="head left">
                <img src="logos.png" alt="logo" height="20">
                  </div>
                <div class="head right">
                <img src="logos.png" alt="logo" height="20">
                  </div></header>
                <div class="cent">
        <video id=tv-video class="video-js vjs-fluid vjs-default-skin vjs-show-big-play-button-on-pause vjs-big-play-centered" controls autoplay preload="auto"></video>
          <script>
          var player = videojs('tv-video');
          player.src({ src: 'video/manifest.mpd', type: 'application/dash+xml'});
          player.play();
              player.on("pause", function () {
                player.one("play", function () {
                  player.src({"type":player.currentType(), "src":player.currentSrc()});
                  player.play();
                });
              });
        </script>
        </div>
                <footer class="footer"><img src="firma.png" alt="logo" height="20"></footer>

                </body>
                </html>

【问题讨论】:

  • 要播放的视频是 16:9
  • 你的目标是拥有一个全屏(我的意思是非滚动)网页,以便页眉始终位于顶部,页脚始终位于底部,视频占据其余部分空间? (另外,题外话,但是:如果我可以问,那是什么字体?)
  • 是的!在页脚上方有播放器控件,并且从不滚动条
  • @chriskirknielsen 是用 flash 绘制的,我从仿生系统字体和 TDR 设计师共和国的东西中汲取灵感

标签: html css video.js live-streaming


【解决方案1】:

注意事项

首先,请注意您的源代码有错误,尤其是您的标题标签。我已经在下面的代码中修复了它们,以及其他各种改进。

我只保留了&lt;body&gt; 标签的内容,因为这是有趣的部分,我不能使用你的JavaScript,因为它链接到本地​​资源。之后您可以在闲暇时操作代码以使其按您的意愿工作,因为我无法预测 video.js 将如何工作。

改进

body 现在有一个 display: flex; 值来利用 flexbox 的强大功能。这允许您拥有一个灵活的系统,无论屏幕大小如何,页眉和页脚都以相同的大小保持在相同的位置(顶部和底部)。

页眉现在使用&lt;header&gt; 标签,类似于&lt;footer&gt; 用于页脚。还使用display: flex; 来避免在您的元素上使用float

出于语义原因,该内容有一个 &lt;main&gt; 标签,但我保留了您的 .cent 类名,它有一些与 flex 相关的 CSS:flex 占用空间,align-self 指示如何在body 的 flex 上下文(尽管后者不是必需的 - 它可以在没有 - 的情况下工作,但它是作为预防措施存在的)。

视频只是占用了widthheight可用的100%。

您可以想象,如果屏幕不是按照 16:9 的比例显示,您就无法强制屏幕显示该比例。 &lt;video&gt; 的默认行为是按比例缩小视频,因此如果您有 16:9 比例的视频文件,它将以 16:9 播放,但垂直或水平两侧可能会有黑条。

代码

* {
  box-sizing: border-box;
}

body,
html {
  margin: 0;
  padding: 0;
  height: 100vh;
  background-color: white;
}

body {
  display: flex;
  flex-direction: column;
}

img {
  vertical-align: middle;
}

.header {
  display: flex;
}

.head {
  padding: 8px;
}

.left {
  width: 75%;
  background-color: #FF5A00;
}

.right {
  width: 25%;
  background-color: #FFFFFF;
}

.cent {
  position: relative;
  flex: 1 1 auto;
  align-self: stretch;
  background-color: black;
}

.video-js {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

.footer {
  padding: 1rem;
  background-color: #efefef;
  text-align: center;
  font-family: 'titles', Fallback, sans-serif;
  font-size: 100%;
  font-weight: normal;
  letter-spacing: 1px;
}
<!-- Content of the <body> tag -->
<header class="header">
  <div class="head left">
    <img src="logos.png" alt="logo" height="20">
  </div>
  <div class="head right">
    <img src="logos.png" alt="logo" height="20">
  </div>
</header>

<main class="cent">
  <video id="tv-video" class="video-js vjs-fluid vjs-default-skin vjs-show-big-play-button-on-pause vjs-big-play-centered" controls autoplay preload="auto"></video>
</main>

<footer class="footer">
  <img src="firma.png" alt="logo" height="20">
</footer>

【讨论】:

  • 谢谢你的帮助,我以为有很多错误,试过了,但是你放大页面,视频侵入页眉,现在视频以页脚结束(之前可能会随着滚动条变大) ,但滚动条仍然存在。
  • 我包含两个js文件:
  • 恐怕我不明白你到底发生了什么。如果你运行上面的代码 sn -p 并把它放在整页中,应该不会显示滚动条。
  • 感谢克里斯,这是向前迈出的许多步,你是对的,整页没有滚动条,一切都很好,但是如果我在 safari 和 chrome 中调整窗口大小,视频会侵入标题,你能注意到吗?
  • 我已经更新了我的解决方案,通过将视频绝对定位在其容器内来纠正我认为存在的问题。让我知道跨浏览器的效果如何(对我来说,在 Chrome、Safari 和 Firefox 上都很好)。
猜你喜欢
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多