html - 如何在范围输入滑块旁边居中文本的垂直对齐
问题描述
我有一个范围输入滑块,两边都有我想以不同方式对齐的文本。
理想情况下,如果我能提供帮助,我不想更改文本大小,但会将其视为最后的手段(我已经尝试过,但没有成功)。
另外,我已经尝试过这个问题中概述的建议: CSS:如何在“div”中垂直对齐“标签”和“输入”?
这是我的html:
<div>
<span class="slider-left"><span id="slider-reset" class="slider-reset">Label</span></span><span class="slider-center"><input id="slider" class="slider" type="range" min="0" max="100" value="100"></span><span id="slideroutput" class="slider-output slider-right"></span>
</div>
和我的CSS:
.slider-left {
width: 75px;
text-align: right;
margin-right: 10px;
float: left;
}
.slider-center, .slider {
width: 170px;
}
.slider-right {
width: 50px;
text-align: left;
margin-left: 10px;
float: right;
}
这就是它的外观:
如您所见,与滑块相比,文本感觉高了几个像素,滑块的中心似乎与文本底部对齐。我希望滑块的水平中心与文本的水平中心对齐。
提前致谢!
解决方案
考虑使用 flexbox来解决垂直对齐问题,如下所述:
.slider {
/* Use flexbox for slider wrapper element */
display:flex;
/* Direct alignment of content along horizontal axis */
flex-direction:row;
/* Tell's flexbox to center content around the non-horizontal axis (ie around the vertical axis) */
align-items:center;
}
.slider-label {
width:75px;
}
.slider-input {
/* Causes the input element to horizontally stretch to fill in available horizontal space */
flex:1;
}
.slider-value {
width: 100px;
}
<div class="slider">
<span class="slider-label">Label</span>
<input id="slider" class="slider-input" type="range" min="0" max="100" value="100" />
<span id="slideroutput" class="slider-value">100</span>
</div>
为了更好地了解 flexbox 的工作原理,您可能会发现这些交互式 Playground 很有帮助:
推荐阅读
- node.js - 防止Nodejs sql select中的竞争条件 - 更新插入
- c++ - 以编程方式获取 Windows 安装程序错误消息
- c++ - 本机 webrtc - 编译错误 - ld.lld:错误:无法创建动态重定位 R_X86_64_32
- java - Java运行带有项目列表的switch case方法
- reactjs - cPanel 部署的 MERN 结构
- .net-core - 用于多个 Azure Functions 的 Azure Devops 发布管道
- next.js - SSG 页面的 NextJS 不区分大小写的路由
- amazon-web-services - 我想从python中的字典对象下面获取特定键(sp_puser,sp_pkey)的值,任何人都可以建议
- vue.js - vue 全局组件与烤肉串案例
- php - 用户 ID 删除 @ 并转换“.” 进入 ”-”