用CSS3中的transfrom:scale{x,y}来放大,如下:
<style>
*{margin:0padding:0}
div{border:solid 1px #333width:40pxheight:40px}
div img{width:40pxheight:40pxtransition:all 0.3s}
div img:hover{transfrom:scale{2,2}}//从中心放大两部
</style>
<div><img src="图片地址" alt=""/></div>
扩展资料:注意事项
transfrom是利用线性代数来存放一个控件(或许是图片)的具体信息.(由于可以通过transfrom直接操作控件.所以肯定直接或者间接的存储着点的信息和控件的大小等信息)
1、移动.左移右移或者上移下移:
CGAffineTransformMakeTranslation(X偏移量,Y偏移量)
CGAffineTransformTranslate(在某个transform的基础上-一般为自身,X偏移量,Y偏移量)
2、改变大小(形变):
CGAffineTransformMakeScale(宽缩放的倍数,高缩放的倍数)
CGAffineTransformScale(在某个transform的基础上-一般为自身,宽缩放的倍数,高缩放的倍数)
重绘(Repaint):布局没有发生改变,改变那些不会影响元素在网页中的位置的元素样式时,譬如background-color(背景色), border-color(边框色), visibility(可见性),浏览器只会用新的样式将元素重绘一次(这就是重绘,或者说重新构造样式)重排(Reflow):当DOM变化影响了元素的几何属性(宽、高改变等等),浏览器此时需要重新计算元素几何属性,并且页面中其他元素的几何属性可能会受影响这样渲染树就发生了改变,也就是重新构造RenderTree渲染树
触发重排的场景:
1、页面初始渲染
2、DOM操作(元素添加、删除、修改或者元素顺序的改变)
3、元素位置、尺寸变化(更改类的属性),元素内容发生变化(如图片、文本)
4、激活伪类
5、浏览器窗口动作(拖拽、拉伸等)
6、添加或者删除样式表
重绘重排的代价:耗时,导致浏览器卡慢。
如何减少重绘和重排
1、减少直接操作dom元素,改用className用于控制
2、尽量减少table使用,table属性变化使用会直接导致布局重排或者重绘
3、当dom元素position属性为fixed或者absolute, 可以通过css形变触发动画效果,此时是不会出发reflow的
4、不要把 DOM 结点的属性值放在一个循环里当成循环里的变量
5、如果需要创建多个DOM节点,可以使用DocumentFragment创建完后一次性的加入document
浏览器自身的优化
浏览器会维护1个队列,把所有会引起回流、重绘的操作放入这个队列,等队列中的操作到了一定的数量或者到了一定的时间间隔,浏览器就会flush队列,进行一个批处理。这样就会让多次的回流、重绘变成一次回流重绘
怎么利用CSS3绘制三角形绘制三角形的原理就是让一个块元素没有宽度和高度,只设置边框,通过让其他三遍transparent就可以实现三角形,这并不是CSS3才能做得。如果一定要CSS3的话,可以看一下CSS3的形变是否可以实现。