斜杠的样式
Style for a slash
我想在两个数字之间添加一条大斜线,以获得如下图所示的输出:
我正在尝试使用 /
添加斜线,但效果不太好(它显示在数字之后,而不是数字下方)。有没有办法让输出接近上图?
<div class="box">
<span class="top">41</span>
<span class="line">/</span>
<span class="bottom">50</span>
</div>
.top {
font-size: 100px;
font-weight: bold;
}
.line {
font-size: 100px
}
JSFiddle:
http://jsfiddle.net/jxk8fvus/
这样做:
.line {
width: 80px;
height: 80px;
border-bottom: 1px solid black;
-webkit-transform: translateY(50px) translateX(5px) rotate(135deg);
-ms-transform: translateY(50px) translateX(5px) rotate(135deg);
-o-transform: translateY(50px) translateX(5px) rotate(135deg);
transform: translateY(50px) translateX(5px) rotate(135deg);
position: absolute;
}
玩数字。
使用倾斜变换
此方法使用以下内容:
- 具有
transform: skew(-45deg)
的伪元素,其 border-left
生成类似于斜杠字符的行。
- 包含数字的两个
span
的绝对定位。像 span
这样的分子相对于左上角定位,而像 span
这样的分母相对于右下角定位。
如果您想支持 IE8 及更低版本,此方法的一个潜在缺点是浏览器支持。
.box {
position: relative;
height: 150px;
width: 150px;
}
.top, .bottom {
position: absolute;
font-weight: bold;
}
.top{
top: 0px;
left: 0px;
font-size: 100px;
}
.bottom {
bottom: 0px;
right: 0px;
font-size: 25px;
}
.box:after {
position: absolute;
content: '';
bottom: 0px;
right: 0px;
height: 60%;
width: 0%;
border-left: 1px solid;
transform: skew(-45deg);
transform-origin: top left;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="box">
<span class="top">41</span>
<span class="bottom">50</span>
</div>
使用斜杠字符
此方法使用以下内容:
- 用于生成斜线的普通斜线字符。
display
属性 的容器元素的数字和斜杠字符设置为 inline-block
。
- 为每个容器适当
vertical-align
设置,使它们看起来像分数。
如果您想支持旧版本的 IE,这种方法很有用。缺点是斜杠字符不允许对斜杠的角度进行太多控制。
.top {
font-size: 50px;
vertical-align: top;
margin-top: 10px;
}
.bottom {
font-size: 25px;
vertical-align: bottom;
margin-bottom: 20px;
}
.line {
font-size: 100px;
vertical-align: middle;
}
.top, .bottom{
font-weight: bold;
}
.box * {
display: inline-block;
}
<div class="box">
<span class="top">41</span><!--
--><span class="line">/</span><!--
--><span class="bottom">50</span>
</div>
注意: 第二个代码段中的 <!-- -->
是为了避免 inline-block
元素之间出现额外的 space。
使用渐变
此方法使用以下内容:
- 一个有角度的
linear-gradient
设置为父盒子容器的background
。
display
属性 的容器元素设置为 inline-block
的数字以及适当的 vertical-align
设置。
这种方法的优点是它不使用任何额外的 real/pseudo 元素。缺点是浏览器对渐变的支持相对较低。
.box {
height: 125px;
width: 125px;
font-size: 100px;
background: linear-gradient(to top left, transparent 49.5%, black 49.5%, black 50.5%, transparent 50.5%);
background-size: 75% 75%;
background-position: 100% 100%;
background-repeat: no-repeat;
}
.top {
font-size: 75px;
vertical-align: top;
margin-top: 10px;
}
.bottom {
font-size: 25px;
vertical-align: bottom;
margin-left: -10px;
}
.box * {
display: inline-block;
font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="box">
<span class="top">41</span>
<span class="bottom">50</span>
</div>
我想在两个数字之间添加一条大斜线,以获得如下图所示的输出:
我正在尝试使用 /
添加斜线,但效果不太好(它显示在数字之后,而不是数字下方)。有没有办法让输出接近上图?
<div class="box">
<span class="top">41</span>
<span class="line">/</span>
<span class="bottom">50</span>
</div>
.top {
font-size: 100px;
font-weight: bold;
}
.line {
font-size: 100px
}
JSFiddle: http://jsfiddle.net/jxk8fvus/
这样做:
.line {
width: 80px;
height: 80px;
border-bottom: 1px solid black;
-webkit-transform: translateY(50px) translateX(5px) rotate(135deg);
-ms-transform: translateY(50px) translateX(5px) rotate(135deg);
-o-transform: translateY(50px) translateX(5px) rotate(135deg);
transform: translateY(50px) translateX(5px) rotate(135deg);
position: absolute;
}
玩数字。
使用倾斜变换
此方法使用以下内容:
- 具有
transform: skew(-45deg)
的伪元素,其border-left
生成类似于斜杠字符的行。 - 包含数字的两个
span
的绝对定位。像span
这样的分子相对于左上角定位,而像span
这样的分母相对于右下角定位。
如果您想支持 IE8 及更低版本,此方法的一个潜在缺点是浏览器支持。
.box {
position: relative;
height: 150px;
width: 150px;
}
.top, .bottom {
position: absolute;
font-weight: bold;
}
.top{
top: 0px;
left: 0px;
font-size: 100px;
}
.bottom {
bottom: 0px;
right: 0px;
font-size: 25px;
}
.box:after {
position: absolute;
content: '';
bottom: 0px;
right: 0px;
height: 60%;
width: 0%;
border-left: 1px solid;
transform: skew(-45deg);
transform-origin: top left;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="box">
<span class="top">41</span>
<span class="bottom">50</span>
</div>
使用斜杠字符
此方法使用以下内容:
- 用于生成斜线的普通斜线字符。
display
属性 的容器元素的数字和斜杠字符设置为inline-block
。- 为每个容器适当
vertical-align
设置,使它们看起来像分数。
如果您想支持旧版本的 IE,这种方法很有用。缺点是斜杠字符不允许对斜杠的角度进行太多控制。
.top {
font-size: 50px;
vertical-align: top;
margin-top: 10px;
}
.bottom {
font-size: 25px;
vertical-align: bottom;
margin-bottom: 20px;
}
.line {
font-size: 100px;
vertical-align: middle;
}
.top, .bottom{
font-weight: bold;
}
.box * {
display: inline-block;
}
<div class="box">
<span class="top">41</span><!--
--><span class="line">/</span><!--
--><span class="bottom">50</span>
</div>
注意: 第二个代码段中的 <!-- -->
是为了避免 inline-block
元素之间出现额外的 space。
使用渐变
此方法使用以下内容:
- 一个有角度的
linear-gradient
设置为父盒子容器的background
。 display
属性 的容器元素设置为inline-block
的数字以及适当的vertical-align
设置。
这种方法的优点是它不使用任何额外的 real/pseudo 元素。缺点是浏览器对渐变的支持相对较低。
.box {
height: 125px;
width: 125px;
font-size: 100px;
background: linear-gradient(to top left, transparent 49.5%, black 49.5%, black 50.5%, transparent 50.5%);
background-size: 75% 75%;
background-position: 100% 100%;
background-repeat: no-repeat;
}
.top {
font-size: 75px;
vertical-align: top;
margin-top: 10px;
}
.bottom {
font-size: 25px;
vertical-align: bottom;
margin-left: -10px;
}
.box * {
display: inline-block;
font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="box">
<span class="top">41</span>
<span class="bottom">50</span>
</div>