如何在bootstrap 3中的图像上居中使用字体真棒图标?

时间:2017-04-11 18:07:08

标签: javascript jquery css twitter-bootstrap font-awesome

我正在尝试将font-awesome图标集中在bootstrap 3中的图片上。

以下是div中包含的图像代码:

<div id="quickVideo">
    <a data-fancybox href="https://player.vimeo.com/video/153113362?autoplay=1&color=54b3e4" class="adminDemoVideo">
        <img src="~/Images/..." class="img-responsive">
    </a>
</div>

我可以在div元素上使用::before来做到这一点,但问题是默认情况下它没有响应。

.adminDemoVideo::before {
    font-family: 'FontAwesome';
    content: '\f04b';
    margin-top: 1.35em;
    margin-left: 2.8em;
    color: white;
    z-index: 1000;
    font-size: 50px !important;
    position: absolute;
    padding-bottom: 3px;
    padding-top: 3px;
    padding-left: 25px;
    padding-right: 15px;
    background-color: rgba(23, 35, 34, 0.75);
    border-radius: 5px 5px 5px 5px;
}

以下是桌面显示尺寸的样子:

Desktop View

当我将其转换为移动设备或平板电脑的视图大小时,由于边距等原因会导致其失真,如下所示:

Mobile or tablet view

有没有办法在不知道屏幕尺寸的情况下修复它? 如果解决方案位于cssjavascriptjquery,则无关紧要。

希望这不重复,但在这里找不到任何合适的解决方案......

提前致谢。

1 个答案:

答案 0 :(得分:9)

这是一个常见的重叠问题。典型的答案是使用绝对定位,并在相对定位的父级内部进行翻译。

  • 确保父级有position: relative;,因此绝对定位的叠加元素不会在您不想要的地方结束。我们通过这样做来包含叠加层。
  • position: absolute;应用于overlay元素。将50%应用于lefttop。这会使叠加元素的左上角到达父级的中心。
  • 使用transform: translate( -50%, -50% );向上移动叠加,向左移动50%的宽度和高度。现在,叠加的中心位于父级的中心。

&#13;
&#13;
@import url( 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' );
@import url( 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css' );

.adminDemoVideo {
  position: relative;
  display: inline-block;
}
.adminDemoVideo::before {
    content: '\f04b';
    z-index: 5;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate( -50%, -50% );
    padding: 3px 15px 3px 25px;
    color: white;
    font-family: 'FontAwesome';
    font-size: 50px !important;
    background-color: rgba(23, 35, 34, 0.75);
    border-radius: 5px 5px 5px 5px;
}
&#13;
<a href="https://player.vimeo.com/video/153113362?autoplay=1&color=54b3e4" class="adminDemoVideo">
  <img src="http://placehold.it/1200x800/fc0" class="img-responsive">
</a>
&#13;
&#13;
&#13;

请注意,锚点包装的图像会创建少量的空白区域,这些空白区域留给文本中的下降区,因此从技术上讲,它不会100%垂直居中。如果这是一个问题,您可以通过将图片设置为display: block;来删除它。