What?

image-rendering作为现阶段还处于实验性质中的css属性,他的作用是在浏览器对图片进行比例缩放时,设置其缩放使用的算法,从而来得到我们最终想要的图片结果。而且这个属性可以应用于imgcanvasbackground-image中。

Note

由于该属性未得到所有浏览器的支持,本文直接在文章里应用该属性,所以阅读此文时请使用最新版本的浏览器

Usage

image{
image-rendering:auto;
}

其可选的值有:

  • auto

    使用默认算法,即将图片色彩进行平滑缩放,不同的浏览器采用的算法不一,如:firefox 3.0后的gecko使用双线性插值(bilinear interpolation)算法
  • crisp-edges

    使用算法达达到在绽放时保持对比度和边缘,在加工时不平滑色彩和使用模糊
  • pixelated

    当图片放大时,单纯地去放大像素点,缩小时与auto效果一样

Demo


pixelated

我们先来放主角一

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABlJREFUeNpiPhxqc9E2leHdK4usHToAAQYALAYGKZxwHcgAAAAASUVORK5CYII=">

看到了吗?这就是主角,一个大小为2*2像素的图片……

(图片君:你个鬼把我设计这么小,赶快把爷整大,不然削你!)

既然大哥发话了,小弟不能不听命,分分钟给大哥加了个width:400px

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABlJREFUeNpiPhxqc9E2leHdK4usHToAAQYALAYGKZxwHcgAAAAASUVORK5CYII=" style="width:400px;">

可是放大后……

(我:大哥,这还是你吗?你怎么变得这么色彩绚烂了)

(图片君:真是B了狗了!你对我做了什么)

(我:大哥,这不是我的错,是浏览器对你放大时使用了默认的算法把你的色彩平滑处理了……其实,现在还是挺好看的嘛!)

(图片君:别跟我扯犊子,给我整回来!!!!!)

大哥一怒,我连忙加点去给大家做整容手术,在它的属性里加了image-redering:pixelated

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABlJREFUeNpiPhxqc9E2leHdK4usHToAAQYALAYGKZxwHcgAAAAASUVORK5CYII=" style="width:400px;image-rendering:pixelated">

(我:这才是你嘛,大哥)

(图片君:这次不错,我还是我,是颜色不一样的烟火)


从大哥那里学到了pixelated的作用,而它在实际中的作用是怎么样的呢?

比如我有一个内容为zhiyishou.com二维码君,它的大小为50px*50px

二维码君虽说不小,但是比变壮后的大哥小多了,二维码君也来找我想说整整容,变成大哥那样

于是,我直接把它变大,成了这样:

这……你英姿飒爽的轮廓呢?看来还是不对,思索了一下是和大哥的病一样

我二话没说,直接把刚学会的pixelated加在了二维码君的身上

这才是俊朗的二维码君嘛!!

crisp-edges

从w3c官网上请来了一位嘉宾,它来和我们演示crisp-edges的用法:

我们把嘉宾君进行放大:

这是嘉宾君在普通放大后的结果,即使用auto来做色彩平滑,我们试试在嘉宾君身上使用pixelated,看看会怎么样

嘉宾君有点不耐烦了,有事要走,赶快给它加上crisp-edges看看效果(由于各个浏览器对该属性的支持还不太统一,所以得做单独配置)

img{
width: 400px;
image-rendering: -moz-crisp-edges; /* Firefox */
image-rendering: -o-crisp-edges; /* Opera */
image-rendering: -webkit-optimize-contrast;/* Webkit (non-standard naming) */
image-rendering: crisp-edges;
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */
}

可以看出来嘉宾君的边缘没有像第一次那样被平滑掉,尽可能保持自己的边缘,但是整个图片做了模糊处理,所以不像上面的pixelated一样棱角分明。

这个效果可以对图片缩放时进行效果的优化,但和pixelated的应用场景不一样。

Finally

我感觉这个属性最实用的还是pixelated,对于这个属性的使用,我们不能去绝对地依赖它来实现某种效果,只能说是用它去做优化,要做到有它的参与更好,没有也不差什么,因为这个属性太新了,在chrome中出现也是chrome41,而且chrome目前还不支持crisp-edges值

Chrome     |   ‡ 41+
Safari | * 7.1+
Firefox | * 35+
Opera | 28+
IE | Nope
Android | Nope
iOS | * 7.1+ ‡ Supports pixelated but not crisp-edges
* Supports crisp-edges but not pixelated

参考


image-rendering on MDN

image-rendering on W3C

image-rendering article

Finish.

css属性image-redering详解的更多相关文章

  1. css属性之vertical-align详解

    inline-block 该值会让元素生成一个内联级块容器(inline-level block container).一个inline-block的内部会被格式化成一个块盒,而该元素本身会被格式化成 ...

  2. css变换与动画详解

    举个栗子:--------元素整体居中.box{     position:absolute;top:50%;left:50%;    width:50px;    height:50px;    t ...

  3. css3浏览器私有属性前缀使用详解

    什么是浏览器私有属性前缀 CSS3的浏览器私有属性前缀是一个浏览器生产商经常使用的一种方式.它暗示该CSS属性或规则尚未成为W3C标准的一部分. 以下是几种常用前缀 -webkit- -moz- -m ...

  4. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  5. css过渡和2d详解及案例

    css过渡和2d详解及案例(案例在下方,不要着急) 本文重点: 1.在2D变化使用过程中,有些需求需要两种或两种以上的变化同时使用, 值得注意的是尽量把位移变化放在最前面,把其他变化放在最后面,属性值 ...

  6. css之Grid Layout详解

    css之Grid Layout详解 CSS Grid Layout擅长将页面划分为主要区域,或者在从HTML基元构建的控件的各个部分之间定义大小,位置和图层之间的关系. 与表格一样,网格布局使作者能够 ...

  7. css 之position用法详解

    css  之position用法详解: http://www.jb51.net/web/77495.html

  8. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  9. Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解

    只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...

  10. Maven配置文件POM属性最全详解

    注:本文内容来源于: BlueKitty1210 <Maven配置文件POM属性最全详解> <project xmlns="http://maven.apache.org/ ...

随机推荐

  1. Android自动化框架

    Android自动化框架 已有 2085 次阅读2014-8-26 12:19 | Android 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出 ...

  2. node:爬虫爬取网页图片

    代码地址如下:http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片 ...

  3. Linux-软件包管理-yum在线管理-光盘yum源

    mount /dev/cdrom /mnt/cdrom 将设备名/dev/cdrom安装到mnt/cdrom挂载点下面mount 查看当前所有挂载信息 cd /etc/yum.repos.d 切换到e ...

  4. Idea 翻译插件

    https://github.com/YiiGuxing/TranslationPlugin

  5. EMQ 压测问题

    一.单台服务器最高只能跑2W多一点问题描述 一直使用benchmark测试单台EMQ都没有超过3W链接数 一个独立的外网IP只能提供最多6W的端口号,但每个TCP需要分配一个指定的端口号.所以理论上讲 ...

  6. maven 私服中央库使用阿里云库

    1.admin登录 进入remote repositories management 2.  设置地址

  7. Netty(四):粘包问题描述及解决

    拆包粘包问题解决 netty使用tcp/ip协议传输数据.而tcp/ip协议是类似水流一样的数据传输方式.多次访问的时候有可能出现数据粘包的问题,解决这种问题的方式如下: 1 定长数据流 客户端和服务 ...

  8. Redis(八):spring data redis 理解

    前言 Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案.我们(官方)提供了一个 "template" ,这是一个高级 ...

  9. ACdream 1084 寒假安排(阶乘素因子分解)

    题目链接:传送门   分析: 求A(n,m)转化成k进制以后末尾0的个数.对k素因子分解,第i个因子为fac[i], 第i个因子的指数为num[i],然后再对n的对A(n,m)进行素因子分解,设cou ...

  10. 异步FIFO的FPGA实现

    本文大部分内容来自Clifford E. Cummings的<Simulation and Synthesis Techniques for Asynchronous FIFO Design&g ...