我正在尝试将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;
}
以下是桌面显示尺寸的样子:
当我将其转换为移动设备或平板电脑的视图大小时,由于边距等原因会导致其失真,如下所示:
有没有办法在不知道屏幕尺寸的情况下修复它?
如果解决方案位于css
或javascript
或jquery
,则无关紧要。
希望这不重复,但在这里找不到任何合适的解决方案......
提前致谢。
答案 0 :(得分:9)
这是一个常见的重叠问题。典型的答案是使用绝对定位,并在相对定位的父级内部进行翻译。
position: relative;
,因此绝对定位的叠加元素不会在您不想要的地方结束。我们通过这样做来包含叠加层。position: absolute;
应用于overlay元素。将50%
应用于left
和top
。这会使叠加元素的左上角到达父级的中心。transform: translate( -50%, -50% );
向上移动叠加,向左移动50%的宽度和高度。现在,叠加的中心位于父级的中心。
@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;
请注意,锚点包装的图像会创建少量的空白区域,这些空白区域留给文本中的下降区,因此从技术上讲,它不会100%垂直居中。如果这是一个问题,您可以通过将图片设置为display: block;
来删除它。