继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

图片资源在项目中的使用

心似一片青苔
关注TA
已关注
手记 27
粉丝 38
获赞 476

图片的使用

在日常项目中,图片是经常需要使用的。在此,整理了一些常用的图片相关知识
图片描述

错误处理(很常用,实用)

  1. 从服务器获取的图片资料可以用onerror做错误处理
onerror="javascript:this.src='images/home/monitor.png'"
  1. 设置最大宽度与最大高度,防止图片非等比缩放
.img {
    max-width: 100%;
    max-height: 100%;
}

降低图片的大小

  1. 图片压缩,采用图片压缩工具,智图-图片压缩

减少HTTP网络请求

将多张图片合成一张图片,可以有效减少http网络请求。特别是一些小图标多的页面,还有一些组件里面的图片

cssSprites(雪碧图制作)

1. 用PS制作
2. 用在线工具合成图片,background-position都动生成。[Snipaste-1.16.2-x64](https://pan.baidu.com/s/1I21_g79e77Jjhk5xUJ5PoA)
3. 用webpack,gulp等新的项目构建工具以它们的一些插件,可以用它们自动合并、压缩图片,处理图片引用

gulp

```
const gulp = require('gulp');
// 自动同步浏览器插件
const browserSync = require('browser-sync');
// 同步运行任务插件
const runSequence = require('run-sequence');
// buffer流转换
const buffer = require('vinyl-buffer');
// 项目路径
const projecturl = 'gulp-cssSprites';
// cssSprites压缩
const gulpSpritesmith = require('gulp.spritesmith');
const gutil = require('gulp-util');
const imagemin = require('gulp-imagemin');

gulp.task('spritesmith', () => {
    gulp.src('./images/*.png')
    .pipe(buffer())
    .pipe(imagemin())
    .pipe(gulpSpritesmith({
        imgName: 'sprites.png',
        cssName: 'sprites.css' // Supported CSS extensions are .css (CSS), .sass (SASS), .scss (SCSS), .less (LESS), .styl/.stylus (Stylus), and .json (JSON)
    }))
    // .pipe(imagemin())
    .on('error', gutil.log)
    .pipe(gulp.dest(projecturl + '/cssSprites'))
})

// 起本地静态资源服务器,及监听
gulp.task('browserSync', () => {
    browserSync({
        server: {
            baseDir: ''
        }
    })
});

// 监听文件修改
gulp.task('watch', ['browserSync', 'spritesmith'], () => {

    gulp.watch(['*.png'], browserSync.reload);

})

// 默认任务
gulp.task('default', (callback) => {
    runSequence(['browserSync', 'watch'], callback);
})
```
**cssSprites使用**

利用CSS的background-image,background- repeat,background-position的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置
```
.icon-ANALYSIS_4 {
background-image: url(sprites.png);
background-position: -18px -17px;
width: 17px;
height: 17px;
}
```

字体图库代替图标

常用的有font-awesom,在项目图标不是非常多的时候也可以采用自定义字体图标库 Iconfont

SVG技术替换图片

SVG是基于XML(Extensible Markup Language),用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图象(image)、文本(text)。图形对象还可进行分组、添加样式、变换、组合等操作,特征集包括嵌套变换(nestedtransformations)、剪切路径(clippingpaths)、alpha蒙板(alphamasks)、滤镜效果(filtereffects)、模板对象(templateobjects)和其它扩展(extensibility)。

特点

  1. 它提供了目前网络流行的GIF和JPEG格式无法具备的优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;可在SVG图像中保留可编辑和可搜寻的状态;平均来讲,SVG文件比JPEG和GIF格式的文件要小很多,因而下载也很快。

  2. SVG 使用 XML 格式定义图形

  3. SVG 文件可以直接插入网页,成为 DOM 的一部分,然后用 JavaScript 和 CSS 进行操作。

  4. SVG 图像可在任何的分辨率下被高质量地打印

引用方式

  1. 直接引用
<svg id="mysvg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
  <circle id="circle" cx="400" cy="300" r="50" />
</svg>
  1. 独立的文件引用
<img src="circle.svg">
<iframe id="if" src="circle.svg"></iframe>
<object id="object" data="circle.svg" type="image/svg+xml"></object>
<embed id="embed" src="circle.svg" type="image/svg+xml">
  1. symbol标签引用,可自定应viewBox(关于viewBox和preserveAspectRatio还需要另外去了解),这是 SVG xLink 引用时最重要的标签
	<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0;visibility:hidden">
		<defs>
			<symbol viewBox="0 0 28 33" id="user">
				<path fill-rule="evenodd" d="M20.798 19.289c2.636-2.002 4.215-5.091 4.215-8.437 0-5.886-4.845-10.647-10.808-10.647S3.397 4.966 3.397 10.852c0 3.345 1.578 6.433 4.212 8.435l.264-2.678C4.358 18.32 1.591 21.403.168 25.187l1.478.556v-1.579c-1.485.73-1.485.73-1.501 1.079-.054.188-.054.188-.069.278a2.58 2.58 0 0 0-.026.229 9.112 9.112 0 0 0-.019.4c-.008.265-.014.617-.018 1.039-.005.511-.006 1.037-.006 1.451v.027c-.004 1.732 1.41 3.129 3.154 3.129h22.082a3.18 3.18 0 0 0 3.172-3.153l.011-1.305.008-.897.003-.296.001-.083v-.022-.006-.001l.002-.278-.093-.262c-1.385-3.918-4.203-7.122-7.812-8.88l.263 2.678zm-1.911-2.516l-2.045 1.553 2.309 1.125c2.856 1.392 5.106 3.949 6.218 7.093l-.09-.54V26.033l-.001.083-.003.296-.008.897-.011 1.305c0 .01-.011.021-.013.021H3.161c-.007 0 .005.011.005.032v-.031c0-.404.001-.92.006-1.418.004-.4.01-.732.017-.969.004-.121.008-.212.012-.262l-.006.043c-.009.06-.009.06-.058.229-.01.336-.01.336-1.49 1.063H2.74l.385-1.024c1.141-3.035 3.35-5.495 6.131-6.849l2.309-1.124-2.045-1.554c-1.859-1.412-2.964-3.576-2.964-5.92 0-4.129 3.418-7.488 7.649-7.488s7.649 3.359 7.649 7.488c0 2.344-1.106 4.509-2.966 5.921z"
				 class="path1">
				</path>
			</symbol>
		</defs>
	</svg>
	<div class="box">
		<svg class="svg">
			<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user"></use>
		</svg>
	</div>

html5 canvas绘画图形

图片懒加载技术lazyload.js

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP