Bootstrap 3 中的垂直对齐字形

2024-02-14

我有一个这样的字形:

<div class="col-xs-4 col-sm-2">
    <span class="glyphicon glyphicon-circle-arrow-up glyphicon-large"></span>
</div>
.glyphicon-large {
    min-height: 260px;
    font-size: 35px;
    width: 1em;
    display: block;
    top: 50%;
    margin: -0.5em auto 0px;
}

字形图标不会与中心垂直对齐。当我打开 Firefox、检查元素并关闭/打开top 50%规则,它突然起作用了。怎么会?


浏览器错误说明

根据MDN on top https://developer.mozilla.org/en-US/docs/Web/CSS/top:

For 相对定位的元素(那些有position: relative), it 指定元素移动到其正常位置以下的量.
Note:百分比应用为元素包含块的高度的百分比

根据W3 on top http://www.w3.org/TR/CSS2/visuren.html#propdef-top:

For 相对定位盒子,偏移量是相对于盒子本身的顶部边缘的(即,盒子在正常流中被赋予一个位置,然后根据这些属性从该位置偏移)。Note:百分比指的是包含块的高度

这是我的猜测:

我认为正在发生的事情是当浏览器首先渲染视觉树 http://taligarsiel.com/Projects/howbrowserswork1.htm,并看到top:50%;,它会要求父级设置高度。由于没有专门应用高度,并且没有加载任何子内容,因此该 div(以及所有 div)的高度有效从零开始除非另有说明。然后它将字形下推零的 50%。

当您稍后切换属性时,浏览器已经渲染了所有内容,因此父容器的计算高度由其子容器的高度提供。

最小、完整且可验证的示例

Note:这与 Bootstrap 或 Glyphicons 没有任何关系。为了避免对引导程序的依赖,我们将添加top: 1px这将由.glyphicon班级。即使它被覆盖50%,至今仍发挥着重要作用。

这是一组简单的父/子元素:

<div id="container">
    <div id="child">Child</div>
</div>

为了以更可重复的方式模拟切换属性,我们只需等待两秒钟,然后在 JavaScript 中应用样式,如下所示:

window.setTimeout(function() {
    document.getElementById("child").style.top = '50%';
},2000);

示例1(jsFiddle http://jsfiddle.net/KyleMit/tu9mpyeg/)

作为起点,让我们重新创建您的问题。

#container {
    position: relative;
    
    /* For Visual Effects */
    border: 1px solid grey;
}
#child {
    position: relative;
    height: 50px;
    top: 1px;
    
    /* For Visual Effects */
    border: 1px solid orange;
    width: 50px;
    margin: 0px auto;
    
}

请注意,一旦您调整窗口大小,浏览器就会重新绘制屏幕并将元素移回顶部。

示例2(jsFiddle http://jsfiddle.net/KyleMit/tu9mpyeg/11/)

如果你添加top: 50%对于子元素,当 javascript 添加属性时不会发生任何事情,因为它没有任何内容可以覆盖。

示例3(jsFiddle http://jsfiddle.net/KyleMit/tu9mpyeg/12/)

如果你添加top: 49%到子元素,那么 DOM 确实有一些东西需要更新,所以我们会再次遇到奇怪的故障。

实施例4(jsFiddle http://jsfiddle.net/KyleMit/tu9mpyeg/14/)

如果你添加height: 50px;到容器而不是孩子,然后top属性从一开始就需要定位,并且您不需要在 JavaScript 中使用切换。


如何垂直对齐

如果您只是想知道如何使某些内容一致地垂直居中,那么您可以执行以下操作:

垂直居中文本的技巧是设置line-height https://developer.mozilla.org/en-US/docs/Web/CSS/line-height等于容器高度。如果一行占用 100 个像素,而在线文本行占用 10 个像素,那么浏览器将尝试将文本在剩余的 90 个像素内居中,顶部和底部各 45 个像素。

.glyphicon-large {
    min-height:  260px;
    line-height: 260px;
}

jsFiddle中的解决方案 http://jsfiddle.net/KyleMit/Z9ZFr/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bootstrap 3 中的垂直对齐字形 的相关文章

  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • 自定义rc-time-picker的样式

    我在用rc time picker我的项目的包 但我在自定义样式时遇到问题pop up of my time picker成分 这是我的组件的屏幕截图 首先 我需要更改时间的背景颜色item在当时li from light grey 在屏幕
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 网站的主体和元素固定在 980px 宽度上,不会缩小

    我试图在 Rails 应用程序顶部启动前端 仅 HTML CSS 页面 但在使用 320px 视口时遇到问题 有些元素不会按比例缩小 我不明白为什么 我已经完成了检查元素 为各种元素提供了max width 100 and or width
  • 如何创建适合屏幕宽度的等宽/高框? [复制]

    这个问题在这里已经有答案了 我正在尝试建立一个网站 其中有很多宽度和高度相等的框 例如 我有一个页面 其中并排有两个相同大小的框 简单的解决方案是将宽度和高度设置为 50vw 这在出现滚动条之前效果很好 我已经用谷歌搜索了几个小时 但无法理
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • 将 CSS 网格中的文本放置在图像上方

    我有一个 CSS 网格 需要在图像上放置一些文本 下面显示了我使用的代码 图像上没有文字 sbp item12 grid row 6 7 grid column 9 13 height 250px div class sbp item12
  • 是否可以将一个 CSS 类的优先级设置为高于另一个 CSS 类的优先级?

    假设我有一个 div 它使用两个 css 类 这两个类都使用文本对齐 但一个居中 另一个右对齐 是否可以指定一个类别优先于另一个类别的内容 指定更具体的选择器 例如在其前面添加 ID 前缀或在类前面添加节点名 将其分配在其他班级之后 如果两
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • 最小高度:自动在 Opera 中不起作用

    我注意到min height不在 Opera 中工作 我正在尝试这样的事情 div class content div div class content newstyle div 我的 CSS 代码是 content min height
  • 为什么 inline-block 会根据子元素的宽度自动调整宽度?

    如果这个问题已经在 stackoverflow 上提出过 请纠正我 如果确实如此 我深表歉意 但我已经寻找了一段时间并且只找到了hows not whys 我的问题是 父 div 似乎会自动占据页面的整个宽度 除非 display inli
  • jQuery:如何将 jQuery 日期选择器放入 Bootstrap Popover 中? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我试图在引导弹出窗口中显示 jquery datepicker 并尝试了解决方案引导程序弹出窗口内的日期选择器 关闭 https
  • css 表格单元格,内容有不必要的上边距

    我在代码中使用 div 块的表格单元格排列 我的代码有问题 我的 html 的预览是here http jsbin com avozik 10 edit preview 当我的第一个面板中有任何内容 文本或图像 时 inner第二个和第三个
  • 数据协议 URL 大小限制

    data URL 方案是否有大小限制 价值观 我对流行网络浏览器的限制感兴趣 换句话说 多久可以data image jpg base64 base64 encoded data be in img src data image jpg b
  • Javascript - window.getCompulatedStyle 返回“auto”作为元素顶部和左侧属性

    在我的网页上 我有一些元素 div 子 div 按钮等 其位置是相对于它们所在的 div 以及彼此之间生成的 这会导致使用时的结果window getCompatedStyle the top and left属性不是数字值 而是简单的 a
  • 角度材料在一个表单字段中输入和选择

    I want the input field and the drop down field in the same area like the one on the left I did this on the inspector 无论我
  • 角度按钮单击旋转图标

    我有以下按钮
  • 纯CSS代码,没有绝对定位

    我试图想出一个纯CSS代码 就像你在电视上看到的那样 仅not粘在屏幕底部 我已经找到了涉及 JS 的东西 但我正在努力避免 JS 我还发现了一些其他人创建的纯 CSS 代码 但这些的问题在于它们都使用position absolute 这
  • 使用 node-sass 监视整个目录时指定输出文件名

    目前 我可以在查看单个 SCSS 文件时使用 package json 文件中的 node sass build 命令指定文件名 sass build node sass src scss main scss dist css main m
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b

随机推荐