有一个页面,其中包含具有不同状态的产品条目列表。我希望每个产品能够使用少量色带,这表明产品的当前状态。
带有功能区的此类列表的示例位于:http://jsfiddle.net/19ren646/
HTML:
<div class="list-group-item">
<h4>Short item</h4>
<p>I don't have that much content really</p>
<div class="ribbon">
<span>Ribbon</span>
</div>
</div>
<div class="list-group-item">
<h4>A much longer item</h4>
<p>I have a lot of content, because I have a Lorem ipsum in me</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos amet, minus maiores adipisci. Neque possimus, iusto odio explicabo. Libero, fugiat.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam, aliquid.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos amet, minus maiores adipisci. Neque possimus, iusto odio explicabo. Libero, fugiat.</p>
<div class="ribbon">
<span>Ribbon</span>
</div>
</div>
CSS:
.list-group-item {
position:relative;
padding:20px;
padding-left:60px;
border:1px solid #ccc;
}
.ribbon {
position:absolute;
top:0;
left:0;
width:40px;
height:100%;
background:blue;
color:white;
}
.ribbon span {
display:block;
transform:rotate(90deg);
}
为节省水平空间,色带旋转90度。但我的问题是,我可以在中间垂直显示色带的文字吗?
我知道我可以按用户position:relative
或margins
向下推送文字,但只有当所有条目的高度都是常数时才能正常工作,但这并不是。那么我可以将文本推送到中间,以适用于.list-group-item
元素的任何高度的方式吗?
答案 0 :(得分:1)
您可以在css中使用绝对定位+翻译功能:
http://jsfiddle.net/19ren646/1/
.ribbon span {
position: absolute;
top:50%;
display:block;
transform:rotate(90deg) translate(-50%);
}
为了与safari兼容,可以使用webkit前缀来定义
.ribbon span {
position: absolute;
top:50%;
display:block;
-webkit-transform: rotate(90deg) translate(-50%);
transform: rotate(90deg) translate(-50%);
}
答案 1 :(得分:0)
试试这个:
.ribbon span {
display:block;
position: relative;
top:50%;
transform:rotate(90deg) translateX(-50%);
text-align:center;
}
<强> fiddle 强>
这在定位_
时应该非常准确答案 2 :(得分:0)
嗨,你可以通过这个来实现。
.ribbon span {
display:block;
transform:rotate(90deg);
top: calc(50% - 1.5em);
position: relative;
}
即使你可以这样做以获得更好的外观
.ribbon span {
display:block;
top:20%;
left:0.6em;
position: relative;
-ms-writing-mode: tb-rl; /* old syntax. IE */
-webkit-writing-mode: vertical-rl;
-moz-writing-mode: vertical-rl;
-ms-writing-mode: vertical-rl;
writing-mode: vertical-rl; /* new syntax */
-webkit-text-orientation: upright;
-moz-text-orientation: upright;
-ms-text-orientation: upright;
text-orientation: upright;
}
这是最后一个的工作演示