好的,如果这是一个重复问题,我很抱歉-但我无法在任何地方找到有效的答案。
我想要两个div(每个宽度为50%)并排放置…左边和右边-在内容div内(请参见下面的照片)
。
我希望他们的最小宽度为300px,一旦页面变得小于600px(即两个div都达到其最小值时),我希望divs换行..所以其中一个在另一个上面。
我试图在这里实现:fiddle 但是遇到了问题。
这里是我想要的:
好的,如果这是一个重复问题,我很抱歉-但我无法在任何地方找到有效的答案。
我想要两个div(每个宽度为50%)并排放置…左边和右边-在内容div内(请参见下面的照片)
。
我希望他们的最小宽度为300px,一旦页面变得小于600px(即两个div都达到其最小值时),我希望divs换行..所以其中一个在另一个上面。
我试图在这里实现:fiddle 但是遇到了问题。
这里是我想要的:
.wrapper
{
text-align: center; /* specifies that the inline-blocks (which are treated
like text here) will be centered. */
font-size: 0; /* Explained later */
max-width: 1000px; /* Your desired max-width */
position: relative; /* These two lines center your wrapper in the page. */
margin: 0 auto;
}
.left, .right{
display: inline-block; /* This will treat these divs like a text element.
This will work with the parent's "text-align: center" to center the element. */
min-width: 300px;
width: 50%;
font-size: 16px; /* Explained below */
vertical-align: text-top; /* Explained below */
}
font-size
。 这是因为这种方法有一个小问题-如果字体大小保持默认值,则font-size:0;
可消除此间隙。 这很奇怪,然后您必须指定子元素的字体大小,但是这样做非常值得,因为使用起来非常方便。vertical-align: text-top;
解决。 这将确保所有Div元素都按顶部对齐,因此它们排列在更愉快的模式中。 这只是使用inline-block时要记住的另一个小问题。 我知道这似乎需要修复很多事情才能实现这么简单的东西,但与您的其他选项相比,使用inline-block
是最干净,最简单的方法。(虽然如果您喜欢,jshanley提供了一种非常好的使用浮动元素的替代方法)为了避免使用inline-block引起的尺寸问题,您可以使用块元素,并将.left
和.right
浮动到左侧,使每个元素的宽度都为50%
。
然后,要使它们堆叠,您需要进行一些计算。由于您指定的包装器宽度为页面宽度的80%
,并且内容的断点为600px
(每个元素300px),因此页面的断点将在750px
处,因为750的80%为600。
您可以创建一个媒体查询,仅在页面宽度小于750px
时应用样式,并将.left
和.right
设置为宽度100%以使它们堆叠。
@media only screen and (max-width: 750px) {
.left, .right {
width: 100%;
}
}
这个实现非常简单,效果也很好。这里提供了示例代码。
我认为@jshanley和@emn178的回答都可以达到目的,但是我想指出一些事情:
display: inline-block; CSS属性不能与float: right或float: left一起使用,因为当您使用float属性时,它总是会自动将display属性设置为block。
既然您正在这样做:
.right{
min-width:100px;
background-color:purple;
height:100%;
margin-left:50%;
display:inline-block;
}
display: inline-block;属性没有起到任何作用。
left
和right
可能具有相同的布局,因此我添加了一个类block
。
使用float:left
和width:50%
,应该可以正常工作。
http://jsfiddle.net/emn178/mzbku/7/
我添加了媒体查询,这应该是你想要的。
但你需要计算如何设置大小。