可变高度的CSS浮动div
我有无限多个100像素宽的div,可以放入250像素宽的父级。无论高度如何,我都需要按行显示div,如图所示。我试图解决这个问题,但div的高度似乎把它搞砸了 我非常感谢你的帮助。谢谢:)可变高度的CSS浮动div,css,html,css-float,Css,Html,Css Float,我有无限多个100像素宽的div,可以放入250像素宽的父级。无论高度如何,我都需要按行显示div,如图所示。我试图解决这个问题,但div的高度似乎把它搞砸了 我非常感谢你的帮助。谢谢:) #持有者{ 宽度:250px; 边框:1px点蓝色; 显示:内联块; } .盒子{ 宽度:100px; 高度:150像素; 背景色:#CCC; 浮动:左; 文本对齐:居中; 字体大小:45px; 显示:内联块; } .一{ 背景色:#0F0; 高度:200px; } .二{ 背景色:#0FF; } .三{
#持有者{
宽度:250px;
边框:1px点蓝色;
显示:内联块;
}
.盒子{
宽度:100px;
高度:150像素;
背景色:#CCC;
浮动:左;
文本对齐:居中;
字体大小:45px;
显示:内联块;
}
.一{
背景色:#0F0;
高度:200px;
}
.二{
背景色:#0FF;
}
.三{
背景色:#00F;
}
.4{
背景色:#FF0;
}
1.
2.
3.
4.
这是你的电话号码
下面是我使用javascript所做的和实现的
据我所知,纯CSS(适用于所有常见浏览器)无法解决此问题:
- 浮动
显示:内联块
和位置:相对
要求。如果您使用的是服务器端语言,并且您正在处理图像(或具有可预测高度的对象),那么您可以使用服务器端代码“自动”处理像素调整位置:绝对
相反,假设您的需求更像您的彩色示例代码,则使用。:
.box:nth-child(odd){
clear:both;
}
如果是3行,那么第n个孩子(3n+1)在这个注释的帮助下()我找到了答案 在我创建的每一行上,我都添加一个类名
left
在我创建的每一行上,我添加一个类名
right
然后,我为每个类名向左和向右浮动
唯一复杂的是,我的内容顺序在“右”行上是颠倒的,但这可以用PHP解决
谢谢大家的帮助
#支架{
宽度:200px;
边框:1px点蓝色;
显示:内联块;
}
.盒子{
宽度:100px;
高度:150像素;
背景色:#CCC;
浮动:左;
文本对齐:居中;
字体大小:45px;
}
.一{
背景色:#0F0;
高度:200px;
}
.二{
背景色:#0FF;
}
.三{
背景色:#00F;
浮动:对;
}
.4{
背景色:#FF0;
浮动:对;
}
.left{float:left;}
.right{float:right;}
1.
2.
4.
3.
多亏了thirtydot,我意识到我之前的回答没有正确解决问题。这是我的第二次尝试,它利用JQuery作为CSS唯一的解决方案似乎是不可能的:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
var numberOfColumns = 3;
var numberOfColumnsPlusOne = numberOfColumns+1;
var marginBottom = 10; //Top and bottom margins added
var kids = $('#holder:first-child').children();
var add;
$.each(kids, function(key, value) {
add = numberOfColumnsPlusOne+key;
if (add <= kids.length){
$('#holder:first-child :nth-child('+(numberOfColumnsPlusOne+key)+')').offset({ top: $('#holder:first-child :nth-child('+(key+1)+')').offset().top+$('#holder:first-child :nth-child('+(key+1)+')').height()+marginBottom });
}
});
});
</script>
<style>
#holder{
width:270px;
border:1px dotted blue;
display:inline-block; /* Enables the holder to hold floated elements (look at dotted blue line with and without */
}
.box{
width:80px;
height:150px;
background-color:#CCC;
margin:5px;
text-align:center;
font-size:45px;
}
.one{
height:86px;
}
.two{
height:130px;
}
.three{
height:60px;
}
.four{
clear:both;
height:107px;
}
.five{
height:89px;
}
.six{
height:89px;
}
.left{float:left;}
.right{float:right;}
</style>
</head>
<body>
<div id="holder">
<div class="box one left">1</div>
<div class="box two left">2</div>
<div class="box three left">3</div>
<div class="box four left">4</div>
<div class="box five left">5</div>
<div class="box six left">6</div>
</div>
</body>
</body>
$(文档).ready(函数(){
var numberOfColumns=3;
var numberofcolumnspusone=numberOfColumns+1;
var marginBottom=10;//添加了上下页边距
var kids=$('#holder:first child').children();
var-add;
$。每个(子项、函数(键、值){
add=numberOfColumnSpusOne+键;
如果(add正如已经正确指出的那样,仅使用CSS是不可能的……谢天谢地,我现在在中找到了一个解决方案
它似乎完全解决了这个问题。在现代浏览器上,您只需执行以下操作:
display: inline-block;
vertical-align: top;
如果有人仍在寻找替代方案,这里有一个。尝试使用(-moz-/-webkit-)列宽属性。它会解决可变div高度问题。但是列宽会在列的末尾添加新的div
除此之外,jQuery砌体工程效果最好。这可能不是每个人都能找到的确切解决方案,但我发现(非常确切地说)在许多情况下,跳出框框思考是有效的:在许多情况下,您可以先填充左栏,然后再填充中间的框,最后用框填充右栏,而不是从左到右显示框。
您的图像将是:
:
如果您使用的是像php这样的脚本语言,您也可以从左到右填充列,方法是在其中添加一个新框,并在填充所有列时输出。例如(未测试的php代码):
$col1='box1';
$col2='box2';
$col3='box3';
$col1.='box4';//最后一次关闭col1 div
$col2.='box5';
$col3.='box6';
echo$col1.$col2.$col3;
$col1、$col2和$col3可以有float:left和width:33%,将div内的框设置为全宽和无float
显然,如果您使用javascript/jquery动态加载框,那么您最好也采用这种方式设置它们的样式,正如本线程的其他答案所解释的那样。我提供这个答案,因为即使有好的解决方案()仍然不清楚为什么不能通过使用浮动来实现这一点
(这很重要-#1)
一个浮动的元素将尽可能地向左或向右移动
最初的位置
这样说吧:
我们有两个分区
<div class="div5">div5</div>
<div class="div6">div6</div>
.div-blue{
width:100px;
height:100px;
background: blue;
}
.div-red{
width:50px;
height:50px;
background: red;
}
我们有这个
如果我们将clear:right
设置为div5
,我们将强制它使用下面的行div4
和div6
将在新行中浮动,无论是向右还是向左
现在让我们用一个问题作为例子,这个问题是由于一个重复的问题把我带到这里来的
下面是测试它的代码段:
div{
宽度:24%;
保证金权利:1%;
浮动:左;
边缘顶部:5px;
颜色:#fff;
字体大小:24px;
文本对齐:居中;
}
.一{
背景色:红色;
高度:50px;
}
.二{
背景颜色:绿色;
高度:40px;
}
.三{
背景颜色:橙色;
高度:55px;
}
.4{
背景色:洋红色;
他
$col1 = '<div class="col1"> <div>box1</div>';
$col2 = '<div class="col2"> <div>box2</div>';
$col3 = '<div class="col3"> <div>box3</div>';
$col1 .= '<div>box4</div> </div>'; //last </div> closes the col1 div
$col2 .= '<div>box5</div> </div>';
$col3 .= '<div>box6</div> </div>';
echo $col1.$col2.$col3;
<div class="div5">div5</div>
<div class="div6">div6</div>
.div-blue{
width:100px;
height:100px;
background: blue;
}
.div-red{
width:50px;
height:50px;
background: red;
}
<div class="div4">div4</div>
<div class="div5">div5</div>
<div class="div6">div6</div>
.div-gree{
width:150px;
height:150px;
background: green;
float:right;
}
.Your_Outer {
background-color: #FFF;
border: 1px solid #aaaaaa;
float: none;
display:inline-block;
vertical-align:top;
margin-left: 5px;
margin-bottom: 5px;
min-width: 152.5px;
max-width: 152.5px;
}