首屏优化,给以图片为背景的元素增加相似背景,优化用户体验,background-image 绘制规则

每日鸡汤:每个你想要学习的瞬间都是未来的你向自己求救

假设你的项目首页有个大大的图片作为背景,那么这个图片肯定会在网络不好的时候加载出来很慢,导致用户回看到一大片白屏,这样很影响体验。这也是老生常谈的首屏优化的问题。例如

html 复制代码
//html
<div class="container">home</div>

// css
.container {
    background: url('xxx.png');
}

我们可以给这个首屏元素加个和颜色类似的背景色,来优化这个问题。

假如你是小白你肯定会这样写,多写一个 background 属性?但是这样是不行的,根据css的优先级规则,还是会在图片加载出来之前白屏!

html 复制代码
//html
<div class="container">home</div>

// css
.container {
    background: red;
    background: url('xxx.png');
}

所以我们可以使用 backgroun-image 属性

html 复制代码
//html
<div class="container">home</div>

// css
.container {
   // 注意这个 url 和 颜色的顺序不能变, 默认颜色放右边
   background-image: url('xxx.png'), red;
}

为什么说 background-image 值的顺序不能变呢,因为 mdn 官方文档所说

background-image 在绘制时,图像以 z 方向堆叠的方式进行。先指定的图像会在之后指定的图像上面绘制。因此指定的第一个图像"最接近用户"

只有这样才能在图片没加载之前,先显示 red 颜色。

注意如果你的图片是透明的,就不要这样弄了,因为 图片+red 的叠加效果可能不是你想要的

还有一个知识点就是

然后元素的边框 border 会在它们之上被绘制,而 background-color 会在它们之下绘制。图像的绘制与盒子以及盒子的边框的关系,需要在 CSS 属性background-clipbackground-origin 中定义。

所以你要了解 background 各种属性的绘制规则!

规则是(z轴方向):

background-color ------> background-image 后指定的值(右边) ------> background-image 先指定的值(左边) ------> border-color

如果有不对的请多指正!

相关推荐
程序员黑豆8 分钟前
鸿蒙应用开发之双向绑定实战:从 V1 到 V2 的完整迁移指南
前端·harmonyos
Escape11 分钟前
为什么你的 AI 越聊越傻?从 Token 到 Agent,彻底搞懂 AI Agent的秘密㊙️
前端·人工智能·后端
李明卫杭州1 小时前
Vue3 响应式概念 ↔ React 对应方案(类组件与函数组件)对照笔记
前端·vue.js·react.js
windliang1 小时前
Claude Code 源码分析(二):CC 的心脏 queryLoop Agent主循环
前端·ai编程·claude
英勇无比的消炎药1 小时前
拖文件进来会发生什么:TinyRobot DragOverlay 与 v-dropzone 协同指南
vue.js
Revolution611 小时前
reactive 对象重新赋值后,表单为什么没有恢复默认值
前端·vue.js·面试
米饭同学i1 小时前
微信小程序 input maxlength 遇上输入法拼音被截断?这是最完整的解决方案
前端
董员外1 小时前
RAG 系统进化论(二):Naive RAG,检索增强生成的最小闭环
前端·人工智能·后端
JasonMa1531 小时前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js
脾气有点小暴1 小时前
ECharts 伪 3D 柱状图完整注释 + 实现原理说明
前端·3d·信息可视化·vue·echarts