当前位置: 首页 > 面试题库 >

“文本对齐:证明;” 内联块元素正确吗?

公冶才
2023-03-14
问题内容

其他一些问题已经解决了如何最好地应用text-align: justify以使内联块元素均匀分布……例如,如何真正地证明 HTML +
CSS中的水平菜单?

但是,浏览器为“清除”行内块元素行的100%宽度元素提供了自己的行。我不知道如何在不使用line-height: 0;父元素的情况下摆脱空的垂直空间。

我正在使用的解决方案要求line-height对子元素应用新的解决方案,但是之前设置的所有内容line- height都会丢失。有谁知道更好的解决方案?我想避免使用表,以便在必要时可以包装元素,也可以避免使用flexbox,因为还没有浏览器支持。我也想避免使用浮点数,因为间隔的元素数是任意的。


问题答案:

更新了下面的“未来”解决方案信息; 仍未完全支持。

当前解决方法(IE8 +,FF,Chrome已测试

相关CSS

.prevNext {
    text-align: justify;
}

.prevNext a {
    display: inline-block;
    position: relative;
    top: 1.2em; /* your line-height */
}

.prevNext:before{
    content: '';
    display: block;
    width: 100%;
    margin-bottom: -1.2em; /* your line-height */
}

.prevNext:after {
    content: '';
    display: inline-block;
    width: 100%;
}

说明

display: block:before有负下边距元素拉文达一行的高度,它消除了多余的线的线,但是置换文本。然后,position: relativeinline-block元素上使用时,将抵消位移,但不增加额外的行。

尽管css本身不能直接访问line-height“单位”,但emmargin-bottomtop设置中的使用很容易容纳任何line- height作为乘数值之一的给定值。因此1.2120%1.2em等于 在计算 相对于line- height,这使得利用em这里一个不错的选择,因为即使line-height: 1.2是一组,然后1.2emmargin- bottomtop匹配。良好的编码以规范化站点的外观意味着line- height应在某个点明确定义,因此,如果使用任何乘数方法,则等效em单位的值将与相同line-height。并且如果line- height设置为非em``px可以设置的长度(例如)。

使用诸如LESS或SCSS之类的css预处理器绝对具有变量或mixin可以帮助使这些值与适当的值保持匹配line- height,或者可以使用javascript来动态读取这些值,但实际上,line-height应该在使用此值的上下文中知道,并在此处进行适当的设置。

更新以缩小文本(无空格)问题

库比(Kubi)的评论指出,删除<a>元素之间的空格的html缩小会导致对齐失败。一个在内部伪空间<a>标签没有帮助(但预计,随着空间的内部发生inline-block元件),<wbr>之间添加<a>标签没有帮助(可能是因为休息没有必要到下一行),因此,如果需要最小化,然后解决方案是硬编码的不间断空格字符-&nbsp;其他空格字符(如稀薄空间和en空格)不起作用(令人惊讶地)。

即将到来的清洁解决方案

其中webkit是落伍(作为第一写这)为:

.prevNext {
    text-align: justify;
    -moz-text-align-last: justify;
    -webkit-text-align-last: justify; /* not implemented yet, and will not be */
    text-align-last: justify; /* IE */
}

它适用于FF 12.0+和IE8 +(IE7中为Buggy)。

对于Webkit的,作为39版(至少,可能有早期蹑手蹑脚),它支持它 没有-webkit-,但是扩展 当 _用户_启用了实验性的功能(可在完成chrome://flags/#enable-experimental-web-platform- features)。有传言说版本41或42应该获得完全支持。由于webkit尚未得到无缝支持, 因此它仍然只是部分解决方案。但是,我认为我应该发布它,因为它可能对某些人有用。



 类似资料:
  • 问题内容: 我的html文档的正文包含3个元素,一个按钮,一个表单和一个画布。我希望按钮和表单右对齐,而画布保持左对齐。问题是当我尝试对齐前两个元素时,它们不再彼此跟随,而是水平地彼此相邻吗?,这是我到目前为止的代码,我希望表格紧跟在右边的按钮之后中间没有空格。 问题答案: 您可以创建一个同时包含表单和按钮的div,然后通过设置将div浮动到右侧。

  • 我目前已经用下面的代码创建了一个JFrame。我希望有三个JLabel,一个在另一个上面,它们对应的JTextFields在右边,下面有四个JButtons(我最终将使用插入来分隔它们)。但是,单元格在一行中在框架顶部对齐。谁能看出我正在犯的错误。多谢了。 它目前正在生产的JFrame是: **我意识到我没有在面板中设置GridBagLayout,所以添加了一行:

  • 我的html文档的主体由3个元素组成,一个按钮、一个表单和一个画布。我希望按钮和窗体右对齐,画布保持左对齐。问题是,当我尝试对齐前两个元素时,它们不再相互跟随,而是水平地紧挨着?,这是我到目前为止的代码,我希望窗体直接跟随在右边的按钮之后,中间没有空格。 null null

  • 问题内容: 内的所有元素应并排且整齐并排,并受到200px高度的限制,并且没有奇怪的边距或填充。相反,您会遇到上述小提琴中出现的陌生感。 是什么原因造成,并得到中途按下页面,我怎么能解决这个问题?另外,我承认使用表可能是解决整个设置的更好方法,但是我想从上面的代码中找出问题,以便从这个错误中学习。 问题答案: 10.8线高的计算:“线高”和“垂直对齐”属性 “ inline-block”的基线是正

  • 问题内容: 遇到了一个奇怪的CSS问题。有人可以解释为什么包含内容的框未垂直对齐吗? 如果您将文本放在class的范围内-它将正确对齐。 问题答案: 默认值是其 将框的基线与父框的基线对齐 注意:您可以通过添加到选择器中来查看此默认值。由于是默认设置,因此对齐方式保持不变。 您需要对其进行更改以使块在顶部对齐,例如: 基准定义为 大多数字母“坐着”且下级延伸到其下的线 解决 为什么 添加文本似乎可

  • 我正在尝试对齐一个div内的项目,我读了一些问题,但仍然有这个疑问。 我目前拥有的: 代码是 null null 类别描述的不起作用:(我希望它位于块的最右侧。 将设置为显式长度不是一个选项,因为“类别描述”的内容是可变的。