【问题标题】:Using Height/Width 100% After Rotating an Element with CSS使用 CSS 旋转元素后使用 100% 的高度/宽度
【发布时间】:2014-11-10 15:42:21
【问题描述】:

我有一个想要旋转的元素(视频),然后使用 100% 的宽度和高度。在应用旋转之前,视频占据 100% 的宽度和高度。旋转后,大小似乎与我旋转前一样。我想重新应用宽度和高度 100% 以使视频适应新状态。

我们的目标是尝试横向呈现视频,即使 div(或手机)处于纵向模式。

这是我正在尝试做的 JSFiddle: http://jsfiddle.net/a1sLp5gn/2/

在小提琴中,单击按钮以查看所需状态的视频。

视频包含在一个容器 div 中,该 div 展示了它被手机屏幕之类的东西框住(红色边框,我想用视频填充这个 div)。

使用单击按钮后运行的 JS,我能够实现我的目标,但我正在以一种丑陋的丑陋方式做到这一点 - 我想知道实现我正在做的事情的合适/最佳方式是什么。

这是 CSS(最好查看我提供的小提琴链接,我只是把它放在这里,因为当有小提琴链接时 stackoverflow 需要一些代码):

video {
      transform:rotate(90deg);
      height:100%;
      width:100%;
}

.container {
      border-style:solid;
      border-width:1px;
      border-color: red;
      height:640px;
      width:360px;
}

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    我希望这可以帮助你: 即使您旋转元素,高度、宽度、左侧和顶部属性也是在未旋转的元素上计算的。您必须考虑容器尺寸并手动反转值。 通常旋转以元素的中心点为参考。 (您可以使用 transorm-origin 进行更改,但在这种情况下,如果视频元素已经居中,则不需要)

    $(function() {
     $('button').click(function() {
    
       var container = $("video").parent()
    
       $('video').height($(container).width());
       $('video').width($(container).height());
    
       $('video').css('position', 'absolute')
       var px = $(container).width() / 2
       var py = $(container).height() / 2
       $('video').css('left', px-py).css('top', py-px);
       //$("video").css({"transform":"rotate(90deg)"})
     });
    });
    

    【讨论】:

    • 谢谢!这可行,并且比我最初的解决方案更好,因此标记为已解决。我希望这可以用纯 CSS 解决,但这仍然可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多