javascript - CSS:强制视频显示全高并以纵向手持设备为中心

标签 javascript android html css landscape-portrait

我正在开发全屏 Bootstrap 4 轮播。幻灯片不包含图像,而是包含视频 和标题。

在手机上,我希望视频占据屏幕的整个高度并在纵向方向上保持居中,手持设备。

#full_slider {
  overflow: hidden;
  background: #010001;
}

#full_slider .carousel-item {
  overflow: hidden;
  transition: transform 1.6s ease-in-out;
  height: 100vh;
  justify-content: center;
  align-items: center;
}

#full_slider .carousel-item video {
  position: absolute;
  left: 0;
  top: 0;
  width: 100vw;
  top: 50%;
  transform: translateY(-50%);
  height: auto;
  z-index: -1;
}

#full_slider .carousel-item .video-caption {
  max-width: 768px;
  padding: 0 65px;
  color: #fff;
}

#full_slider .carousel-item h3 {
  font-weight: 900;
}

#full_slider .carousel-item.active {
  display: flex !important;
  position: relative;
}

#full_slider .carousel-item.left-slide,
#full_slider .carousel-item.right-slide {
  display: flex !important;
}

#full_slider .carousel-item-left,
#full_slider .carousel-item-right {
  display: flex !important;
}

@media screen and (orientation: portrait) {
  #full_slider video {
    height: 100vh !important;
    width: auto !important;
  }
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<div class="page-wrapper">
  <div id="full_slider" class="carousel slide" data-ride="carousel" data-interval="false">
    <div class="carousel-inner" role="listbox">
      <div class="carousel-item active">
        <video src="http://code-love.tk/demos/prop/video/eroi.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Eroi si Necunoscuti</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>

      <div class="carousel-item">
        <video src="http://code-love.tk/demos/prop/video/meda.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Salam de Casa Extra</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>

      <div class="carousel-item">
        <video src="http://code-love.tk/demos/prop/video/silva.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Berea e noua</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>
    </div>

    <a class="carousel-control-prev" href="#full_slider" data-slide="prev">
    <span class="carousel-control-prev-icon"></span>
  </a>
    <a class="carousel-control-next" href="#full_slider" data-slide="next">
    <span class="carousel-control-next-icon"></span>
  </a>
  </div>
</div>

通过我的肖像专用 CSS,我设法强制全高自动,以便视频保持适当的比例。但是我没有成功地将视频居中。

我该如何实现?

最佳答案

我已经更新了您的纵向媒体查询样式。

@media screen and (orientation: portrait) {
  #full_slider .carousel-item video {
    height: 100vh !important;
    width: auto !important;
    left: 50%;
    top: 0;
    transform: translateX(-50%);
  }
}

#full_slider {
  overflow: hidden;
  background: #010001;
}

#full_slider .carousel-item {
  overflow: hidden;
  transition: transform 1.6s ease-in-out;
  height: 100vh;
  justify-content: center;
  align-items: center;
}

#full_slider .carousel-item video {
  position: absolute;
  left: 0;
  top: 0;
  width: 100vw;
  top: 50%;
  transform: translateY(-50%);
  height: auto;
  z-index: -1;
}

#full_slider .carousel-item .video-caption {
  max-width: 768px;
  padding: 0 65px;
  color: #fff;
}

#full_slider .carousel-item h3 {
  font-weight: 900;
}

#full_slider .carousel-item.active {
  display: flex !important;
  position: relative;
}

#full_slider .carousel-item.left-slide,
#full_slider .carousel-item.right-slide {
  display: flex !important;
}

#full_slider .carousel-item-left,
#full_slider .carousel-item-right {
  display: flex !important;
}

@media screen and (orientation: portrait) {
  #full_slider .carousel-item video {
    height: 100vh !important;
    width: auto !important;
    left: 50%;
    top: 0;
    transform: translateX(-50%);
  }
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<div class="page-wrapper">
  <div id="full_slider" class="carousel slide" data-ride="carousel" data-interval="false">
    <div class="carousel-inner" role="listbox">
      <div class="carousel-item active">
        <video src="http://code-love.tk/demos/prop/video/eroi.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Eroi si Necunoscuti</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>

      <div class="carousel-item">
        <video src="http://code-love.tk/demos/prop/video/meda.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Salam de Casa Extra</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>

      <div class="carousel-item">
        <video src="http://code-love.tk/demos/prop/video/silva.mp4" autoplay loop muted></video>
        <div class="video-caption">
          <h3 class="capt text-boldest text-center text-md-left">Berea e noua</h3>
          <p class="allcases text-center text-md-left">
            <a class="inherit" href="caz.html">Studiu de caz</a>
          </p>
        </div>
      </div>
    </div>

    <a class="carousel-control-prev" href="#full_slider" data-slide="prev">
      <span class="carousel-control-prev-icon"></span>
    </a>
    <a class="carousel-control-next" href="#full_slider" data-slide="next">
      <span class="carousel-control-next-icon"></span>
    </a>
  </div>
</div>

关于javascript - CSS:强制视频显示全高并以纵向手持设备为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917740/

相关文章:

javascript - javascript 对象中的属性是否使用 ""有什么区别?

javascript - 将光标更改为 'move' 上的 'dragstart'

java - 如何将 ArrayList<string> 传递到 BasicNameValuePair

html - 背景图片设置在 HTML 标签下,但无法滚动查看完整图片

javascript - 变量设置/定义有问题吗?

Android Honeycomb - 更改 Actionbar 样式

java - 使用 PHP 从 Android 应用程序向 MySQL 数据库中插入值不起作用?

javascript - 如何实现滑动监听器?

html - Foundation 5.2.2 的下拉菜单?

javascript - 在HTML中集成Javascript资源 : what's the best way?