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

您的位置:首頁技術文章
文章詳情頁

css - 包裹img的a標簽為什么不和img元素一樣大

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

問題描述

代碼如下:

<!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://m.cgvv.com.cn/wenda/3516.html#'><img src='http://m.cgvv.com.cn/wenda/images/logo.png' alt='logo' /></a></h1></body></html>

當打開F12調試時,顯示的img元素如下:

css - 包裹img的a標簽為什么不和img元素一樣大

css - 包裹img的a標簽為什么不和img元素一樣大

我想要問的問題是:1.為什么h1元素是如下所示:(重點解釋為什么高是107.2px,而不是100px,寬是1536是因為瀏覽器的寬度,這個我懂)

css - 包裹img的a標簽為什么不和img元素一樣大

css - 包裹img的a標簽為什么不和img元素一樣大

2.a元素是如下所示:(重點解釋為什么a元素的區域沒有包裹住img元素的區域)

css - 包裹img的a標簽為什么不和img元素一樣大

css - 包裹img的a標簽為什么不和img元素一樣大

問題解答

回答1:第一個問題

的確是因為 img 是 inline,但根源是因為渲染時默認按照西文字體的基線對齊底部,多出來的的高度的多少由 h1 標簽的 font 和 font-size 共同決定,如下圖:

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

所用字體,在當前字號下,紅色部分最長有多長,就是你多出來的那幾像素。所以這其實是個字體排版的問題:西文字體為了顯示 baseline 下面的部分,會按字體自動在底下加上所需的空間,img 被當成行內元素排版,一并應用了這個策略。

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

<h1>gxj<img></h1>

效果:

css - 包裹img的a標簽為什么不和img元素一樣大

x 的底部是 baseline 的位置,gj 這類字符超出基線部分的長度就是多出來的高度。

知道原因方法就一堆了:

正經的 @cipchk 提的 display:block; 或者設置 img 的 vertical-align 為 baseline 以外的任意選項。個人喜歡后者,沒有影響到 img 的行內性質。

不正經的辦法你可以做一個特別的字體, baseline 在最底下。。。

第二個問題

你這種情況下:

a 標簽是 inline non-replaced 元素img 標簽是 inline replaced 元素

對應的 W3C 標準傳送門:

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

你想要的樣子:

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

你給的截圖里 a 標簽高度和內部 img 不匹配是正常現象,標準對于 inline non-replaced 元素高度的計算就是這樣規定的。(見上面鏈接)

想要達成前面 codepan 里結果:

<a> 設置 display: inline-block;(改變 a 標簽高度計算方式)

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

關于 css 的書好像沒幾本可選的,就《CSS權威指南(第3版)》感覺還不錯(只是翻過,不保證)。如果專攻頁面重構有必要去通讀下來。有能力讀文檔最好,省本書錢還省了被翻譯坑的可能。

網絡上 css 的教程見過最好的是這個:http://book.mixu.net/css/sing...

都是字典一樣的東西,不生動不形象也沒趣味,沒辦法,生啃吧。。。

回答2:

因為 img 默認是內聯,然后 line-height 行高會影響到行框的布局。

簡單的解決可以把行高去掉:

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

但是,行高又是字號 font-size 一起才會生效,所以:

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

可,如果內部是個塊級元素,也是可以的:

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

客官,您高興用哪一個都行。

回答3:

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

CSS初始化不是都會有這句么- -

回答4:

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

標簽: CSS
相關文章:
主站蜘蛛池模板: 免费国产黄网站在线观看视频 | 美女和男人免费网站视频 | 久久最新 | 亚洲欧美专区精品久久 | 成年网站视频在线观看 | 亚洲精品成人网久久久久久 | 成年视频在线 | 久久精品在线 | 亚洲区一区 | 国产一级毛片视频 | 国产三级精品91三级在专区 | 欧美成人a | 韩国一大片a毛片 | 日韩欧美一区二区久久 | 午夜爱爱毛片xxxx视频免费看 | 婷婷丁香久久 | 国产精品视_精品国产免费 国产精品视频久 | 九九在线偷拍视频在线播放 | 亚洲成a人不卡在线观看 | 国产精品久久久久久久午夜片 | 国内美女福利视频在线观看网站 | 久久视频精品线视频在线网站 | 国产精品免费视频一区二区三区 | 国产成人久久精品一区二区三区 | 国产亚洲精品一区999 | 国产视频日韩 | 99热播 | 久久久久久久一线毛片 | 久草免费在线播放视频 | 国产成人深夜福利在线观看 | 免费看男女做好爽好硬视频 | 男女午夜 | 欧美视频一区二区三区在线观看 | 国产不卡一区二区三区免费视 | 国产精品久久久久影视不卡 | 美女很黄很黄免费 | 成人精品国产 | 久久成人a毛片免费观看网站 | 亚洲精品国产免费 | 欧美黄网站 | 欧美国产综合视频 |