当 border-image 在移动端显示异常时,通常是由于以下几个原因导致的。以下是详细的排查和解决方案:
/* 错误示例 */
border-image: url(border.png) 30 round;
/* 修正方案 */
border-image: url(border.png) 30 30 30 30 stretch;
/* 错误示例 - 使用px在移动端可能不适应 */
border-image-width: 10px;
/* 修正方案 - 使用相对单位 */
border-image-width: 1rem;
/* 或使用viewport单位 */
border-image-width: 2vw;
/* 添加供应商前缀 */
-webkit-border-image: url(border.png) 30 stretch;
-moz-border-image: url(border.png) 30 stretch;
-o-border-image: url(border.png) 30 stretch;
border-image: url(border.png) 30 stretch;
/* 为高分辨率屏幕提供2x/3x图片 */
@media (-webkit-min-device-pixel-ratio: 2),
(min-resolution: 192dpi) {
.element {
border-image: url(border@2x.png) 60 stretch;
border-image-width: 30px;
}
}
/* 明确指定填充方式 */
border-image-slice: 30 fill;
border-image-repeat: round; /* 或 stretch, repeat */
.element {
/* 基本属性 */
border: 10px solid transparent;
/* 供应商前缀 */
-webkit-border-image: url(border.png) 30 30 30 30 stretch;
-moz-border-image: url(border.png) 30 30 30 30 stretch;
-o-border-image: url(border.png) 30 30 30 30 stretch;
border-image: url(border.png) 30 30 30 30 stretch;
/* 响应式宽度 */
border-image-width: 1rem;
/* 高DPI适配 */
@media (-webkit-min-device-pixel-ratio: 2),
(min-resolution: 192dpi) {
-webkit-border-image: url(border@2x.png) 60 60 60 60 stretch;
border-image: url(border@2x.png) 60 60 60 60 stretch;
}
}
如果以上方案仍不能解决问题,建议使用浏览器开发者工具检查元素,查看具体的CSS计算值和渲染情况。