需求
css实现按钮文案垂直水平居中,按钮左侧图标相对文字固定距离展示,效果如图:
实现
方案一:使用 margin-right 来实现按钮和左侧图标的间距
代码语言:javascript复制<div class="download-btn">
<div class="btn-content" :class="{'left-icon': showLeftIcon}">
<div class="left-icon">
</div>
<span class="btn-txt">点击查看</span>
</div>
</div>
代码语言:javascript复制 .download-btn {
width: 300px;
height: 48px;
background-color: #47a0ff;
border-radius: 4px;
font-size: 20px;
margin-top: 30px;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
padding: 0 10px;
.btn-content {
width: auto;
display: flex;
align-items: center;
justify-content: center;
&.left-icon {
margin-left: -36px;
}
.left-icon {
width: 30px;
height: 30px;
margin-right: 6px;
}
.btn-txt {
.line-clamp(1); // 限制按钮文字展示一行
line-height: 1;
}
}
}
实现逻辑,将按钮和图标放在同一个 div 里,按钮相对右侧文字,加一个 margin-right,按钮和图标的div 再整体向左移动左侧图标的宽度和左侧图标右间距,以保证按钮文字水平居中展示。
方案二:使用相对定位实现
代码语言:javascript复制<div class="download-btn">
<div class="left-icon">
</div>
<span class="btn-txt" :class="{'left-icon': showLeftIcon}">点击查看</span>
</div>
代码语言:javascript复制.download-btn {
width: 300px;
height: 48px;
background-color: #47a0ff;
border-radius: 4px;
font-size: 20px;
margin-top: 30px;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
padding: 0 10px;
cursor: pointer;
position: relative;
.btn-content {
width: auto;
display: flex;
align-items: center;
justify-content: center;
&.left-icon {
margin-left: -36px;
}
.left-icon {
width: 30px;
height: 30px;
position: relative;
right: 10px;
}
.btn-txt {
.line-clamp(1);
line-height: 1;
position: relative;
text-align: center;
&.left-icon{
right: 10px;
}
}
}
}
实现逻辑,左侧图标相对右侧文字定位加间距,右侧文字右侧再加定位加间距,让文字水平居中。