我有servlet生成的HTML,它有一个表和一个或两个div,具体取决于配置。下面是一个快速示例:
table {
table-layout: fixed;
}
td.td-div {
width: 80%;
}
td.td-text {
background-color: #faf0ff;
width: 20%;
}
div#outer {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
background: #f0fffa;
display: inline-block;
}
div.div-first, div.div-second {
background-color: #ccc;
margin: .1em 0 .1em 0;
padding: 0;
width: 100%;
}
<table>
<tr>
<td class="td-div">
<div id="outer">
<div class="div-first">first div</div>
<div class="div-second">Second div</div>
</div>
</td>
<td class="td-text">It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space.</td>
</tr>
</table>
问题是,我需要div来填充整个td,不管是只有一个还是两个。是否有可能传播第一和第二div,(或者只是伸展第一div,如果没有第二)到只有CSS的单元格?
更新:我需要这些div(“第一div”和“第二div”)是100%的单元格宽度,当两个单元格都有时,是50%的单元格高度,当只有一个单元格时,是100%的高度。
更新:div的数量可以是动态的。
<script>
function spanHeight(selectors, parents) {
var $parents, $selectors;
$parents = $(parents);
$selectors = $parents.find(selectors);
$selectors.css({
height: (100 / $selectors.length + '%')
});
}
spanHeight('.inner', '#outer');
</script>
table {
table-layout: fixed;
border-collapse: collapse;
border: 1px solid red;
}
.td-div {
width: 80%;
position: relative;
vertical-align: top;
}
.td-text {
background: yellow;
width: 20%;
}
#outer {
width: 100%;
height: 100%;
position: absolute;
left: 0;
right: 0;
top;
0;
bottom: 0;
}
.div-first,
.div-second {
background: aqua;
}
.div-second {
background: teal;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<td class="td-div">
<div id="outer">
<div class="inner div-first">
first div
</div>
</div>
</td>
<td class="td-text">
It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty
space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill
this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space.
</td>
</tr>
</table
如果您可以在项目中使用flexbox
,您可能可以执行以下操作:
CSS
td.td-div
{
width: 80%;
position:relative; /*added*/
}
div#outer
{
padding: 0;
margin: 0;
width: 100%;
height: 100%;
background: #f0fffa;
display: flex; /*added*/
flex-direction:column; /*added*/
position:absolute; /*added*/
top:0; /*added*/
}
div.div-first,
div.div-second
{
background-color: #ccc;
margin: .1em 0 .1em 0;
padding: 0;
width: 100%;
height:100%; /*added*/
}
看看这个小提琴的演示。删除div秒
并点击Run in the Fiddle,您将看到第一个div将占据整个td,或者添加第三个div,并看到它均匀地填满整个空间。
更新
要为旧浏览器(看看IE)实现一些功能,可以使用javascript,如(jQuery):
$(function(){
var h = $('table').height() / $('div#outer').children().length;
$('div#outer > div').height(h);
});
该解决方案结合使用CSSdisplay:table
和display:table row
,还需要在容器
JsFiddle演示
table {
table-layout: fixed;
border-collapse: collapse;
border: 1px solid red;
width: 100%;
height: 100%;
}
.td-div {
width: 80%;
}
.td-text {
background: yellow;
width: 20%;
}
#outer {
display: table;
width: 100%;
height: 100%;
}
.div-first, .div-second {
display: table-row;
background: aqua;
}
.div-second {
background: teal;
}
<table>
<tr>
<td class="td-div">
<div id="outer">
<div class="div-first">first div</div>
<div class="div-second">Second div</div>
</div>
</td>
<td class="td-text">It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space.</td>
</tr>
</table>
<br/>
<table>
<tr>
<td class="td-div">
<div id="outer">
<div class="div-first">only div</div>
</div>
</td>
<td class="td-text">It's just a text to fill this empty space. It's just a text to fill this empty space. It's just a text to fill this empty space.</td>
</tr>
</table>
我的情况是: 所以我尝试通过单击另一个div来切换侧栏。它是一个100%高度的边栏,固定在视区的右侧。本质上,我试图将一个300px的div包装在50px宽的切换div和250px宽的侧边栏div周围,并且我想用一个负的右边距像素值来隐藏侧边栏部分。使用.toggle:active选择器(所以当单击toggle div时会发生这种情况),我想通过将边距右的像素值设置回0px来显示侧栏部分。 到目前
问题内容: 我要两个紧挨着。右边大约200px;并且左侧必须填满屏幕的其余宽度?我怎样才能做到这一点? 问题答案: 您可以使用 flexbox 布置物品: 这基本上只是刮擦flexbox的表面。Flexbox可以做很多令人惊奇的事情。 对于较旧的浏览器支持,可以使用CSS float 和 width 属性来解决它。
问题内容: 我在这里做错了什么? 我有一个 ,但在第一个上我想在顶部填充零,在第二个上我想没有底部边框。 我尝试为此首先和最后创建类,但我认为在某处错了: 和HTML 我猜不可能有两个不同的课程吗?如果可以,我该怎么做? 问题答案: 如果要在一个元素上使用两个类,请按以下方式进行操作: 像这样在css中引用它:
以下图片将帮助您了解我的问题: 我想将显示在图像按钮中的图像拉伸到图像按钮的整个区域。如您所见,数字为1的图片仅占图像按钮的95%,您还可以看到图像按钮的边界。 我仍然希望保持图像按钮样式 以下是我如何使用ImageView: 我想我发现了我的问题所在,我需要一个自定义组件,它只能包含一个图像,并且具有点击效果。
老友记.我有两个DIVS。在一个div中,我有几个列表项“li”。我想做的是,每次我悬停在div 1的li上时,我想改变div 2的背景颜色。为此我需要使用css。谢谢. 你好 null 所以我想要的是,当悬停在id为“red”的li上时,将类为“contents”的div的背景颜色更改为红色。使用CSS。这是我的全部Html文件。
问题内容: 情况:我有两个固定高度的div,两个溢出都设置为隐藏,并且第一个div中包含动态文本内容。如果该内容超出了第一个div的溢出边界,我希望它自动溢出到第二个div中。 我的问题就是该怎么做?我进行了研究,发现最接近的是一个JQuery插件,该插件会自动为类似报纸的布局创建列。尽管这并不是我真正需要的,但它确实使我希望可以在一个更简单的级别上实现。 可视示例: 谢谢大家!根据所有输入,我将