我不是 CSS 专家。有人可以帮助是否可以使用纯 CSS 创建如下所示的列?
3 回答
当考虑描述时,这将成为一个更难的问题。这些条相对容易,并且可以使用一些语义标记来构建(尽管这可能会得到改进):
<ul class="graph">
<li class="height10">
<h1>Category 1</h1>
<div>
<h2>Subtitle</h2>
<p>More text</p>
</div>
</li>
<li class="height9">
<h1>Category 2</h1>
<div>
<h2>Subtitle</h2>
<p>More text</p>
</div>
</li>
</ul>
还有款式,
.height10 { height: 300px; }
.height9 { height: 270px }
/** add more through height1 **/
h1, h2, p { margin: 0; padding: 0; }
h1 { margin: 0.5em; }
li {
margin-right: 0.5em;
display: inline-block;
background: #9f9;
position: relative;
vertical-align: bottom;
}
li div {
margin: 1em;
position: absolute;
left: 0; bottom: 0;
}
这是一个工作演示:http: //jsbin.com/obexew
我添加了几个示例类,假设比例从 1 到 10,尽管手动将高度设置为内联样式或将其设置为数据属性并使用 JavaScript 更新高度可能更实用。我会留给你去弄清楚和决定。
将描述与栏保持在同一元素中可能会很棘手,因为它会造成列与每列中的任意点对齐的情况。无需更多地使用它,我将创建一个单独的描述列表,并对其进行样式设置,使其放置在图表下方,如下所示:
<ul class="graph bars">
<li><!-- stuff here --></li>
</ul>
<ul class="graph descriptions">
<li><!-- description here --></li>
</ul>
然后修改样式,以便在 中应用颜色和位置.bars
,还应用固定的 to.graph li
来对齐条和描述。
复杂性完全取决于您希望布局的灵活性。我建议您深入了解您可以实现的目标,并使用选择器和规则,直到您获得所需的效果。我故意在其中一些点上含糊其辞,以便您有机会了解哪些有效,哪些无效。
假设列可以是固定高度,您可以这样编码:http: //jsfiddle.net/8S5xC/
<style type="text/css">
.col {
width: 100px;
float: left;
background: grey;
margin-right: 10px;
padding: 20px;
position: relative;
}
.col.one {
height: 200px;
}
.col.two {
height: 180px;
margin-top: 20px;
}
.col p.mid {
position: absolute;
bottom: 40px;
border-bottom: 1px solid white;
padding-bottom: 10px;
}
.col p.bottom {
position: absolute;
bottom: 10px;
}
</style>
<div class="col one">
<p class="top">some text here</p>
<p class="mid">some text here</p>
<p class="bottom">some text here</p>
</div>
<div class="col two">
<p class="top">some text here</p>
<p class="mid">some text here</p>
<p class="bottom">some text here</p>
</div>
也许这会给你一些想法: http: //matthewjamestaylor.com/blog/perfect-2-column-left-menu.htm 我通常只使用 div 并通过 css 和/或 javascript 控制它们,这取决于你的列是否是动态的或静态的。更漂亮的方法是 SVG,为此可以在以下位置找到一个整洁的库: http: //g.raphaeljs.com/
祝你今天过得愉快!