<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          object-fit和object-position_定義圖片和視頻元素在容器內(nèi)如何顯示的css屬性

          共 4815字,需瀏覽 10分鐘

           ·

          2021-03-06 12:35


          來源 | https://www.cnblogs.com/ljxlijiaxin/archive/2021/02/07/14385149.html
          當(dāng)我們給img標(biāo)簽加上固定的寬和高時,img標(biāo)簽中的圖片會默認(rèn)被拉伸變形,如圖:

          圖1-給img元素加上固定寬高后圖片被拉伸變形
          代碼如下:
          <body><img src="./demo.jpg" alt=""><style>    img{        width: 300px;        height: 150px;    }</style></body>

          如果我們需要讓該元素占據(jù)固定的寬高大小,而又不希望圖片被拉伸變形,可以在img標(biāo)簽外套一個div(或其他父級元素),然后將固定的寬高加在父級元素上,這樣img標(biāo)簽本身就可以只設(shè)定寬或高,讓另一邊自適應(yīng)。

          除此之外,還可以將該圖片作為元素背景,然后通過background-size和background-position等背景相關(guān)樣式屬性來設(shè)置該圖片顯示的位置和大小。

          但這些方法要么看上去頗為不便,要么并不適用于video標(biāo)簽中的視頻元素。

          為了更好且更方便地解決這類問題,我們可以使用接下來的這兩個css屬性——object-fit和object-position。

          1、object-fit

          css屬性object-fit一般用在img或video標(biāo)簽上,定義了元素內(nèi)容要如何適應(yīng)容器的寬高,IE15及以前的版本不支持此屬性。

          常用屬性值:

          object-fit: fill;

          默認(rèn)值,內(nèi)容可能會被拉伸以完全適應(yīng)容器的寬高。和不使用該屬性的效果一致。
          示例:

          <style>    img{        width: 300px;        height: 150px;        object-fit: fill;    }</style>



          圖2-設(shè)置“object-fit: fill;”效果與不使用該屬性一致,圖片會被拉伸以完全適應(yīng)元素寬高

          object-fit: cover;

          保持內(nèi)容的原有寬高比例進(jìn)行縮放,讓圖片的內(nèi)容能夠完全覆蓋元素容器,圖片可能會被剪切掉一部分。
          示例

          <style>    img{        width: 300px;        height: 150px;        object-fit: cover;    }</style>
          圖3-可以看見圖片沒有被拉伸,顯示出來的部分在原圖中處于中間位置

          object-fit: contain;

          保持內(nèi)容原有寬高比例進(jìn)行縮放,使內(nèi)容能夠完全呈現(xiàn)出來。
          示例:
          <style>    img{        width: 300px;        height: 150px;        object-fit: contain;    }</style>


          圖4-設(shè)置“object-fit: contain;”后圖片會在img標(biāo)簽內(nèi)按原有比例進(jìn)行縮放,使圖片全部顯示出來,可以看見圖片默認(rèn)顯示在容器正中間

          object-fit: scale-down;

          保持內(nèi)容的原有寬高比例進(jìn)行縮放,顯示的效果將與屬性值分別為none和contain時內(nèi)容尺寸較小的那個相同(contain的效果見上方,none的效果見下方)。
          示例

          <style>    img{        width: 300px;        height: 150px;        object-fit: scale-down;    }</style>

          圖5-可見在這個例子中,當(dāng)object-fit屬性值為contain時圖片的顯示尺寸更小,所以scale-down屬性值與contain屬性值效果相同

          object-fit: none;

          保持元素內(nèi)容原有的尺寸寬高,不會進(jìn)行縮放,元素內(nèi)容可能填不滿容器,也可能會被剪切掉一部分。
          示例
          <style>    img{        width: 300px;        height: 150px;        object-fit: none;    }</style>


          圖6-圖片內(nèi)容保持了原有的寬高尺寸,因?yàn)樵瓐D過大所以沒有完全顯示出來,顯示出來的部分在原圖中處于中間位置

          object-fit: initial;

          將該屬性的屬性值設(shè)為默認(rèn)值(object-fit屬性的默認(rèn)屬性值是fill)。
          示例

          <style>    img{        width: 300px;        height: 150px;        object-fit: initial;    }</style>

          圖7-將object-fit設(shè)為默認(rèn)值,顯示效果與fill相同

          object-fit: inherit;

          從父元素繼承該屬性的值。
          示例
          <body><div>    <img src="./demo.jpg" alt=""></div><style>    div{        object-fit: contain;    }    img{        width: 300px;        height: 150px;    }</style></body>

          圖8-只有父元素添加了object-fit屬性為contain,img標(biāo)簽未添加該屬性時的顯示情況
          <style>    div{        object-fit: contain;    }    img{        width: 300px;        height: 150px;        object-fit: inherit;    }</style>


          圖9-子元素img的object-fit屬性設(shè)為inherit后,從父元素繼承了該屬性的值

          2、object-position

          object-position屬性常與object-fit一起使用,一般用于img和video標(biāo)簽,它規(guī)定了元素內(nèi)容在容器內(nèi)顯示的位置,默認(rèn)為居中。該屬性同樣不被IE15及以前的瀏覽器支持。

          常用屬性值:

          position

          指定內(nèi)容在容器中的具體位置,第一個值指定內(nèi)容在x軸上的位置,第二個值指定內(nèi)容在y軸上的位置,默認(rèn)都是50%,兩個值之間通過空格隔開。第二個值可以省略,如果省略則取默認(rèn)值為居中??捎玫谋硎疚恢玫男问接校?/span>x%

          可以用百分比來表示內(nèi)容在容器中顯示的位置。
          示例

          <body><img src="./demo.jpg" alt=""><style>    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: 100% 0%;    }</style></body>

          圖10-object-fit屬性值為“contain”時,內(nèi)容的高撐滿容器,此時object-position的第二個表示y軸位置的值無論是百分之幾都不會影響內(nèi)容顯示的位置(但如果是具體的距離則可以)。
          同理,當(dāng)object-fit值為“cover”時,內(nèi)容的寬撐滿容器,object-position的第一個表示x軸位置的值無論是百分之幾都不會影響內(nèi)容顯示的位置,這里不再做測試。

          left/right/top/bottom/center

          可以使用方位值進(jìn)行設(shè)置。
          示例

          <style>    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: right bottom;    }</style>
          圖11-同百分比一樣,當(dāng)內(nèi)容的高(或?qū)挘螡M容器的高(或?qū)挘r,第二個(或第一個)方位值不會影響內(nèi)容顯示的位置。
          這里第二個方位值無論是“top”還是“bottom”、“center”,圖片的位置都不會發(fā)生改變。

          具體的距離(包括數(shù)值和單位)

          還可以為內(nèi)容的位置指定具體的x軸和y軸上的距離(包含數(shù)值和單位),以容器的左上角為(0,0)坐標(biāo),向右和向下分別為x軸和y軸的正半軸,可以設(shè)置負(fù)值。內(nèi)容超出容器的部分可能會被剪切。
          示例
          <style>    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: 50px 50px;    }</style>


          圖12-使用具體的距離進(jìn)行設(shè)置可以準(zhǔn)確明了的定位內(nèi)容在x軸和y軸上的位置,內(nèi)容超出容器的部分會被剪切

          混合使用

          指定內(nèi)容在容器內(nèi)的具體位置時,上述三種位置表示方法可以混合使用。
          示例

          <style>    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: right 50px;    }</style>

          圖13-不同的位置表示方法可以混合使用,一樣會生效

          initial

          設(shè)為默認(rèn)值,object-position屬性的默認(rèn)值是“50% 50%”。
          示例
          <style>    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: initial;    }</style>


          圖14-object-position屬性值默認(rèn)為居中顯示

          inherit

          從父元素繼承屬性值。
          示例

          <body><div>    <img src="./demo.jpg" alt=""></div><style>    div{        object-position: left;    }    img{        width: 300px;        height: 150px;        object-fit: contain;        object-position: inherit;    }</style></body>


          圖15-img標(biāo)簽可以從父元素div處繼承object-position的屬性值,如圖,圖片不再默認(rèn)居中顯示,而是和div元素樣式中定義的一樣靠左顯示

          寫在最后

          以上為全部內(nèi)容,感謝閱讀。
          本博文僅為學(xué)習(xí)記錄和分享交流,如有錯漏,還請幫忙指出,也歡迎更多補(bǔ)充,不勝感激。

          本文完?


          最后


          • 歡迎加我微信(winty230),拉你進(jìn)技術(shù)群,長期交流學(xué)習(xí)...

          • 歡迎關(guān)注「前端Q」,認(rèn)真學(xué)前端,做個專業(yè)的技術(shù)人...

          點(diǎn)個在看支持我吧
          瀏覽 41
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  岛国免费小电影在线 | 国产在线一区视频 | 久久国色 | 色综合天天干 | 欧美成人在线网站 |