我有以下HTML代码(简化)

<div class="media-bar">
    <div class="media-viewer">
        <div class="action-bar">

        </div>
        <div class="media-socket">
            <button></button>
            <div class="input-socket">
                <img class="input-socket-item">
                <video class="input-socket-item"></video>
            </div>
            <button></button>
        </div>
        <div class="media-selector">

        </div>
    </div>
</div>

这个CSS代码:

.media-bar {
    height: 60vh;
    display: flex;
}

.media-viewer {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.media-socket {
    min-height: 300px; /* Temp */
    display: flex;
    flex: auto;
    justify-content: center;
    align-items: center;
}

.input-socket {
    justify-content: center;
}

.input-socket-item {
    object-fit: contain;
    width: 100%;
    height: auto;
}

然而,无论我try 什么,我都无法让.input-socket-title按照我想要的方式zoom (或者说,老实说,除非我手动设置高度!).我希望它能够扩展以适应.input-socket.图像的高度无法正确缩小,因此图像被切断.如果我切换宽度和高度字段,同样的问题仍然存在,但只是切换宽度.如果有任何帮助,我都会非常感激,因为我无法弄清楚这一点.

推荐答案

当使用Flex框而不是使用宽度和高度来设置Element属性时,请try 使用Flex-Shrink和Flex-Grow.在这里,我告诉您的代码缩小图像以适应弹性盒的大小.您的按钮也会增长以填充剩余空间,以保持图像和视频项目的中心.(我还将媒体栏更改为弹性行类型)我也希望我正确理解了你的问题.因为我不太确定你是想调整它还是必须让它响应.为了使该设计响应性强,父元素非常重要.

    .media-bar {
    display: flex;
}

.media-viewer {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    flex: 1;
}

.media-socket {
    display: flex;
    height: 300px;
    flex-direction: row;
    justify-content: center;
    text-align: center;
    align-items: center;
}

.input-socket {
    height: 100%;
    flex-shrink: 1;
}

.input-socket-item {
    max-height: 100%;
}

.flex-button {
    flex-grow: 1;
}

    <div class="media-bar">
        <div class="media-viewer">
            <div class="action-bar">
                actionbar
            </div>
            <div class="media-socket">
                <div class="flex-button">
                    <button>Previous</button>
                </div>
                <div class="input-socket">
                    <img class="input-socket-item" src="null">
                    <video class="input-socket-item"></video>
                </div>
                <div class="flex-button">
                    <button>Next</button>
                </div>
            </div>
            <div class="media-selector">
            </div>
        </div>
    </div>

Html相关问答推荐

HTML CSS如何使用图像作为中心点将元素置于中心

为什么html复选框总是具有只读属性?

z—index总是 destruct 我的头,我该如何修复它?

应用于文本而不是弹性容器的Flexbox属性

嵌套表列高度不是100%高度的问题

调整一组IMG的大小以适应容器DIV

如何设置弹性盒子容器的具体大小?

响应网格,响应调整大小以适应父div,保留父div S自己的响应高度

有没有一种方法可以很容易地将这个div从底部:0转换到顶部:0?

SVG的动态CSS

可以';t使我的导航栏在HTML/CSS中正确对齐

悬停表格单元格文本时,使元素的字体大小更大,同时保持表格单元格的高度不变

HTML 邮箱在 Gmail 中无法正确显示

在Firefox中使用keySplines时,SVG: <animateMotion>不起作用

我可以在标签元素中使用标题元素吗?

如果不透明的元素出现在下方,为什么不透明度会使一个元素出现在另一个元素上方?

为什么相同持续时间的转换需要不同的时间?

基本上,我想要两列包含文本和图像,但第二列是倒置的

文本输入在 Chrome 中保持水平滚动,带有文本溢出:省略号

下拉菜单项在页面加载时显示,需要隐藏直到悬停