一、区分block,inline,inline-block
1、block
block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
block元素可以设置margin和padding属性。
2、inline
inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
inline元素设置width,height属性无效。
inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
3.inline-block
inline-block 后的元素创建了一个行级的块容器,该元素内部(内容)被格式化成一个块元素,同时元素本身则被格式化成一个行内元素。
直白一点的意思就是:inline-block 的元素既具有 block 元素可以设置宽高的特性,同时又具有 inline 元素默认不换行的特性。当然不仅仅是这些特性,比如 inline-block 元素也可以设置 vertical-align 属性。简而言之:
二、兼容性
相对于针对手机上高版本-webkit-内核浏览器的流体布局方式flex()以及box()盒模型,inline-block的兼容性可谓有容乃大,但是网上还是有一种说法--ie6和ie7不支持inline-block,真的是这样吗,我们来探索一下。
在 msdn 微软开发者社区,找到了 IE 从5.5 开始支持 inline-block 的证据:
The inline-block value is supported starting with Internet Explorer 5.5. You can use this value to give an object a layout without specifying the object’s height or width.
既然这样,我们为什么还会看到这样的一组适配ie6,ie7代码呢:
display:inline-block;
*display:inline;
*zoom:1;
究其原因发现,在IE下,display:inline-block只是触发了元素的layout。比如将display:inline-block给到div上,只能保证这个div拥有块元素的特征(可以设置宽度和高度),但是还是行布局(产生换行)。接下来要设置display:inline.更改这个div的布局为内联布局(不产生换行)。
三、
好了,给大家补充了基础知识之后就可以进入今天的正题了
1、神奇的水平空隙
元素被inline-block之后,水平方向会产生大小不固定的空隙
如图:五个li之间的间隙就是inline-block产生的神奇现象。
原来默认inline-block元素之间会产生换行符(类似空格之类的空白字符),除非你的html结构
2、实现列表两端自适应布局(摒弃float)
为什么我会摒弃float?
首先,对于float,会面临清除浮动,高度坍塌等常见问题,最重要的,会引起重绘和回流等效率问题,也是我摒弃他的最重要原因,所以能用inline-block代替他为什么还坚持使用float呢。
现在,请出我们的另一个主角--text-align:justify,并且当子元素高度不一致的时候我们可以通过verticle-align来调整垂直方向的位置。
请记住:列表(或文字)要两端对齐的前提就是内容必须超过一行
看吧,就是这么简单,但是大家也会注意到最后一行的排列问题,放心,我们一个个来解决。
(1)最后一行也两边排列:
.justify_fix{display:inline-block; width:100%; height:0; overflow:hidden;}
给html加一个class="justify_fix"的元素就可以了
(2)最后一行左对齐排列:
.left_fix{height:0; padding:0; overflow:hidden;}
html中补上n个class="left_fix"元素
n的个数就是每行元素的列表个数啦
好啦,问题解决了,怎么样,inline-block简单好用吧,只要记住和它搭配的这些个属性处理一般的布局应该不成问题。
第一篇文,各路大神请指教~

公眾號網頁更新緩存,這玩意兒,說簡單也簡單,說複雜也夠你喝一壺的。你辛辛苦苦更新了公眾號文章,結果用戶打開還是老版本,這滋味,誰受得了?這篇文章,咱就來扒一扒這背後的彎彎繞繞,以及如何優雅地解決這個問題。讀完之後,你就能輕鬆應對各種緩存難題,讓你的用戶始終體驗到最新鮮的內容。先說點基礎的。網頁緩存,說白了就是瀏覽器或者服務器為了提高訪問速度,把一些靜態資源(比如圖片、CSS、JS)或者頁面內容存儲起來。下次訪問時,直接從緩存裡取,不用再重新下載,速度自然快。但這玩意兒,也是個雙刃劍。新版本上線,

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

本文展示了使用CSS為網頁中添加有效的PNG邊框。 它認為,與JavaScript或庫相比,CSS提供了出色的性能,詳細介紹瞭如何調整邊界寬度,樣式和顏色以獲得微妙或突出的效果

本文討論了html< datalist>元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

本文解釋了HTML5< time>語義日期/時間表示的元素。 它強調了DateTime屬性對機器可讀性(ISO 8601格式)的重要性,並在人類可讀文本旁邊,增強Accessibilit

本文討論了HTML< Progress>元素,其目的,樣式和與< meter>元素。主要重點是使用< progress>為了完成任務和LT;儀表>對於stati

本文討論了HTML< meter>元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了< meter>從< progress>和前


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境