通过 CSS 裁剪背景图像

Posted

技术标签:

【中文标题】通过 CSS 裁剪背景图像【英文标题】:Cropping a background image through CSS 【发布时间】:2017-11-07 13:10:40 【问题描述】:

所以,作为一个新手,我只是迷失在我正在尝试做的事情中: 在我需要为我的工作设置的网上商店中,我们正在使用 Lightspeed(电子商务平台)的第 3 方模板。在这个主题中,我们有 3 个“亮点”项目。这些是背景图像+重叠文本和显示产品的按钮。

我已将这些 ID 的最小高度设置为 800 像素:

#highlight-1,#highlight-2,#highlight-3 
   min-height: 800px;

到目前为止一切顺利,一切正常。 但是现在,在移动平台上(是的,如果你愿意,你已经可以笑了,因为你知道会发生什么,不是吗?),你已经猜到了:图像太大了。

我希望在纵向模式下将图像裁剪为(可能约为)移动平台大小的一半,因此图像的本质仍然保留,用户无需滑动约一公里即可到达终点的页面。

我可以在我可以访问的 .rain 和 .css 文件中找到的唯一内容是:

#highlight-1 background: url('highlight_1_image.jpg') no-repeat;
#highlight-2 background: url('highlight_2_image.jpg') no-repeat;
#highlight-3 background: url('highlight_3_image.jpg') no-repeat;

我可以编辑这个并且我可以访问模板的自定义 .css 编辑器

谁可以帮助新手?提前致谢! :)

【问题讨论】:

【参考方案1】:

理想的解决方案是使用媒体查询来提供较小的图像。这会减少可能使用有限数据的移动访问者的带宽,并且我相信会影响您在 Google 等中的网页排名。

#highlight-1 background: url('highlight_1_image.jpg') no-repeat;

@media screen and (max-width: 767px) 
    #highlight-1 background: url('highlight_1_mobile_image.jpg') no-repeat;

如果这不是一个选项,您可以使用background-size 属性显式指定大小,或将其设置为cover(按比例放大或缩小,以便图像的单个实例在需要时通过裁剪完全覆盖元素)或contain(按比例放大或缩小以使元素完全水平填充垂直)

【讨论】:

我从没想过提供更小的图片。好主意啊!唯一的事情是..这会覆盖(或忽略)我为#highlight-# 设置的 800px 的最小高度吗?它会覆盖/替换其他背景图像,还是我需要使用某种 !important 标签?我自己从来没有真正使用过媒体查询,所以这对我来说是一个新领域。 媒体查询本身不会应用任何样式,因此无需担心您的min-height: 800px。将媒体查询视为样式表的一部分 - 只有当您的访问者满足媒体查询中指定的条件时,才会应用其中的规则。仅当您尝试在媒体查询中使用较弱的选择器时,才需要 !important。延伸阅读:***.com/tags/media-queries/info 太棒了!感谢您的额外解释和阅读材料,您是一个很大的帮助!不幸的是,我现在无法更改任何内容,但我会在明天发布更新。再次感谢! :) 所以我已经听从了您的建议,移动图像的加载是完美的解决方案!我现在唯一遇到的问题仍然是 min-height: 800px 仍然缩放和主导图像。有什么方法可以仅为移动用户删除它? 是的,在媒体查询中,min-height: 0;

以上是关于通过 CSS 裁剪背景图像的主要内容,如果未能解决你的问题,请参考以下文章

具有固定背景的光滑滑块溢出,如何防止幻灯片上的图像裁剪?

通过自定义形状裁剪 UIImage

如何裁剪图像边缘

如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景

如何从图像中裁剪或删除白色背景

使用 MS Office 图片管理器从 JPEG 图像中裁剪颜色