如何在调整大小时动态地将按钮内的文本居中?
How can I dynamically center the text inside of a button as it gets resized?
当我调整视口大小时,我的按钮文本开始离开按钮区域。如果我添加 display:flex、justify-content:center 以及 align-items:center,那么整个按钮就会移位并且与列表不一致。
.textList{
margin-top:2vh;
margin-bottom:2vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
font-size:2vh;
font-weight:700;
}
.btn{
text-decoration:none;
width:4.5vw;
height:3.5vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: white;
color:white;
font-family: 'Lato', sans-serif;
border-radius:1vw;
font-weight:700;
font-size:1.75vh;
position:absolute;
right:0;
vertical-align:middle;
text-align:center;
}
#listArea{
position:absolute;
top: 25vh;
width:25vw;
height:35vh;
border-style:solid;
border-width:0.75vw;
border-image-source: linear-gradient(to left, #743ad5, #d53a9d);
border-image-slice:3;
background:white;
font-size:2vh;
}
<div id="listArea">
<ul id="divArea">
<li class="textList">
<input class="editField">
<button class="btn">Delete</button>
<button class="edit">Edit</button>
</li>
</ul>
</div>
这里是项目的link:https://todolist.ibrahimshah.repl.co/
When I resize the viewport, my button's text begins to leave the area
of the button.
您已经使用 text-align:center
将按钮中的文本居中。离开按钮边界的文本不是居中问题,而是溢出问题。正如我常说的,5 加仑的水桶不能装 10 加仑的水。您应该向您的按钮添加一个 min-width
,这样它就永远不会小于其内容。您还应该考虑在 #listArea
中添加一个 min-width
以防止 li
及其内容溢出方框。
.textList{
margin-top:2vh;
margin-bottom:2vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
font-size:2vh;
font-weight:700;
}
.btn{
text-decoration:none;
width:4.5vw;
min-width:50px; /* <-- Don't let the button get too small */
height:3.5vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: white;
color:white;
font-family: 'Lato', sans-serif;
border-radius:1vw;
font-weight:700;
font-size:1.75vh;
position:absolute;
right:0;
vertical-align:middle;
text-align:center;
}
#listArea{
position:absolute;
top: 25vh;
width:25vw;
height:35vh;
border-style:solid;
border-width:0.75vw;
border-image-source: linear-gradient(to left, #743ad5, #d53a9d);
border-image-slice:3;
background:white;
font-size:2vh;
}
<div id="listArea">
<ul id="divArea">
<li class="textList">
<input class="editField">
<button class="btn">Delete</button>
<button class="edit">Edit</button>
</li>
</ul>
</div>
有多种方法可以做到这一点,标准方法是使用 text-align:center;但这只适用于水平轴,如果你想无论按钮大小和形状如何都将文本水平和垂直居中,你可以使用 flex 定位,如按钮示例 2 所示。
示例:
.btn {background:#ff0000;color:white;font-size:20px;padding:8px 32px;width:100%;text-align:center;margin:20px auto;max-width:600px;height:10vh;}
.btn2 {background:#ff0000;color:white;font-size:20px;padding:8px 32px;width:100%;display:flex;justify-content:center;align-items:center;margin:20px auto;max-width:600px;height:10vh}
<div class="btn">View More</div>
<div class="btn2">View More</div>
当我调整视口大小时,我的按钮文本开始离开按钮区域。如果我添加 display:flex、justify-content:center 以及 align-items:center,那么整个按钮就会移位并且与列表不一致。
.textList{
margin-top:2vh;
margin-bottom:2vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
font-size:2vh;
font-weight:700;
}
.btn{
text-decoration:none;
width:4.5vw;
height:3.5vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: white;
color:white;
font-family: 'Lato', sans-serif;
border-radius:1vw;
font-weight:700;
font-size:1.75vh;
position:absolute;
right:0;
vertical-align:middle;
text-align:center;
}
#listArea{
position:absolute;
top: 25vh;
width:25vw;
height:35vh;
border-style:solid;
border-width:0.75vw;
border-image-source: linear-gradient(to left, #743ad5, #d53a9d);
border-image-slice:3;
background:white;
font-size:2vh;
}
<div id="listArea">
<ul id="divArea">
<li class="textList">
<input class="editField">
<button class="btn">Delete</button>
<button class="edit">Edit</button>
</li>
</ul>
</div>
这里是项目的link:https://todolist.ibrahimshah.repl.co/
When I resize the viewport, my button's text begins to leave the area of the button.
您已经使用 text-align:center
将按钮中的文本居中。离开按钮边界的文本不是居中问题,而是溢出问题。正如我常说的,5 加仑的水桶不能装 10 加仑的水。您应该向您的按钮添加一个 min-width
,这样它就永远不会小于其内容。您还应该考虑在 #listArea
中添加一个 min-width
以防止 li
及其内容溢出方框。
.textList{
margin-top:2vh;
margin-bottom:2vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
font-size:2vh;
font-weight:700;
}
.btn{
text-decoration:none;
width:4.5vw;
min-width:50px; /* <-- Don't let the button get too small */
height:3.5vh;
background: linear-gradient(to left, #743ad5, #d53a9d);
-webkit-text-fill-color: white;
color:white;
font-family: 'Lato', sans-serif;
border-radius:1vw;
font-weight:700;
font-size:1.75vh;
position:absolute;
right:0;
vertical-align:middle;
text-align:center;
}
#listArea{
position:absolute;
top: 25vh;
width:25vw;
height:35vh;
border-style:solid;
border-width:0.75vw;
border-image-source: linear-gradient(to left, #743ad5, #d53a9d);
border-image-slice:3;
background:white;
font-size:2vh;
}
<div id="listArea">
<ul id="divArea">
<li class="textList">
<input class="editField">
<button class="btn">Delete</button>
<button class="edit">Edit</button>
</li>
</ul>
</div>
有多种方法可以做到这一点,标准方法是使用 text-align:center;但这只适用于水平轴,如果你想无论按钮大小和形状如何都将文本水平和垂直居中,你可以使用 flex 定位,如按钮示例 2 所示。
示例:
.btn {background:#ff0000;color:white;font-size:20px;padding:8px 32px;width:100%;text-align:center;margin:20px auto;max-width:600px;height:10vh;}
.btn2 {background:#ff0000;color:white;font-size:20px;padding:8px 32px;width:100%;display:flex;justify-content:center;align-items:center;margin:20px auto;max-width:600px;height:10vh}
<div class="btn">View More</div>
<div class="btn2">View More</div>