我有这个HTML:

<div id="graphic">lorem ipsum</div>

有了这个CSS:

#graphic { background-image: url(image.jpg); width: 200px; height: 100px;}

我应用的背景图像是200x100px,但我只想显示200x50px的背景图像的裁剪部分.

对于此,background-clip似乎不是正确的CSS属性.我可以用什么来代替呢?

不应该使用background-position,因为我在一个精灵上下文中使用上面的CSS,其中我想要显示的图像部分比在其上定义CSS的元素要小.

推荐答案

您可以将图形放在具有其自己的维度上下文的伪元素中:

#graphic {
  position: relative;
  width: 200px;
  height: 100px;
}
#graphic::before {
  position: absolute;
  content: '';
  z-index: -1;
  width: 200px;
  height: 50px;
  background-image: url(image.jpg);
}

#graphic {
    width: 200px;
    height: 100px;
    position: relative;
}
#graphic::before {
    content: '';
    
    position: absolute;
    width: 200px;
    height: 50px;
    z-index: -1;
    
    background-image: url(http://placehold.it/500x500/); /* Image is 500px by 500px, but only 200px by 50px is showing. */
}
<div id="graphic">lorem ipsum</div>

浏览器支持很好,但在之前的版本中,if you need to support IE8, use a single colon :before. IE不支持这两种语法.

Css相关问答推荐

为什么盒影没有显示在我的Angular组件中?

如何使用css创建带有曲线的自定义按钮

如何以Angular 将下拉面板的宽度与其文本框对齐

如何防止css边框缩小div?

.NET 8 预览版 6 中不使用新项目模板提供 Blazor CSS 文件

覆盖现有像素的混合

不明白为什么 div 不均匀并且不填满页面

Icomoon:如何避免重复索引(具有相同内容 ID 的不同图标)?

CSS如何防止键盘向上移动内容?

紫色表示访问过的超链接

删除在 ios safari / chrome / firefox 中单击的链接上的灰色背景

弹性盒项目之间的间距

ID 在整个页面中必须是唯一的吗?

使用 CSS3 生成重复的六边形图案

删除所有填充和边距表格 HTML 和 CSS

CSS 表格 td 宽度 - 固定,不灵活

bootstrap 程序中有 7 个相等的列

修复 Mobile Safari (iPhone) 上文本呈现不一致且某些字体比其他字体大的字体大小问题?

完成后如何防止css3动画重置?

将 CSS 类添加到 Html.BeginForm()