HTML img標簽


1.基本用法

<img src="kof5.jpg" alt="特瑞">

src屬性為圖片的鏈接地址,如果圖片加載失敗,代替圖片的就是alt屬性設置的文本

2.設置圖片的寬高

  • img標簽默認的寬高就是原圖的寬高
  • 設置圖片的寬高 (設置width屬性,無需單位)
<img src="kof5.jpg" width="240" alt="特瑞">

還可以寫成(設置樣式)

<img src="kof5.jpg" style="width:240px;" alt="特瑞">

3.img標簽的width屬性與樣式的優先級問題

先說結論:樣式的優先級比width屬性高
原理:在渲染這個img元素時,會將img標簽的width屬性的值解析成樣式渲染到元素中,只不過他的優先級比不上類選擇器而已,更別說內聯樣式了。
(1)沒有樣式的情況下,標簽的width屬性決定圖片的大小

<img src="resource/kyo.jpg" alt="草稚京" width="240">

執行下面的代碼,修改width屬性的值

document.querySelector('img').setAttribute('width',480)

(2)img標簽的width屬性的值會被解析成樣式渲染到元素中,但是優先級比樣式要低,存在樣式的情況下width會被覆蓋

.test{
    width: 200px
}
<!-- 圖片實際渲染的寬度為200px -->
<img src="timg.jpg" alt="ting" width="400" class="test">

width屬性被解析成樣式,但是優先級低

4.img標簽的width屬性/css樣式/dom元素width屬性三者的關系

(1)標簽中的width屬性(img.getAttribute("width"))與元素的width屬性(img.width)是不一樣的,img.width是由圖片的最終大小來絕對,相當於getComputedStyle的無單位版本。

例如:

<img src="timg.jpg" alt="ting" width="400" style="width:200px">
<script>
    window.onload=function(){
        var img = document.querySelector('img')
        console.log(getComputedStyle(img, false).width) // 200px
        console.log(img.width) // 200 img元素的width屬性
        console.log(img.getAttribute("width")) // 400 標簽的width屬性

        setTimeout(function(){
            //修改樣式
            img.style.width = '300px'
            //重新取值
            console.log(getComputedStyle(img, false).width) // 300px
            console.log(img.width) // 300 img元素的width屬性
            console.log(img.getAttribute("width")) // 400 標簽的width屬性
        },3000)
    }
</script>

渲染后的Dom元素:

<img src="timg.jpg" alt="ting" width="400" style="width: 300px;">

5.img圖片出現下邊距的問題

下面的代碼,一行最多只能放2張圖片。所以 第3,4張會自動放到下一行,不過兩行之間會出現一條邊距

<div style="width: 490px;border:1px solid blue;margin: 0 auto;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240">
    <img src="resource/kyo.jpg" alt="草稚京" width="240">
    <img src="resource/kyo.jpg" alt="草稚京" width="240">
    <img src="resource/kyo.jpg" alt="草稚京" width="240">
</div>

圖片左邊的邊距是代碼換行造成的,而圖片底部的空隙實際上涉及行內元素的布局模型,圖片默認的垂直對齊方式是基線,而基線的位置是與字體相關的,即vertical-align,他的默認值為baseline,將圖片的垂直對齊方式設置為 top 或 bottom就可以解決 這個問題

<div style="width: 490px;border:1px solid blue;margin: 0 auto;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="vertical-align: bottom">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="vertical-align: bottom">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="vertical-align: bottom">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="vertical-align: bottom">
</div>

解決辦法二:而基線的位置是與字體相關的,也就是說字體越大,空隙越大。可以將字體大小設置為0,不僅可以去除底部的邊距,還可以去除左邊的邊距

<div style="width: 490px;font-size:0px;">
    <img src="kof5.jpg" width=240 alt="特瑞">
    <img src="kof5.jpg" width=240 alt="特瑞">
    <img src="kof5.jpg" width=240 alt="特瑞">
    <img src="kof5.jpg" width=240 alt="特瑞">
</div>

解決辦法三:將img標簽設置為塊級元素(會強制換行)

<img src="resource/kyo.jpg" alt="草稚京" width="240" style="display: block;">
<img src="resource/kyo.jpg" alt="草稚京" width="240" style="display: block;">

解決辦法四:為img設置浮動(父元素高度會坍塌,要留意這個,設置父元素overflow: hidden可以解決)

<div style="width: 490px;border:1px solid blue;margin: 50px auto;overflow: hidden;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="float: left;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="float: left;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="float: left;">
    <img src="resource/kyo.jpg" alt="草稚京" width="240" style="float: left;">
</div>

6.圖片加載失敗時img元素的大小

img默認是行內元素,行內元素的大小由內容撐開,如果圖片加載失敗,撐開img元素的就只能是alt屬性對應的文本值
但是如果將img設置為塊級元素,塊級元素可以設置自己的寬高,這樣即使圖片加載失敗,也不影響img元素的大小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM