99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

CSS3 object-fit和object-position

2018-06-19 18:40 更新
      最近一直忙于將JavaScript學(xué)習(xí)的筆記整理成電子書(shū),也沒(méi)什么空閑時(shí)間寫(xiě)新的文章。趁著今天有點(diǎn)空閑,決定再來(lái)折騰一下CSS3中的兩個(gè)屬性:object-fitobject-position。

這兩個(gè)奇葩的屬性是搞毛的呢?其實(shí)它們是為了處理替換元素(replaced elements)的自適應(yīng)問(wèn)題,簡(jiǎn)單的說(shuō),就是處理替換元素的變形(這里指長(zhǎng)寬比例變形)問(wèn)題。

等等,好像多了一個(gè)名詞,啥叫替換元素?替換元素其實(shí)是:

  • 其內(nèi)容不受CSS視覺(jué)格式化模型控制的元素,比如image,嵌入的文檔(iframe之類(lèi))或者applet,叫做替換元素。比:img元素的內(nèi)容通常會(huì)被其src屬性指定的圖像替換掉。替換元素通常有其固有的尺寸:一個(gè)固有的寬度,一個(gè)固有的高度和一個(gè)固有的比率。比如一幅位圖有固有用絕對(duì)單位指定的寬度和高度,從而也有固有的寬高比率。另一方面,其他文檔也可能沒(méi)有固有的尺寸,比如一個(gè)空白的html文檔。
  • CSS渲染模型不考慮替換元素內(nèi)容的渲染。這些替換元素的展現(xiàn)獨(dú)立于CSS。object,video,textarea,input也是替換元素,audio和canvas在某些特定情形下為替換元素。使用CSS的content屬性插入的對(duì)象是匿名替換元素。

這個(gè)當(dāng)然不是我頭腦風(fēng)暴來(lái)的,而是引用別人的解釋?zhuān)?a rel="external nofollow" target="_blank" target="_blank" style="font-size: 1.8rem;">引用

常見(jiàn)的替換元素有<video>、<object>、<img>、<input type="image">、<svg>、<svg:image>和<svg:video>等。

要是看的稀里糊涂的也沒(méi)關(guān)系,接著往下看,我相信你會(huì)懂得!

1、object-fit

語(yǔ)法:

object-fit: fill | contian | cover | none | scale-down;

  • fill : 默認(rèn)值。填充,可替換元素填滿(mǎn)整個(gè)內(nèi)容區(qū)域,可能會(huì)改變長(zhǎng)寬比,導(dǎo)致拉伸。
  • contain : 包含,保持原始的尺寸比例,保證可替換元素完整顯示,寬度或高度至少有一個(gè)和內(nèi)容區(qū)域的寬度或高度一致,部分內(nèi)容會(huì)空白。
  • cover : 覆蓋,保持原始的尺寸比例,保證內(nèi)容區(qū)域被填滿(mǎn)。因此,可替換元素可能會(huì)被切掉一部分,從而不能完整展示。
  • none : 保持可替換元素原尺寸和比例。
  • scale-down : 等比縮小。就好像依次設(shè)置了none或contain, 最終呈現(xiàn)的是尺寸比較小的那個(gè)。

不好意思,我又要擺妹子來(lái)誘惑你們了,看效果圖:

上面的五個(gè)例子的代碼:

<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>


看到這些效果,我想同志們最關(guān)心的的應(yīng)該是兼容性,點(diǎn)這里點(diǎn)這里

2、object-position

object-position屬性決定了它的盒子里面替換元素的對(duì)齊方式。

語(yǔ)法:

object-position: <position>

默認(rèn)值是50% 50%,也就是居中效果,其取值和CSS中background-position屬性取值一樣。(如果不熟悉background-position,可以瞄瞄這里《CSS3 Background》)

例如:替換元素位于內(nèi)容區(qū)域的左上角

img{

  object-fit: contain;

  object-position: 0 0;

}

效果圖:

例如:替換元素相對(duì)于左下角10px 10px地方定位

img{

  object-fit: contain;

  object-position: bottom 10px left 10px;

}

效果圖:

當(dāng)然,你也可以使用calc()來(lái)定位:

img{

  object-fit: contain;

  object-position: calc(100% - 10px) calc(100% - 10px);

}

效果圖:

它還支持負(fù)數(shù):

img{

  object-fit: contain;

  object-position: -10px calc(100% - 10px);

}

效果圖:


總之,object-position的特性表現(xiàn)與backgound-position一樣一樣的。

兼容性:點(diǎn)這里

到這里,這兩個(gè)屬性算是講完了,就是這么簡(jiǎn)單。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)