本文作者:IMWeb 郭明慧 原文出处:IMWeb社区 未经同意,禁止转载
最近一直忙于将JavaScript学习的笔记整理成电子书,也没什么空闲时间写新的文章。趁着今天有点空闲,决定再来折腾一下CSS3中的两个属性:object-fit和object-position。
这两个奇葩的属性是搞毛的呢?其实它们是为了处理替换元素(replaced elements)的自适应问题,简单的说,就是处理替换元素的变形(这里指长宽比例变形)问题。
等等,好像多了一个名词,啥叫替换元素?替换元素其实是:
这个当然不是我头脑风暴来的,而是引用别人的解释:引用
常见的替换元素有<video>、<object>、<img>、<input type="image">、<svg>、<svg:image>和<svg:video>等。
要是看的稀里糊涂的也没关系,接着往下看,我相信你会懂得!
1、object-fit
语法:
object-fit: fill | contian | cover | none | scale-down;
不好意思,我又要摆妹子来诱惑你们了,看效果图:
上面的五个例子的代码:
<style>
.box{
position:relative;
float:left;
margin:0 10px 40px 10px;
width:150px;
height:150px;
.box>img{
width:100%;
height:100%;
background-color:#000;
.fill{
object-fit:fill;
.contain{
object-fit:contain;
.cover{
object-fit:cover;
.none{
object-fit:none;
.scale{
object-fit:scale-down;
</style>
<div class="box">
<img src="example-girl.jpg" class="fill" alt="">
</div>
<div class="box">
<img src="example-girl.jpg" class="contain" alt="">
</div>
<div class="box">
<img src="example-girl.jpg" class="cover" alt="">
</div>
<div class="box">
<img src="example-girl.jpg" class="none" alt="">
</div>
<div class="box">
<img src="example-girl.jpg" class="scale" alt="">
</div>
看到这些效果,我想同志们最关心的的应该是兼容性,点这里点这里
2、object-position
object-position 属性决定了它的盒子里面替换元素的对齐方式。
语法:
object-position: <position>
默认值是50% 50%,也就是居中效果,其取值和CSS中background-position属性取值一样。(如果不熟悉background-position,可以瞄瞄这里《CSS3 Background 》)
例如:替换元素位于内容区域的左上角
img{
object-fit: contain;
object-position: 0 0;
效果图:
例如:替换元素相对于左下角10px 10px地方定位
img{
object-fit: contain;
object-position: bottom 10px left 10px;
效果图:
当然,你也可以使用calc()来定位:
img{
object-fit: contain;
object-position: calc(100% - 10px) calc(100% - 10px);
效果图:
它还支持负数:
img{
object-fit: contain;
object-position: -10px calc(100% - 10px);
效果图:
总之,object-position的特性表现与backgound-position一样一样的。
到这里,这两个属性算是讲完了,就是这么简单。