我有一个锚标签,我给它一个高度和一个背景颜色,但我不能让文本在背景颜色的中间垂直对齐。
我希望文本上方和下方的背景颜色相同,但高度全部添加到文本下方。我不认为我可以使用填充,考虑到执行此操作(请参阅codepen链接),我还尝试了display: table
在父级和table-cell
上的链接等,并应用line-height
。
以下是代码,但codepen will better explain我想做的事情:
HTML:
<div class="border">
<a href="#">Link</a>
</div>
SCSS:
.border {
display: inline-block;
width: 200px;
height: 70px;
border: 2px solid #2BD6C5;
position: relative;
}
a {
display: inline-block;
vertical-align: middle;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
height: 80%;
width: 90%;
text-align: center;
color: #FFF;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
transition: 250ms ease-in;
&:hover {
width: 100%;
height: 100%;
}
}
答案 0 :(得分:3)
我修改了您的代码笔代码。请检查下面的代码,或者您也可以在代码笔上查看。 http://codepen.io/gauravshankar/pen/MYPEKw
body {
background-color: #1d1f20;
}
.border {
display: table;
width: 200px;
height: 70px;
border: 2px solid #2BD6C5;
transition: all 250ms ease-out;
box-sizing: border-box;
border-spacing: 10px;
}
.border:hover {
border-spacing: 0px;
}
a {
display: table-cell;
vertical-align: middle;
text-align: center;
color: #FFF;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
}
<div class="border">
<a href="#">Link</a>
</div>
答案 1 :(得分:1)
只要按钮中只有一行文字,您就可以使用line-height
来调整标签的y位置。
例如,添加
line-height: 50px;
到a
标记几乎将其垂直居中。您可能还需要为它设置动画,但如果您希望它在悬停时也居中。
答案 2 :(得分:1)
将行高添加到<a>
已添加 Demo
a {
line-height:55px;
vertical-align:middle;
}
修改强>
对于悬停,您还需要指定行高以在中间对齐它。你可以尝试这样:
a {
line-height:55px;
}
a:hover {
width: 100%;
height: 100%;
line-height:70px;
position:relative;
}
更新了 Demo
答案 3 :(得分:0)
body {
background-color: rgb(29, 31, 32);
}
.border {
display: inline-block;
width: 200px;
height: 70px;
border: 2px solid #2BD6C5;
position: relative;
}
a {
display: inline-block;
vertical-align: middle;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
/*height: 80%;*/
width: 90%;
text-align: center;
color: #FFF;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
transition: 250ms ease-in;
padding:12px 0px;
&:hover {
width: 100%;
height: 100%;
}
}
&#13;
<div class="border">
<a href="#">Link</a>
</div>
&#13;
删除高度使用填充
a {
display: inline-block;
vertical-align: middle;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/* height: 80%; */
width: 90%;
text-align: center;
color: #FFF;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
transition: 250ms ease-in;
padding: 12px 0px;
}
答案 4 :(得分:0)
您可以将锚点包裹在一个按钮中,文本将自动居中。
<div class="border">
<button><a href="#">Link</a></button>
</div>
a {
color: #FFF;
text-decoration: none;
}
button {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
height: 80%;
width: 90%;
text-align: center;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
transition: 250ms ease-in;
border: none;
cursor: pointer;
&:hover {
width: 100%;
height: 100%;
}
}
答案 5 :(得分:0)
检查此代码。
body {
background-color: rgb(29, 31, 32);
}
.border {
display: inline-block;
width: 200px;
height: 70px;
border: 2px solid #2BD6C5;
position: relative;
}
a {
display: inline-block;
vertical-align: middle;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
height: 80%;
width: 90%;
text-align: center;
color: #FFF;
font: 24px sans-serif;
text-decoration: none;
background-color: #2BD6C5;
transition: 250ms ease-in;
line-height: 55px;
}
a:hover{
width: 100%;
height: 100%;
line-height: 70px;
}
<div class="border">
<a href="#">Link</a>
</div>