html - 垂直对齐跨度:相对于文本之后
问题描述
我制作了一个带有“列表项目符号”链接的菜单,对悬停做出反应,就像这样。
每个项目都由一个span包裹,并使用:after创建项目符号。
项目符号与文本底部垂直对齐,我希望它们居中。
但是,尝试通过使用vertical-align: middle;
(以及我可以设法找到的任何其他方式)将其居中会导致此结果(检查它显示文本正确居中于容器上)并且我似乎找不到任何方法来正确获取它居中。
这是小提琴。
解决方案
如果这段代码满足你的需要,你可以试试:
%linkBase {
$fontSize: 40px;
line-height:40px;
font-size: $fontSize;
position:relative;
&::after {
$bulletHeight: $fontSize * 0.8;
content: '';
display: inline-block;
width: 2px;
height: 40px;
background-color: black;
top:50%;
position:absolute;
margin-top:-20px;
}
}
.link {
@extend %linkBase;
}
.linkCentered {
@extend %linkBase;
}
这个想法是您将原始链接设置为相对,然后将“之后”元素设置为绝对定位。然后将该元素的“顶部”设置为 50%,将其向下推一半,然后以一半高度的边距顶部将其拉回。这是使项目居中的常用方法。
推荐阅读
- jquery - 如何使用 jQuery 选择第 m 个元素的第 n 个子元素
- typescript - 如何可靠地检测 TSLint 中的 TypeScript SyntaxKind?
- jquery - vue项目中如何安装jquery
- graph - Gremlin 获取存在连接它们的双向边的顶点
- javascript - 一个按钮运行一个功能,第二个按钮运行不同的功能,但前提是第一个功能运行
- amazon-web-services - AWS Step Functions 是否具有超时功能?
- javascript - React 中的 CSS 模块 - 共享可重用代码的解决方案
- python - 循环调用彼此的函数
- angular - Angular Universal - TransferState ( )注入的脚本的几个实例
- excel - 命名范围的公式和问题