搜尋
首頁web前端css教學css常見的易混淆屬性和值的差異(一)

css的屬性很多,每個屬性的值也很多,組合起來便有成千上萬種。不同屬性之間的相互組合也可以產生不同的樣式,css真是一種優美的樣式設計語言。以下將工作中常見的易混淆的屬性和值進行總結:

1. line-height(行高) 帶單位與不帶單位的區別:

我們知道行高是可以繼承的。當父元素的行高值沒有帶上單位時,子元素使用自己的字體尺寸併計算出行高(子元素的行高=父元素中 line-height 的值 * 子元素的字體尺寸)。當父元素的行高值帶有單位時,父元素先根據自己的字體尺寸計算出行高(絕對單位px 時,無需計算),讓子元素繼承(子元素的行高=父元素的行高) 。

(1). 當父元素的行高值有單位時:

<div>
    <p>当哈罗德站在斑马线前按下行人按钮时——如果一直是她(莫琳,哈罗德的妻子)在做哈罗德该做的事,那么——“我是谁?”他就这样走过了邮局,连停都没有停下。原本很短的一段路由于内心的呼唤便再也无法停住脚步。</p>
    <p>一路上我记起了很多东西,很多我都没有意识到自己忘了的回忆,有戴维的,还有你和我的。我还记起了我的母亲,有些回忆很不容易,但大部分都很美。我很害怕,我怕有一天,或许很快,我就会把他们弄丢,这一次永远都找不回来了。”哈罗德泪流满面.</p>
</div>
body { background-color: #efefef; }
div {
    font-size: 12px;
    line-height: 1.5em;
}
p { font-size: 22px; }

如上:在父元素的字體大小為12px,行高為1.5em,子元素的字體大小為22px 時,顯示效果如下:

css常見的易混淆屬性和值的差異(一)

上例中,p 的行高為18px,因為它繼承了父元素div 的行高1.5em = 12 * 1.5 = 18px; 而自己的字體大小為22px,所以就有被擠壓的效果。另外文字所佔的高度與 font-size 沒有直接任何關係,倒是文字所佔的寬度與 font-size 的值是一樣的。

(2). 當父元素的行高值沒有單位時:

<div>
    <p>你以为走路是世界上最简单的事呢?只不过是把一只脚放到另一只脚前面。但我一直很惊讶这些原本是很本能的事情实际上做起来有多困难。而吃,吃也是一样的。说话也是。还有爱。这些东西都可以很难。</p>
    <p>我们大家都以为哈罗德徒步是因为很多年前他与奎妮有一段罗曼史。但那不是事实。哈罗德走这条路,是因为奎妮救了他,而他从来没有说过一句谢谢。</p>
</div>
body { background-color: #efefef; }
div {
    font-size: 12px;
    line-height: 1.5;
}
p { font-size: 22px; }

如上:在父元素的字體大小為12px,行高為1.5,子元素的字體大小為22px 時,顯示效果如下:

css常見的易混淆屬性和值的差異(一)

上例中,p 的行高為33px,因為它繼承了父元素div 的行高1.5, 而自己的字體大小為22px,所以自己的行高值就為22 * 1.5 = 33px,不會出現第一種情況下的被擠壓效果。

 

2. display(顯示方式)的值為inline-block,table,flex 的使用環境和區別:

(1). display: inline-block;

當一個元素顯示方式為display: block ; 時,不定義寬度和將寬度定義為:width: 100%; 或width: auto; 效果是一樣的,因為區塊級元素會繼承父元素的寬度值,按照100%(也就是和父元素一樣的寬度) 的值定義自己的寬度。但在實際專案中我們有時並非需要寬度為 100%,但又想要設定元素的 width, height(或 padding)等屬性。這時就需要用到display: inline-block;

dom如下:

<div class="text">
    <h3 id="成都王府井百货">成都王府井百货</h3>
    <p>成都王府井购物中心是北京王府井百货(集团)斥资4.5亿元打造的第一个购物中心项目。购物中心集购物、餐饮、娱乐、服务、文化、教育等多项功能于一身,建筑面积约10万平方米,共计5层营业。</p>
    <div><a href="#" title="查看详情" class="look-details">查看详情</a></div>
</div>
.text > div {
    margin-top: 1.2rem;
    text-align: center;
}
.text a.look-details {
    display: inline-block;
    padding: .5rem 1rem;
    font-size: .8rem;
    color: #fff;
    background-color: #e04728;
}

對於上面的查看詳情鏈接,定義為了display: inline-block;  就可以不用設置寬度和高度,通過設置padding 來實現自己想要的高度和寬度的想法了。顯示效果如下:

css常見的易混淆屬性和值的差異(一)

並且,為其父元素設定 text-align: center;  可以達到水平居中的目的。

將元素設為 display: inline-block; 既含有 display: block; 又含有 display: inline; 的效果,可設定其高度,又能將其居中,還可以避免寬度為 100%。

擴充:

父元素 text-align: center; 子元素 display: inline-block; 通常用於諸如新聞列表頁分頁效果。

<ul class="pagination">
    <!-- 当前页面时,给 li 添加 active 类 -->
    <li><a href="#" aria-label="Previous">&laquo;</a></li>
    <li class="active"><a href="#">1</a></li>
    <li><a href="#">2</a></li>
    <li><a href="#">3</a></li>
    <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li><a href="#" aria-label="Next">&raquo;</a></li>
</ul>
.pagination {
    display: inline-block;
    text-align: center;
}
.pagination:before,
.pagination:after {
    display: table;
    content: "";
}
.pagination:after { clear: both; }
.pagination {
    display: inline-block;
    text-align: center;
}
.pagination > li {            
    float: left;
    display: inline-block;
}
.pagination > li > a {
    display: block;
    margin-left: -1px; /*消除两个 a 在一起时引起的双倍左外边距*/
    padding: 6px 12px;
    color: #337ab7;
    text-decoration: none;
    background-color: #fff;
    border: 1px solid #ddd;
}
.pagination > li:first-child > a {
    margin-left: 0; /*第一个 a 不需要消除左外边距*/
    border-top-left-radius: 4px;
    border-bottom-left-radius: 4px;
}
.pagination > li:last-child > a {
    border-top-right-radius: 4px;
    border-bottom-right-radius: 4px;
}
.pagination > li > a:hover,
.pagination > li > a:focus {
    z-index: 2;
    color: #23527c;
    background-color: #eee;
    border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > a:hover,
.pagination > .active > a:focus {
    z-index: 3;
    color: #fff;
    cursor: default; /*当前这一页,让鼠标悬浮在 a 元素上时,显示为默认光标样式,给人感觉不能点击的效果*/
    background-color: #337ab7;
    border-color: #337ab7;
}

css常見的易混淆屬性和值的差異(一)

 (2). display: table;

第一種情況的擴展中,已經用到了 display: table; 使用 display: table; 此元素會作為區塊級表格來顯示(類似

級表格來顯示)(類似級表格來顯示)表格前後有換行符。

常用在清除浮動的需求中。一個元素之所以需要清除浮動,是因為自身沒有定義高度,而子元素有浮動。

如上例的擴充中,ul.pagenation 沒有定義高度,而子元素又有浮動,所以它需要清除浮動。清除浮動的方式如下:

.parent-box:before,
.parent-box:after {
    display: table;
    content: ""; /*伪元素 before 和 after 的样式里必须添加 content 属性才会起作用*/
}
.parent-box:after { clear: both; }

這種清除浮動的方式, ie8 不支援。如果需要支援ie6 - ie8,需要使用下面這種複雜一些的樣式(這樣的寫法暫時不理解):

.clearfix::after {
    clear: both;
    display: block;
    content: ” ”;
    height: 0;
    line-height: 0;
    visibility: hidden;
}
.clearfix { zoom: 1; }

(3). display: flex;

2009年,W3C 提出了一種新的方案- ---Flex佈局,可以簡單、完整、響應式地實現各種頁面佈局。目前,它已經得到了所有瀏覽器的支持,這意味著,現在就能很安全地使用這項功能。

css常見的易混淆屬性和值的差異(一)

菜鳥教學http://www.runoob.com/w3cnote/flex-grammar.html 中說得非常細緻。 🎜

內容很多,但是我們平常一般會用到的就三個屬性,display: flex; align-items: center; justify-content: center; 這三個屬性都是用在父元素中,display: flex; 定義子元素的佈局方式為彈性伸縮佈局,align-items: center; 使子元素垂直居中,justify-content: center; 使子元素水平居中。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯

感覺就像我沒有釋放:走向理智的旅程感覺就像我沒有釋放:走向理智的旅程Apr 23, 2025 am 09:19 AM

像白痴一樣部署的部署歸結為您部署的工具與降低複雜性與添加的複雜性之間的獎勵之間的不匹配。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),