background-position 百分比问题,精灵图的实现
2017-01-07 18:00
309 查看
background-position
一 当给一个元素设置背景图片的时候,背景图片的background-position可以设置背景图片的位置:有以下几种方式:
语法:background-position : length || length
background-position : position || position
第一个值代表是水平位置,第二个值代表是垂直位置;
a 两个值默认都是 0% 0% 表示背景图片在元素的左上角显示,超出部分无法显示b 如果只设置了其中一个,另外一个没有设置,那么默认是居中效果,超出部分无法显示
c 如果没有设置background的值,默认是在元素区域(content(width+height)+padding)左上角显示,不受padding值影响
d 其实,背景图片嘛 ,就是给内容区域(content(width+height)+padding)设置的背景,所以不会受padding的“挤压 打压”。
length : 百分数 | 由浮点数字和单位标识符组成的长度值
position : top | center | bottom | left | center | right
注意点:第一:必须首先指定background-image链接
第二:明确基准问题,图片的背景位置是相对于图片所在元素的整体的宽高(content+padding:也就是boder内边界而言的);
第一种:由浮点数字和单位标识符组成的长度值,比如 em ex px 等单位background-position : 10px 20px ;表示距离元素左边border内边界10px ,距离元素上边border内边界20px;
第二种:top | center | bottom | left | center | right
backgroun-position:right top ;表示图片在元素(content+padding)围成的区域中,水平位置居中,垂直距离图片顶部紧贴区域顶部;
第三种,通过百分数设置宽度;重点说明(看这个和尚是不是天龙八部的虚竹,尜尜)
还是上代码吧 哦 漏 你要不要一起“上”代码,然后撸起来。(纯洁的微笑)
html代码
#img { background:no-repeat url('images/con-1.jpg'); background-position: 50% 50% ; padding-left: 100px; margin: 100px; width: 680px; height: 620px; border:2px green solid; border: 50px blue solid; /*图片的大小是width 380*height 320*/ } <div id="img"></div>
容器的宽高等于 content+padding 此时 容器的宽度 W = 680px+100px(padding-left)
容器的高度等于 H = 620px (没有设置padding);
相对于左边的距离 x = ( W - 380 ) * 50% ; 200px
相对于上边的距离 y = ( H - 320 ) * 50% ; 150px
等价于 background-position : center center;
background-position: 100% 100% ;
此时 x = ( W - 380 ) *100% ; 400px
y = ( H - 320 ) * 100%; 300px
等价于 background-position : right bottom;
二 重点理解:
第一,背景图片的百分比其实是相对于(元素的宽高 - 图片的宽高)为基准,第二,背景图片是元素的背景,不受padding的影响,但是后期计算元素的宽高要算上padding
第三,如果两个值都不设置,那么默认相对于元素左上角对齐,如果只设置了其中的一个,那么另外一个默认居中。
三,还有一种情况就是容器的宽度小于图片的宽高,其定位仍然遵循这个规律,只不过超出部分会无法显示,这也是精灵图实现的原理。
相关链接:http://blog.csdn.net/qq_35809245/article/details/53638986相关文章推荐
- CSS中background:url(图片) 不能显示的问题
- python fabric简单的配置账号和密码
- 生产者实现应用内分布式事务管理
- Linux基础介绍【第九篇】
- Android 开发工程师面试指南
- JXL和POI两种导出excel方式
- 快递100接口使用
- 动态规划:求最长公共子序列问题
- HttpClient使用详解
- ListView中嵌套EditText
- Windows2012R2创建Hyper-v虚拟化群集 推荐
- 整体二分QAQ
- AJAX问题之XMLHttpRequest.status = 0&&XMLHttpRequest.readyState=1
- 2016年终总结
- aop aspect controller
- 版本控制工具SVN
- 前端常用的WindowsCMD命令
- tcp窗口滑动以及拥塞控制
- C++中关于[]静态数组和new分配的动态数组的区别分析
- 【机器学习】k近邻法