示例:http://jsfiddle.net/nDWRm/4/
我想使用css或text或svg创建加号和减号按钮。
我使用css
并使用文字+
和-
符号尝试了此操作,但发现那些从不排队。问题是我可以在100%缩放时看起来相当不错但是当缩放发生变化时,left
和top
值也需要更改以使div再次居中。我还没有尝试过svg。我只是想知道为什么这似乎不可能。
CSS
#container{
height: 1.5em;
width: 1.5em;
border-radius: 5px;
border: 0.1em solid black;
cursor: pointer;
}
.vert{
top: 0.25em;
left: 0.65em;
position:absolute;
width: 0.3em;
height: 1.1em;
background-color: #424A49;
display: block;
}
.horz{
top: 0.65em;
left: 0.25em;
position:absolute;
width: 1.1em;
height: 0.3em;
background-color: #424A49;
display: block;
}
HTML
<div id="container">
<div class="vert"></div>
<div class="horz"></div>
</div>
使用单色字体我做了这个小提琴:
如果您将#container2
的字体大小更改为例如5em
,则会看到它无法正确呈现。在美学上,+
标志有圆角而-
没有,这不是很令人愉快:P。
这个小提琴非常清楚地显示了字体的问题:http://jsfiddle.net/nDWRm/25/
答案 0 :(得分:1)
你可以使用像Courier这样的Monotype字体和jQuery中的显示开关来获得你想要的效果。还使用行高和text-align:center;在文本上让这个在多个缩放中工作。内部div使用100%的高度和宽度,因此将始终填充容器。不需要任何位置,您可以增加字体大小以使符号更大:)
CSS:
#container{
height: 1.5em;
width: 1.5em;
border-radius: 5px;
border: 0.1em solid black;
cursor: pointer;
font-family: Courier;
}
.vert,
.horz{
margin: 0 auto;
width: 100%;
height: 100%;
color: #424A49;
text-align: center;
line-height: 1.5em;
}
.vert
{
display: none;
}
答案 1 :(得分:1)
您不能只使用随机EM值。您必须计算它们才能被浏览器转换为圆形像素值:
http://jsfiddle.net/meo/p7WMW/
(当然你可以不用scss,只需使用http://pxtoem.com/)
在js小提琴上,基本字体大小为16px。因此,您需要这样才能计算您的EM值。
<强> SCSS 强>
$base-font-size: 16px;
@function px2em($px, $contextPXSize : $base-font-size ){
@return ( $px / $contextPXSize ) * 1em;
}
a {
position: relative;
display: block;
margin: 2em;
width: px2em(40px); height: px2em(40px);
background: rgba(0,0,0,.1);
outline: 1px solid #000;
&:after, &:before {
content: "";
position: absolute;
background: black;
left: 50%; top: 50%;
}
&:after {
height: px2em(30px); width: px2em(4px);
margin: px2em(-15px) 0 0 px2em(-2px);
}
&:before {
height: px2em(4px); width: px2em(30px);
margin: px2em(-2px) 0 0 px2em(-15px);
}
&:hover:after {
display: none;
}
}
会导致什么:
<强> CSS 强>
a{
position:relative;
display:block;
margin:2em;
width:2.5em; height:2.5em;
background:rgba(0, 0, 0, .1);
outline:1px solid #000
}
a:after,a:before{
content:"";
position:absolute;
background:#000;
left:50%; top:50%
}
a:after{
height:1.875em;
width:.25em;
margin:-.938em 0 0 -.125em
}
a:before{
height:.25em;
width:1.875em;
margin:-.125em 0 0 -.938em
}
a:hover:after{
display:none
}