使用css选择器对齐图像[重复]

Posted

技术标签:

【中文标题】使用css选择器对齐图像[重复]【英文标题】:Alignment image using css selector [duplicate] 【发布时间】:2019-09-07 17:07:00 【问题描述】:

我正在尝试使用 CSS 选择器 :before 将图像放在文本之前。这是我的sn-p

但似乎对齐方式有点偏离。文本未与图像垂直对齐。

.resource 
 	color: #007f00;
    display: inline;
    margin-top: 20px;


.resource:before 
	content: '';
    width: 26px;
    height: 20px;
    display: inline-block;
    margin-right:5px;
    background-size: contain;
    background-repeat: no-repeat;
    margin-top: 19px;
    background-image:url("https://www.w3schools.com/bootstrap/cinqueterre.jpg");

<div class="resource">Presentation</div>

我在:before 中添加了margin-top,但它不起作用。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

实现目标的一种方法是使用Flexboxalign-items: center。这将使所有项目垂直居中对齐。你也可以删除你的margin-top

.resource 
  color: #007f00;
  display: flex;
  align-items: center;


.resource:before 
  content: '';
  width: 26px;
  height: 20px;
  margin-right: 5px;
  background-size: contain;
  background-repeat: no-repeat;
  background-image: url("https://www.w3schools.com/bootstrap/cinqueterre.jpg");
<div class="resource">Presentation</div>

但如果你想知道你为什么把你的图片作为::before 元素会很有趣...

【讨论】:

我也是!但这是我从客户那里收到的代码。我想知道这个 flexbox 是否可以在 IE 中工作。 是的。 caniuse.com/#search=align-items【参考方案2】:

设置 .resource display: inline-block; 并从 .resource:before 中删除 ma​​rgin-top 并添加 vertical-align:middle 行高

.resource 
 	color: #007f00;
  display: inline-block;
  line-height: 20px;
  vertical-align: middle;

.resource:before 
	content: '';
    width: 26px;
    height: 20px;
    display: inline-block;
    margin-right:5px;
    background-size: contain;
    background-repeat: no-repeat;
    background-image:url("https://www.w3schools.com/bootstrap/cinqueterre.jpg");
    line-height: 20px;
    vertical-align: middle;
<div class="resource">Presentation</div>

【讨论】:

这是一种方法,但这种方法不能完美地居中对齐项目。您可以通过检查元素并将@ProX 的结果与您的结果进行比较来看到这一点。 @Aaron3219 是的,通过将 line-height 和 vertical-align:middle 提供给资源,它是完美的中心。 不,它不是完全居中的。比较两个结果。文字在中心上方 1-2px。在两个选项卡中展开 sn-ps 并在它们之间切换。您会看到差异,如果您仔细检查,您还可以看到文本没有完全居中。 是的......你可以看到它。这就是我喜欢@Aaron3219 方法的原因。【参考方案3】:

如果你改变你的 html 和 CSS 如下,那么你可以更有效地达到同样的结果:

.resource 
  display: flex;


span 
  margin-right: 5px;
  margin-top: 19px;


span img 
  height: 20px;
  width: 26px;
<div class="resource">
  <span><img src="https://www.w3schools.com/bootstrap/cinqueterre.jpg"/></span>
  <span>Presentation</span>
</div>

Here 是一个指向 JSFiddle 的链接,您也可以在其中看到结果。

【讨论】:

以上是关于使用css选择器对齐图像[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正确对齐伪选择器图像

使用 JQuery 更改 :before css 选择器的宽度属性 [重复]

使用通配符 CSS 选择器 [重复]

CSS父/祖先选择器[重复]

特定文本的 CSS 选择器 [重复]

CSS-属性&&选择器