国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

瀏覽:111日期:2023-01-16 16:44:26

問(wèn)題描述

代碼如下:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <style> body,h1{ padding:0; margin:0; font-family:arial; } img { border:none; } a {text-decoration:none; } body{background-color: #aaa; } </style></head><body> <!--img的大小為寬238px,高100px--> <h1><a href='http://www.cgvv.com.cn/wenda/3516.html#'><img src='http://www.cgvv.com.cn/wenda/images/logo.png' alt='logo' /></a></h1></body></html>

當(dāng)打開(kāi)F12調(diào)試時(shí),顯示的img元素如下:

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

我想要問(wèn)的問(wèn)題是:1.為什么h1元素是如下所示:(重點(diǎn)解釋為什么高是107.2px,而不是100px,寬是1536是因?yàn)闉g覽器的寬度,這個(gè)我懂)

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

2.a元素是如下所示:(重點(diǎn)解釋為什么a元素的區(qū)域沒(méi)有包裹住img元素的區(qū)域)

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

問(wèn)題解答

回答1:第一個(gè)問(wèn)題

的確是因?yàn)?img 是 inline,但根源是因?yàn)殇秩緯r(shí)默認(rèn)按照西文字體的基線對(duì)齊底部,多出來(lái)的的高度的多少由 h1 標(biāo)簽的 font 和 font-size 共同決定,如下圖:

https://en.wikipedia.org/wiki...css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

所用字體,在當(dāng)前字號(hào)下,紅色部分最長(zhǎng)有多長(zhǎng),就是你多出來(lái)的那幾像素。所以這其實(shí)是個(gè)字體排版的問(wèn)題:西文字體為了顯示 baseline 下面的部分,會(huì)按字體自動(dòng)在底下加上所需的空間,img 被當(dāng)成行內(nèi)元素排版,一并應(yīng)用了這個(gè)策略。

想看的更清楚一點(diǎn),你可以把你的 html 修改成這樣:

<h1>gxj<img></h1>

效果:

css - 包裹img的a標(biāo)簽為什么不和img元素一樣大

x 的底部是 baseline 的位置,gj 這類字符超出基線部分的長(zhǎng)度就是多出來(lái)的高度。

知道原因方法就一堆了:

正經(jīng)的 @cipchk 提的 display:block; 或者設(shè)置 img 的 vertical-align 為 baseline 以外的任意選項(xiàng)。個(gè)人喜歡后者,沒(méi)有影響到 img 的行內(nèi)性質(zhì)。

不正經(jīng)的辦法你可以做一個(gè)特別的字體, baseline 在最底下。。。

第二個(gè)問(wèn)題

你這種情況下:

a 標(biāo)簽是 inline non-replaced 元素img 標(biāo)簽是 inline replaced 元素

對(duì)應(yīng)的 W3C 標(biāo)準(zhǔn)傳送門(mén):

https://www.w3.org/TR/2011/RE...https://www.w3.org/TR/2011/RE...

你想要的樣子:

http://codepen.io/zcfan/pen/Z...

你給的截圖里 a 標(biāo)簽高度和內(nèi)部 img 不匹配是正常現(xiàn)象,標(biāo)準(zhǔn)對(duì)于 inline non-replaced 元素高度的計(jì)算就是這樣規(guī)定的。(見(jiàn)上面鏈接)

想要達(dá)成前面 codepan 里結(jié)果:

<a> 設(shè)置 display: inline-block;(改變 a 標(biāo)簽高度計(jì)算方式)

<img> 設(shè)置 vertical-align: bottom;(消除 img 底下額外的高度)

關(guān)于 css 的書(shū)好像沒(méi)幾本可選的,就《CSS權(quán)威指南(第3版)》感覺(jué)還不錯(cuò)(只是翻過(guò),不保證)。如果專攻頁(yè)面重構(gòu)有必要去通讀下來(lái)。有能力讀文檔最好,省本書(shū)錢(qián)還省了被翻譯坑的可能。

網(wǎng)絡(luò)上 css 的教程見(jiàn)過(guò)最好的是這個(gè):http://book.mixu.net/css/sing...

都是字典一樣的東西,不生動(dòng)不形象也沒(méi)趣味,沒(méi)辦法,生啃吧。。。

回答2:

因?yàn)?img 默認(rèn)是內(nèi)聯(lián),然后 line-height 行高會(huì)影響到行框的布局。

簡(jiǎn)單的解決可以把行高去掉:

/* 方法一 */h1 { line-height: 0; }

但是,行高又是字號(hào) font-size 一起才會(huì)生效,所以:

/* 方法二 */h1 { font-size: 0; }

可,如果內(nèi)部是個(gè)塊級(jí)元素,也是可以的:

/* 方法三 */img { display:block; }

客官,您高興用哪一個(gè)都行。

回答3:

img { vertical-align: middle; border: 0; outline: 0;}

CSS初始化不是都會(huì)有這句么- -

回答4:

https://www.zhihu.com/questio... 里面有詳細(xì)解釋,我一般是初始化的時(shí)候img{vertical-align:top}

標(biāo)簽: CSS
相關(guān)文章:
主站蜘蛛池模板: 久久久香蕉| 99精品视频在线观看 | 国产在线不卡午夜精品2021 | 久久亚洲一级α片 | 欧美一级毛片图 | 成年男女免费视频网站 | 精品国产成人综合久久小说 | 亚洲一区二区在线免费观看 | 日韩欧美精品在线观看 | 九九大香尹人视频免费 | 久久er热这里只有精品23 | 欧美精品videosbestsex另类 | 国产欧美日韩精品在线 | 国产精品久久久久久久久久日本 | 九色福利 | 免费看a级片 | 精品国产一区二区三区免费 | 精品国产a| 在线观看日本永久免费视频 | 国产成人久久精品 | 日韩中文精品亚洲第三区 | 日本一级全黄大片 | 91免费永久国产在线观看 | 在线满18网站观看视频 | 亚洲高清综合 | 在线成人免费看大片 | 日韩精品特黄毛片免费看 | 成人欧美视频免费看黄黄 | 精品久久久久不卡无毒 | 欧美三级欧美一级 | 欧美日韩亚洲视频 | 国产成人精品三级91在线影院 | 欧美一级性视频 | 国产在线播放成人免费 | 性做久久久久免费看 | 一级毛片真人不卡免费播 | 在线a亚洲视频播放在线观看 | 精品欧美日韩一区二区三区 | 美女三级在线 | 国产毛片在线高清视频 | 久久久在线视频精品免费观看 |