【发布时间】:2014-10-06 19:22:06
【问题描述】:
在我的项目中,有两列。左侧包含的图像最大为左列宽度的 100%,并具有自动高度。右边的宽度不同,而左边的则填满剩余的空间。这使用JackJoe's answer 中描述的技术到上一个问题。
我现在要做的是垂直居中高度较小的列。有时右列或左列较短,具体取决于窗口的宽度。我尝试过使用
{
position: relative;
top: 50%;
transform: translateY(-50%); //with more prefixes
}
但是,由于某种原因,top: 50% 部分根本不起作用。这是我当前的代码,没有垂直居中尝试(按预期工作):
$(document).ready(function() {
$("#right").click(function() {
$(this).toggleClass("wide");
});
});
#container {
width: 100%;
border: 1px solid red;
height: auto;
overflow: hidden;
}
#right {
float: right;
border: 1px solid green;
width: 100px;
transition: 1s width;
}
#left {
border: 1px solid green;
width: auto;
overflow: hidden;
}
#left img {
max-width: 100%;
height: auto;
}
#right.wide {
width: 300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
<div id="right">
Click Me
</div>
<div id="left">
<img src="http://placehold.it/440x120"/>
</div>
</div>
编辑:我忘了指定——右列的宽度需要取决于其内容的宽度,就像没有设置宽度的内联块元素元素的宽度一样。我只是在演示中使用了精确的宽度来显示列的流动性。
【问题讨论】:
-
您的右侧列包含文本,根据定义,文本没有固有宽度。那么,什么会控制文本的宽度呢?您可以为图像指定最小宽度,或为右侧文本指定最大宽度。您需要根据您通常对内容的期望做出设计决策。
-
我已经简化了代码,以显示我在说什么。右侧将是一个放大镜按钮,单击该按钮会展开为搜索栏,左侧是图像,一个徽标。因此,表单控制宽度。除了垂直居中部分之外,所有这些现在都可以正常工作。
-
我更新了我的答案以演示扩展右列的显示/隐藏。我认为这个设计会很好用。
标签: jquery html css css-float fluid-layout