我们正在开发一个使用HTML5和CSS的网络应用程序。
在我们的面具上,我们获得了包含单行和多行文本的标签。
对于多行,我们在文本中使用br-tag。
因为我们有时甚至在文本中使用子标记用于下标字符,所以我们被迫使用" display:inline"或"显示:内联块"标签样式。
现在我们来解决问题:"显示:内联"导致带有多行文本的标签中的行间距。
CSS可以避免使用这些线条,以便所有标签 - 如果它们具有单行或多行文字并不重要 - 具有相同的外观 - 包括顶部填充。
与此同时,我们尝试使用" display:inline-block"。
如果是多线标签,它可以正常工作,顶部填充(在我们的例子中为1px)甚至看起来很好。
但是在单行标签中,它会产生更大的顶部填充(通过属性,它与其他标签的1px一样),看起来像2或3像素。
这里有一个行为的图片,并有一些解释:
目标是:
任何帮助都将不胜感激。
这是我们的实际CSS:
channel.exchangeDeclare(Exchanges.PROCESSING.getType(), BuiltinExchangeType.TOPIC);
我们的两个标签。 第一个是多行文本,第二个是单行文本:
// Our pages contains some divs as containers structured like a table.
// Even the controls like the label are in div-containers for vertical alignment of the label content.
.Row{
display: table; height: calc(100%); width: calc(100%);
}
// CellOuter and CellInner are the classes for the containers in which our controls are.
.CellOuter{
display: table-cell; padding: 0; position: absolute !important;
}
.CellInner{
display: table-cell; padding: 0; position: relative !important;
}
// These style-classes are for horizontal and vertical alignment.
.TopLeft{
text-align: left; align-items: flex-start; vertical-align: top;
}
.TopCenter{
text-align: center; align-items: center; vertical-align: top;
}
.TopRight{
text-align: right; align-items: flex-end; vertical-align: top;
}
.MiddleLeft{
text-align: left;
align-items: flex-start;
vertical-align: middle;
}
.MiddleCenter{
text-align: center; align-items: center; vertical-align: middle;
}
.MiddleRight{
text-align: right; align-items: flex-end; vertical-align: middle;
}
.BottomLeft{
text-align: left; align-items: flex-start; vertical-align: bottom;
}
.BottomCenter{
text-align: center; align-items: center; vertical-align: bottom;
}
.BottomRight{
text-align: right; align-items: flex-end; vertical-align: bottom;
}
答案 0 :(得分:0)
谢谢大家的支持。
经过长期的斗争,我们找到了解决问题的方法。
通过使用display:inline-block,只有左边和顶部的填充和边距有效,但不是顶部或底部。
为此,我们必须使用display:table。
display:table几乎具有display的所有功能:inline-box和所有定义的边距和填充都是有效的。