別讓網頁圖片降低網站效能 - 談談網頁圖片處理新趨勢

CSS 弹性盒布局:flex-wrap 换行与多行交叉轴对齐 默认情况下,弹性容器(flex container)会把所有子项(flex item)挤在一行里,哪怕空间不够也只会压缩子项,而不会换行。浏览器会依次把子项放进当前行,当剩余空间不足以容纳下一个子项的基础尺寸时,就开启新的一行。一旦允许换行,容器里就会出现多条「弹性行(flex line)」,此时交叉轴对齐的行为也会从「单行对齐」变成「多行对齐」,是默认值:当子项没有设置固定高度时,行会被拉伸,子项随之变高,看起来像是「撑满了容器」。上面这段代码中,每个子项固定 200px 宽,容器宽度决定每行能放几个。 阅读详情
如果你的網頁只是設計來自己玩玩, 或者它很明確的只有少數使用者會上來, 那麼你大可以不必用到我在這裡要介紹的方法。但是, 如果你的網站是供作大量使用者(例如超過上千個 current session), 那麼你一定不得不開始想方設法的提升網站的效能。

其中, 網頁中的圖片, 始終是網頁效能瓶項中的一環。別以為你的圖片很小; 當有大量使用者在同時存取時, 問題馬上就會突顯出來。

在這裡我要介紹一下業界怎麼處理這類問題的。首先, 如果你設計的是商業網站 (再強調一次, 如果你做的只是小規模網站, 我真的奉勸你不用麻煩了), 那麼當你設計好網頁圖形之後, 一定要想方法把它的檔案大小盡可能的壓縮。我建議你可以考慮採用 PNG 格式, 因為這種格式可以把圖形壓縮到非常的小, 而且當今絕大多數瀏覽器都已支援。如果你不相信的話, 你可以上http://www.gracepointafterfive.com/punypng 這個網站試一試, 把你的圖片丟上去, 看看它能不能再被擠出一點空間出來。

其次, 像 YouTube 這種大型網站, 坦白說, 它的網頁上的靜態圖形真的不多, 也不大, 但是他們也針對這一方面做了效能上的調整。他們是怎麼做的呢? 他們是把網頁上所有用得到的圖片都放在一張大圖裡面, 然後利用 CSS 去截出所需要的片段。其實這一整張「大」圖也不會很大, 容量更是只有 12K 而已。但是從這點你就可以看出來, 人家對這一丁點容量都是斤斤計較的。我相信, 如果你的網站規模已經大到具有上億使用者時, 你的思慮也要這麼細密才行。

在他們的理論中, 下載一張較大的圖, 比下載多張小圖要來得快速而有效率。我個人是沒有做過這種評比, 但是看在人家有上億使用者的份上, 我相信他們絕對不可能是吃飽了撐著; 我相信他們絕對有他們的理論基礎。

在實務上, 人家是怎麼辦到的呢? 你看看以下的 CSS 碼就可以了然於胸:

<style type="text/css">
    .bigpicture
    {
        background: transparent url(http://"MyBigPictureUrl") repeat-x scroll 0 0;
        border: 0;
        padding: 0;
    }
    .smallpicture1
    {
        width: 18px;
        height: 18px;
        background-position: -108px -680px;
    }
</style>

...

<img class="bigpicture smallpicture1" />

在這裡我定義了 bigpicture (在這裡指定大圖的位置) 與 smallpicture1 兩種樣式, 然後藉由在個別 img 控制項中調整樣式組合, 再把所需要的那個圖形片段給截出來。在這個範例中, 你可以先設定好 smallpicture1 的樣式, 再指定 class="bigpicture smallpicture1" 以截出這個小圖。如果你要截出另一個圖, 那麼就再設定 smallpicture2 的樣式, 再指定 class="bigpicture smallpicture2" 就行了。不過要去找出那個 background-position 的值, 恐怕要額外花費一番小功夫, 這就是採用這種方法的小小代價。

 

转自:http://www.dotblogs.com.tw/johnny/archive/2010/01/25/13287.aspx

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据) STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导 阅读详情

相关推荐

在LangChain中使用DashVector进行高效向量检索

DashVector为需要处理高维向量数据的开发者提供了一种便捷且高效的解决方案。通过将其集成到LangChain生态系统中,您可以轻松实现复杂的语义搜索和数据分析功能。DashVector官方文档LangChain GitHub仓库有关DashVector的详细notebook示例。

sjufgwgfhoia的博客 455

图床和OSS 存储和使用场景对比

如果你只是写写博客、记笔记,不想花钱也不想折腾技术:找一个口碑好的免费/廉价图床(注意数据备份)。如果你是开发者、企业用户,或者对数据安全性、长期稳定性有要求:请务必选择OSS(搭配 CDN)。虽然初期配置稍麻烦(约 30 分钟),但一劳永逸,且长期成本可控,数据掌握在自己手中。

bsklhao的博客 563

Openwork 入门指南:开源 AI 桌面助手快速上手

Openwork是一款开源的AI桌面代理工具,提供类似Claude Cowork的免费替代方案。它支持本地运行,确保隐私安全,并能高效处理文件整理、文档读写等任务。支持多种AI模型,通过MIT许可完全免费。安装简单,仅需运行命令行或下载桌面版,需配置API Key后即可使用。操作直观,支持多步骤规划和权限控制,适合自动化重复工作。目前主要支持macOS,未来将扩展至Windows/Linux。建议从简单任务入手,逐步掌握这一高效的数字助手工具。

3802

CSS 弹性盒布局:改变主轴方向 flex-direction

默认情况下,主轴是水平方向,项目从左到右排列。用于指定弹性容器(flex container)中主轴的方向,从而决定弹性项目的排列方向。是 Flexbox 中最基础也最常用的属性之一,理解它对于掌握弹性布局至关重要。主轴变为垂直方向,项目从上到下排列。理解主轴与交叉轴的关系,是灵活运用 Flexbox 的基础。主轴仍为水平方向,但项目从右到左排列,起始位置在右侧。是默认值,主轴为水平方向,项目从左到右依次排列。主轴为垂直方向,项目从下到上排列。,即可看到项目排列方向的变化。/* 修改这里观察效果 */

2601_96876853的博客 462

EDEM在农业机械设计中的实战应用:以谷物收割机优化为例

本文以谷物收割机优化为例,详细阐述了EDEM离散元仿真软件在农业机械设计中的实战应用。通过构建精准的“数字谷物”模型与农机部件动态界面,利用GPU加速完成大规模颗粒系统仿真,有效诊断并解决了籽粒夹带损失与清选负荷不均等田间难题,实现了从仿真分析到田间验证的设计优化闭环。

weixin_29256771的博客 108

YOLOv8进阶:SEAM注意力与Repulsion Loss双剑合璧,突破遮挡检测瓶颈

做目标检测时,最头疼的莫过于目标被遮挡的场景——行人被树木挡住一半、车辆被广告牌遮挡部分轮廓……这些情况往往让模型“犯迷糊”。但现在,有了SEAM注意力模块和Repulsion Loss排斥损失,我们就能让YOLOv8在遮挡场景下也能“拨开迷雾见真章”。这篇教程会带你一步步理解这两个技术,并亲手把它们融入YOLOv8,让你的检测模型在复杂场景下也能稳如泰山。

FJN110的博客 233

CSS 盒子模型与背景渐变、文字渐变实战

content(内容区):文字、图片等实际内容占据的区域padding(内边距):内容与边框之间的空白border(边框):盒子的边界margin(外边距):盒子与其他盒子之间的间距fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;margin 外边距border 边框padding 内边距content 内容区。

2601_96876853的博客 240

强化学习实战——OpenAI Gym环境配置+实战演示(win10)

遇到问题:无法安装pickle5原因是:python3.8与该包不兼容,必须降python3.7的版本。

LZL2020LZL的博客 4899

CSS 盒子模型尺寸计算与 box-sizing 详解

box-sizing决定了widthheight只算内容区,border-box算到边框外沿。理解两者的换算关系,就能准确预测元素的实际占位,避免布局溢出与对齐错位。实践中推荐全局设置,让尺寸声明与视觉结果保持一致。

2601_96876853的博客 314

基于FDTD的涡旋光束发射器设计

为实现涡旋光束在小型设备中的应用,提出一种圆柱孔光栅蚀刻硅微环谐振腔结构,器件半径仅为4.1μm。建立一个理论模型,利用偶极子点表示沿微环腔内壁的光栅元件散射辐射,推导输出光场表达式,建模结果验证该结构可在不同波长下选择性地产生各种拓扑数的涡旋光束。此外,对器件进行性能分析与参数优化,结果表明,微环波导宽度过小会大大增加微环的辐射损耗。当微环波导宽度为450nm、耦合间距为100nm时,1 579nm波长附近的谐振峰输出功率为16.3dB,Q值为15 800。

qq_61890005的博客 827

PyTorch深度学习实战(2)——PyTorch基础

PyTorch 是广泛应用于机器学习领域中的强大开源框架,因其易用性和高效性备受青睐。在本节中,将介绍使用 PyTorch 构建神经网络的基础知识。首先了解 PyTorch 的核心数据类型——张量对象。然后,我们将深入研究用于张量对象的各种操作。PyTorch 提供了许多帮助构建神经网络的高级方法及组件,并提供了利用 GPU 更快地训练神经网络的张量对象。

盼小辉丶的博客 5万+

CSS 弹性盒布局:子项目 flex 伸缩与 gap 间隙详解

flex-grow决定剩余空间如何分配,决定空间不足时如何压缩,flex-basis决定伸缩基准;日常优先使用flex简写,理解flex: 1与flex: auto的差异;项目间距优先使用gap,避免margin带来的首尾处理问题;注意与这两个高频细节。

2601_96876853的博客 339

AgentScope实战训练营- Java从零开始快速构建Agent完整教程

本文基于阿里巴巴开源的 AgentScope Java 框架,从零开始手把手带你构建 AI 智能体应用。内容涵盖环境搭建、基础对话、工具调用、结构化输出、多Agent流水线、Hook可观测性、会话持久化、MCP协议、RAG知识库集成、多模态工具、技能系统、Spring Boot Web部署等21个核心模块,附带完整可运行代码示例,帮助Java开发者快速掌握Agent开发全流程。

program哲学 862

CSS display 模式转换详解

display属性是 CSS 布局的基石。掌握blockinlineflexgrid等常见取值,并理解它们之间的转换规则,能够帮助我们更灵活地控制页面结构。在实际开发中,建议优先使用flex和grid完成布局,仅在必要时才通过display转换处理细节问题。

2601_96876853的博客 338

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

升级 three 后标签「点击全部失效」——CSS2D 层事件治理全解

three.js 升级至 r147+ 后,CSS2D 标签点击失效源于 OrbitControls 绑定 canvas 导致指针捕获劫持事件。解决方案分两层:第一层,通过 labelRenderer.domElement.style.pointerEvents = 'none' 使层透明,仅交互元素设 pointer-events: auto 并用 stopPropagation 阻止冒泡;第二层,防止窗体误关与重复弹窗,需在容器上阻止冒泡、关闭按钮使用 stopImmediatePropagation

weixin_44242600的博客 325

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【实战】STM32时钟跑飞、延时慢9倍?嵌入式设备CSS+SysTick+MCO三道防线实操(附HAL代码)

HSE失效不是小概率的"倒霉事",而是户外设备、震动环境、低成本晶振批次里必然会遇到的故障模式。CSS负责发现并保命,SysTick负责让时间基准不随频率漂移,MCO负责让整个过程可观测——三者配齐,STM32的时钟可靠性才从"祈祷晶振别坏"变成"坏了也能降级运行"。落地时记住两个位(CSSON、CSSC)和一个公式(SysTick重装值=fSYSCLK/1000-1,HAL口径),剩下的就是上板验证。

czl00czl的博客 253

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CSS 定位布局:相对定位与绝对定位详解

父元素 relative + 子元素 absolute」是 CSS 中最常用的定位组合,几乎所有的角标、下拉菜单、tooltip 都基于它实现。它决定了元素在页面中的定位方式,也是实现悬浮按钮、下拉菜单、遮罩层、角标等常见 UI 效果的核心手段。的偏移只是视觉位移,不会改变元素在文档流中的占位,因此不会引起其他元素重排。在视觉上向右移动 30px、向下移动 20px,但它原本占据的空间依然保留,后面的元素不会补上来。再大也无法跳出父元素的层级。,不再占据原来的空间,其他元素会像它不存在一样重新排列。

2601_96876853的博客 262

CSS 轮播图:让内容盒子垂直居中的几种做法

做轮播图时,最常见的结构是「外层容器固定高度 + 内层内容盒子(图片、标题、按钮组)」。轮播图内容盒子的垂直居中,本质是「容器有高度 + 子元素有居中规则」。轮播容器用 Flex,内层盒子自动在两个方向居中,代码最少、兼容性最好(现代浏览器全支持)。下面按「从简单到通用」的顺序,给出几种在轮播图中真正好用的垂直居中方案。,水平居中了,但垂直方向总是贴着顶部,或者被拉伸变形。,这是不依赖 Flex/Grid 的经典写法。新项目不建议使用,仅在维护老代码时能看懂即可。是 Flex 两个属性的简写,写法更短。

2601_96876853的博客 364

css注意事项二

块元素上下 margin 会合并:上面盒子 margin-bottom:10px,下面盒子 margin-top:10px,中间间距不是 20px,只会是 10px。❌ 误区:给块级 div 加 text-align:center,不能让 div 盒子自己居中!→ 你设置的 width,包含 border 边框 + padding 内边距,不会撑大盒子。写反了,选中 active 的页码,hover 效果不出来。参数:x 偏移,y 偏移,模糊大小,扩展大小,颜色 后台组件阴影不要太重,淡淡的就可以。

2603_96589670的博客 319

CSS 弹性盒子布局:display: flex 从入门到实战

2009 年 W3C 提出了 Flexible Box Layout(弹性盒子布局),它用一套「主轴 + 交叉轴」的模型,把「排列、对齐、分配剩余空间」这些高频需求变成了一行 CSS 就能解决的事情。会立刻从「块级纵向排列」变成「横向一行排列」,这就是 Flex 最直观的效果。只改变视觉顺序,不改变 DOM 顺序,注意可访问性与 Tab 键顺序问题。这些方案要么需要清除浮动,要么需要精确计算宽度,垂直居中更是经典难题。所有对齐属性都是围绕这两个轴展开的,记住这一点,后面的属性就不会混淆。

2601_96876853的博客 455

CSS: Organizational Chart

该网页通过JavaScript与JSON数据动态渲染组织架构图,采用层级式布局展示企业架构:顶层为CIO,下设资讯科技部(软体)与(硬体)两大部门,分别包含软件开发、智算运营、网络、数据安全等经理及下属成员。使用CSS实现多级节点样式与连接线,支持响应式设计,适配移动端。数据可内联嵌入或外部加载,具备良好的可扩展性与易用性。

Geovin Du Dream Park 54

【Web Development】02 CSS

CSS(层叠样式表 Cascading Style Sheets)。CSS 全称 Cascading Style Sheets 层叠样式表CSS 语法基础:颜色写法:直接写在 HTML 标签的属性里面。 特点:只作用于当前这一个标签。在 HTML 文档的标签中放置标签,内部写 CSS 规则。 特点:仅对当前这一个 HTML 页面生效。把全部 CSS 写在独立文件;在 HTML 用标签引入。 HTML 部分: mystyle.css 文件: 特点:多个网页可以共用同一个 css 文件,大型项目

lxylxylxy的博客 213

CSS2DObject 名称标签最小示例

在三维场景中实现随模型移动的名称标签,纯 DOM + CSS2DObject 方案兼具低实现成本、高样式与交互灵活性及良好性能。通过 document.createElement 组装带图标和文字的标签,利用 CSS2DObject 挂载并跟随模型,配合命名约定与 removeLabel 精准管理生命周期,支持点击、悬停、省略号等原生行为,避免内存泄漏,是中等规模标签场景的理想选择。

weixin_44242600的博客 285

CSS 三种引入方式与选择器全解

div p。

2401_89953644的博客 226

CSS 仿写页面

拿到设计稿先别写代码。这篇文章先讲「怎么把一张图拆成 DOM 结构」,再把颜色表示、五种尺寸单位、background的六个子属性、文字排版属性逐个落地,最后说明opacity和rgba到底差在哪。

2401_89953644的博客 196

css注意事项一

button {}踩坑场景:你写的分页按钮 hover 变色不生效,大概率是别的选择器优先级更高,把你的样式覆盖了。规避:不要随便写!important,实在要提升优先级,叠加 class,比如。不要东写一条宽、下面突然写颜色、再回头写 padding,乱序后期改样式头大。

2603_96589670的博客 420
上一篇: 22个免费的图表、流程图工具
下一篇: Image 控制項圖片動態調整大小
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值