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