javascript - 在切换文本时保持恒定的按钮宽度。(CSS 中没有固定宽度)
问题描述
我有一个带有固定填充且没有固定宽度的按钮组件。这个按钮在很多地方都有使用,我希望按钮根据按钮上显示的文本来改变宽度。
我现在正在尝试向按钮添加一个切换微调器,因此当用户单击按钮时,文本消失并显示微调器。我遇到的问题是按钮不断调整大小,因为微调器的宽度与文本不同
export const Buttons = styled.button`
border: 1px solid transparent;
border-radius: 4px;
cursor: pointer;
outline: none;
padding-bottom: 1rem;
padding-left: 2rem;
padding-right: 2rem;
padding-top: 1rem;
`
这些是我当前的按钮样式。
解决方案
如果您不想/可以修复按钮宽度,一个选项(可能不是最好的,但它会起作用)您可以尝试在加载微调器时使按钮文本透明,并将该微调器绝对定位在按钮内. 例如,你可以有类似的东西:
<button>
<span class="text">Press here</button>
<span class="spinner"></spinner>
</button>
//CSS
.spinner {
//Your CSS styles here
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
display: none;
}
当你不加载任何东西时,你.spinner
应该被隐藏(例如,不显示);当您想显示它时,只需更改该显示属性;并使span.text
文本透明。尺寸将始终保持不变,您将获得所需的效果。
button.loading .text {
color: transparent;
}
button.loading .spinner {
display: block;
}
这种解决方法应该可行,也许不是最好的方法,而是一种方法:D
推荐阅读
- sql - 如何从存储过程中的 select 语句中为变量赋值?
- python - 如何在 Python 中获取半球的坐标
- apache - 如果我们更新托管网站的源代码,是否需要重新启动 Apache Web 服务器?
- azure-functions - Azure Functions 在缩减之前需要冷却多长时间?
- java - 从服务器自动下载到我的服务器
- html - 如何设置位于动态元素内的元素的“左侧”
- angular - 带有 selectedIndex 设置 matStepperNext/matStepperPrevious 的角步进器不起作用
- react-native - 反应本机抽屉切换不起作用
- c++ - 从文件中读取数字并将它们存储在数组 c++ 中的问题
- laravel - 添加原始文件后 Laravel 崩溃