們?cè)鯓觼?lái)提高和優(yōu)化javascript里嵌套的if語(yǔ)句呢?
if (color) {
if (color === 'black') {
printBlackBackground();
} else if (color === 'red') {
printRedBackground();
} else if (color === 'blue') {
printBlueBackground();
} else if (color === 'green') {
printGreenBackground();
} else {
printYellowBackground();
}
}
一種方法來(lái)提高嵌套的if語(yǔ)句是使用switch語(yǔ)句。雖然它不那么啰嗦而且排列整齊,但是并不建議使用它,因?yàn)檫@對(duì)于調(diào)試錯(cuò)誤很困難。
switch(color) {
case 'black':
printBlackBackground();
break;
case 'red':
printRedBackground();
break;
case 'blue':
printBlueBackground();
break;
case 'green':
printGreenBackground();
break;
default:
printYellowBackground();
}
如果可以重構(gòu)的話(huà),我們可以試著簡(jiǎn)化函數(shù)。比如不需要為每個(gè)顏色寫(xiě)一個(gè)函數(shù),而是將顏色作為函數(shù)的參數(shù)。
function printBackground(color) {
if (!color || typeof color !== 'string') {
return; // Invalid color, return immediately
}
}
但是如果不能重構(gòu)的話(huà),我們必須避免過(guò)多的條件檢查,避免過(guò)多使用switch。我們必須考慮最有效率的方法,使用object。
switch(true) {
case (typeof color === 'string' && color === 'black'):
printBlackBackground();
break;
case (typeof color === 'string' && color === 'red'):
printRedBackground();
break;
case (typeof color === 'string' && color === 'blue'):
printBlueBackground();
break;
case (typeof color === 'string' && color === 'green'):
printGreenBackground();
break;
case (typeof color === 'string' && color === 'yellow'):
printYellowBackground();
break;
}
但是我們應(yīng)該時(shí)刻注意避免太多判斷在一個(gè)條件里,盡量少地使用switch,考慮最有效率的方法:借助object。
var colorObj = {
'black': printBlackBackground,
'red': printRedBackground,
'blue': printBlueBackground,
'green': printGreenBackground,
'yellow': printYellowBackground
};
if (color in colorObj) {
colorObj[color]();
}
各種技巧來(lái)自于網(wǎng)上學(xué)習(xí)和工作積累
節(jié)我們學(xué)習(xí) Sass 中的嵌套,嵌套大家應(yīng)該不陌生,在 HTML 中就支持標(biāo)簽的嵌套。Sass 中允許一個(gè) CSS 樣式嵌套進(jìn)另一個(gè)樣式中,內(nèi)層樣式僅適用于外層樣式的選擇器范圍內(nèi)。
例如下面這段 CSS 代碼:
.big {
color: #ccc;
}
.big .small {
font-size: 14px;
}
如果我們要使用 Sass 中的嵌套語(yǔ)法來(lái)寫(xiě),如下所示:
從上圖我們可以看到,嵌套的語(yǔ)法其實(shí)很簡(jiǎn)單,相較于 CSS 語(yǔ)言中后代選擇器的寫(xiě)法,嵌套規(guī)則看起來(lái)要直觀很多。
使用 Sass 嵌套來(lái)寫(xiě)代碼,可以減少父類(lèi)選擇器的重復(fù),不過(guò)需要注意的是,我們最好不要嵌套太多層選擇器,因?yàn)榍短讓訑?shù)越多性能越低。一般我們?cè)趯?shí)際應(yīng)用中,嵌套三層左右就差不多啦。
在嵌套 CSS 規(guī)則時(shí),有時(shí)候我們需要直接使用到嵌套外層的父選擇器,比如當(dāng)給某一個(gè)元素設(shè)定 hover 樣式時(shí)或者是當(dāng) body 元素有個(gè) classname 時(shí),可以用 & 符號(hào)來(lái)表示嵌套規(guī)則外層的父選擇器。
例如下面這段代碼:
a {
color: #ccc;
font-size: 12px;
}
a:hover {
color: #000;
}
我們可以這樣寫(xiě):
上圖中 & 符號(hào)被解析為選擇器 a,即父選擇器。一般 & 符號(hào)是出現(xiàn)在選擇器的前面位置,例如上述代碼中的 &:hover。
除此之外,我們也可以在 & 符號(hào)后面添加一些后綴,表示在父選擇器名稱(chēng)的基礎(chǔ)上組合成新的選擇器名稱(chēng)。
例如下面這段代碼中,選擇器名稱(chēng)的前綴都一樣:
.top {
background-color: #ccc;
}
.top-div {
font-size: 14px;
}
.top-p {
color: #000;
}
.top-p__span {
font-size: 12px;
}
那我們就可以將這些前綴都使用 & 代替:
許多 CSS 屬性具有相同的前綴 ,例如 font-family 和 font-size、font-weight、font-style 等,這些屬性遵循相同的命名空間,即 font 。為了便于管理這樣的屬性,同時(shí)也為了避免重復(fù)輸入,Sass 允許將屬性嵌套在命名空間中。要實(shí)現(xiàn)屬性的嵌套,只需要在命名空間后面加上一個(gè)冒號(hào) : 即可。
我們來(lái)看一個(gè)例子:
.top {
font-size: 14px;
font-weight: bold;
font-style: normal;
}
例如上面這段代碼中,如果我們使用 Sass 來(lái)寫(xiě),只需要在 .top 選擇器中,在 font 命名空間后面加上一個(gè) : 冒號(hào),然后將其他屬性使用花括號(hào)括起來(lái),里面的屬性就可以不用寫(xiě) font- 前綴部分了。如下圖:
Sass 額外提供了一種特殊類(lèi)型的選擇器,叫做占位符選擇器 (placeholder selector),它與常用的 id 與 class 選擇器寫(xiě)法相似,只是將 # 或 . 替換成了百分號(hào) %,然后通過(guò) @extend 來(lái)使用。 如果不使用 @extend 指令,則無(wú)法在 CSS 中顯示結(jié)果。
%xkd{
color: #000;
}
.box{
@extend %xkd;
font-size:14px;
}
編譯成 CSS 代碼:
.box {
color: #000;
}
.box {
font-size: 14px;
}
上述代碼中,@extend 指令允許一個(gè)選擇器繼承另一個(gè)選擇器中的樣式。
這里是云端源想IT,幫你輕松學(xué)IT”
嗨~ 今天的你過(guò)得還好嗎?
睡眠等同于希望
每次醒來(lái)都是一個(gè)新的開(kāi)始
一個(gè)新的希望
- 2024.03.22 -
在Web開(kāi)發(fā)的世界中,CSS(層疊樣式表)是構(gòu)建視覺(jué)吸引力和定義網(wǎng)頁(yè)布局的不可或缺的工具。
掌握如何恰當(dāng)?shù)匾隒SS樣式以及理解它們的優(yōu)先級(jí)規(guī)則,對(duì)于前端開(kāi)發(fā)者來(lái)說(shuō)至關(guān)重要。今天,我們就來(lái)深入探討CSS的四種引入方式,以及選擇器的優(yōu)先級(jí)之謎,了解常用的CSS樣式及使用方法!
CSS(層疊樣式表)為網(wǎng)頁(yè)提供了豐富的樣式定義,允許開(kāi)發(fā)者通過(guò)多種方式將樣式應(yīng)用到HTML文檔中。以下是四種主要的CSS引入方式:
1.1 行內(nèi)樣式
這是最直接也最簡(jiǎn)單的方法,通過(guò)在HTML元素的style屬性中直接編寫(xiě)CSS規(guī)則。
示例:
<p style="color: red; font-size: 20px;">這是一段紅色的文字。</p>
這種方式的優(yōu)點(diǎn)是簡(jiǎn)單快捷,但缺點(diǎn)是它使得HTML代碼與樣式混合,不夠純凈,且不利于樣式的復(fù)用和維護(hù)。
1.2 內(nèi)嵌樣式
在一個(gè)HTML文檔中使用<style>標(biāo)簽將CSS規(guī)則嵌入到HTML的head部分。這種方式適用于定義特定于某一頁(yè)面的樣式。
示例:
<head>
<style>
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
1.3 外部樣式
這是最常用的方法,它通過(guò)<link>標(biāo)簽將外部的CSS文件鏈接到HTML文檔中。這種方法的優(yōu)勢(shì)在于可以在多個(gè)頁(yè)面間共享同一個(gè)樣式文件,有助于保持代碼的整潔和一致性。
示例:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
其中,mystyle.css的內(nèi)容可能如下:
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
1.4 導(dǎo)入樣式
使用@import語(yǔ)句在CSS文件中導(dǎo)入另一個(gè)CSS文件。盡管這種方法可以分離樣式表,但它通常不被推薦使用,因?yàn)槠浼虞d時(shí)序可能會(huì)影響頁(yè)面渲染效率。
示例:
@import url('https://fonts.googleapis.com/css?family=Roboto');
body {
font-family: 'Roboto', sans-serif;
}
1.5 樣式單優(yōu)先級(jí)
作用域范圍:外部樣式表>內(nèi)部樣式表>行內(nèi)樣式表
優(yōu)先級(jí):
2.1 字體樣式
normal - 文字正常顯示
italic - 文本以斜體顯示
oblique - 文本為“傾斜”(傾斜與斜體非常相似,但支持較少)
font-weight 屬性指定字體的粗細(xì)
示例:
<!DOCTYPE html>
<html>
<head>
<style>
.sp1{
color: darkorange;
font-size: 20px;
font-weight: bolder; /* bolder 字體是否加粗*/
font-style: italic; /* italic 字體是否傾斜*/
font-family: "宋體"; /* 設(shè)置字體樣式*/
}
.sp2{
/* 簡(jiǎn)寫(xiě) */
/* 順序不能能變:style-weigth-size-family */
font:italic bolder 15px 宋體 ;
color:rgb(28, 235, 97);
}
</style>
<body>
<span>
編程學(xué)習(xí),從云端源想開(kāi)始!
</span><br>
<span>
讓知識(shí)觸手可及
</span>
<p>讓知識(shí)觸手可及</p>
</body>
</html>
2.2 文本樣式
color: 字體顏色
text-align: center; - - 文本對(duì)齊方式
text-decoration:none; - - 文本的線(xiàn)
text-shadow: pink 5px 5px 2px; - - 文本的陰影 【陰影顏色-水平方向的偏移量-垂直方向的偏移量-模糊距離】
line-height: - - 行高 (文本在標(biāo)簽內(nèi)所占的高度)
width:
height:
border: 1px #ffffff solid; - - 盒子邊框【邊框粗細(xì)-顏色-邊框線(xiàn)樣式】
示例:
<style>
.p{
color: rgb(0, 255, 21); /* 字體顏色 */
text-align: center; /* 文本對(duì)齊方式 */
text-decoration:none; /* 文本的線(xiàn) */
text-shadow: pink 5px 5px 2px; /* 文本的陰影 【陰影顏色-水平方向的偏移量-垂直方向的偏移量-模糊距離】*/
line-height: 400px; /* 行高 (文本在標(biāo)簽內(nèi)所占的高度)*/
width: 400px;
height: 300px;
border: 1px rgb(76, 14, 223) solid; /* 盒子邊框【邊框粗細(xì)-顏色-邊框線(xiàn)樣式】 */
}
</style>
</head>
<body>
<p>歡迎來(lái)到云端源想!</p>
<a href="https://www.baidu.com"></a>
</body>
2.3 背景樣式
width: 500px;
height: 1200px;
background-color: pink; - - 背景顏色
background-image: url(…/img/background.jpg); - - 背景圖片
background-repeat: no-repeat; - - 背景圖片是否平鋪
background-position: left top; - - 指定背景圖片的位置
background-attachment: fixed; - - 背景圖片是否隨著標(biāo)簽滾動(dòng) 【fixed-固定 scroll-滾動(dòng)】
示例:
<style>
.d{
width: 500px;
height: 1200px;
background-color: pink; /* 背景顏色 */
background-image: url(../img/background.jpg); /* 背景圖片 */
background-repeat: no-repeat; /* 背景圖片是否平鋪 */
background-position: left top; /* 指定背景圖片的位置 */
background-attachment: fixed; /* 背景圖片是否隨著標(biāo)簽滾動(dòng) 【fixed-固定 scroll-滾動(dòng)】 */
}
</style>
</head>
<body>
<div>
</div>
2.4 列表樣式
<!DOCTYPE html>
<html>
<head>
<style>
li{
background-color: lemonchiffon;
/*列表樣式:常用取值:none-無(wú)樣式 square-正方形 circle-空心圓 decimal-數(shù)字*/
list-style-type: circle;
/*列表樣式為自定義圖片*/
list-style-image: url(../img/2.jpg);
/*列表樣式的放置位置*/
list-style-position: inside;
/*列表樣式縮寫(xiě)*/
list-style: square url(../img/2.jpg) inside;
/*常用的列表樣式*/
list-style: none;
}
</style>
</head>
<body>
<ul>
<li>列表項(xiàng)1</li>
<li>列表項(xiàng)2</li>
<li>列表項(xiàng)3</li>
</ul>
</body>
</html>
2.5 邊框樣式
<!DOCTYPE html>
<html>
<head>
<style>
.border{
/*邊框?qū)挾?/
border-width: 2px;
/*邊框顏色*/
border-color: red;
/*邊框樣式:solid 實(shí)線(xiàn) dotted 點(diǎn)線(xiàn) dashed 虛線(xiàn)*/
border-style: dashed;
/*邊框樣式縮寫(xiě):樣式 顏色 寬度*/
border:solid green 5px;
/*邊框可以為4個(gè)方向分別設(shè)置*/
border-top: dashed black 4px;
border-right: dashed #FF00FF 4px;
border-bottom: dotted darkblue 4px;
border-left: solid fuchsia 5px;
/*沒(méi)有邊框*/
border: none;
/*常用的細(xì)邊框樣式*/
border: solid 1px #ccc;
}
</style>
</head>
<body>
<div class="border">這是一個(gè)帶有邊框的元素</div>
</body>
</html>
2.6 盒子模型
所有的html元素可以看做是盒子,在css中,"box model"是用來(lái)設(shè)計(jì)和布局時(shí)使用。
CSS盒子模型本質(zhì)是一個(gè)盒子,封裝周?chē)膆tml元素,它包括:邊框、邊距、填充、實(shí)際內(nèi)容。
盒子模型允許我們?cè)谄渌睾椭車(chē)剡吙蛑g的空間放置元素。
想要快速入門(mén)前端開(kāi)發(fā)嗎?推薦一個(gè)前端開(kāi)發(fā)基礎(chǔ)課程,這個(gè)老師講的特別好,零基礎(chǔ)學(xué)習(xí)無(wú)壓力,知識(shí)點(diǎn)結(jié)合代碼,邊學(xué)邊練,可以免費(fèi)試看試學(xué),還有各種輔助工具和資料,非常適合新手!點(diǎn)這里前往學(xué)習(xí)哦!云端源想
示例:
<head>
<meta charset="UTF-8">
<title></title>
<style>
/* border:邊框,分4個(gè)方向,同理margin、padding也分為四個(gè)方向
* margin:元素與元素之間對(duì)的距離
* padding:內(nèi)容與邊框之間的距離
* 設(shè)置的時(shí)候順序:上 右 下 左
*/
.div{
border: solid red 10px;
/*四個(gè)方向上的元素與元素之間的距離都是50px*/
margin: 50px;
/*兩個(gè)值的時(shí)候:第一個(gè)參數(shù)表示上下距離都是50px,第二個(gè)參數(shù)表示左右距離都是100px*/
margin: 50px 100px;
padding: 50px;
/*
一個(gè)元素真正的寬度=width+左右padding值+左右的border值
一個(gè)元素的真正高度=height+上下的padding值+上下的border值
* */
}
</style>
</head>
<body>
<div>111111111112222222222223333333333333333</div>
</body>
1)盒子的寬高
元素的實(shí)際寬度和高度:
2)設(shè)置寬度=元素實(shí)際寬度,box-sizing屬性。
<head>
<meta charset="UTF-8">
<title></title>
<style>
/* box-sizing:確認(rèn)元素的大小
content-box: 實(shí)際寬度=width+左右的psdding值+上下的border值
實(shí)際高度=height+上下的padding值+上下的border值
border-box:實(shí)際寬度=width;實(shí)際高度=height
padding和border不會(huì)影響元素的實(shí)際寬高
* */
.box{
width: 100px;
height: 200px;
border: 5px solid;
padding: 5px;
box-sizing: content-box;
}
</style>
</head>
<body>
<div>你好中國(guó)</div>
</body>
CSS的世界博大精深,以上只是冰山一角,希望通過(guò)這些基礎(chǔ)的常用樣式可以幫助你快速進(jìn)入CSS世界的大門(mén)。
掌握CSS的引入方式和選擇器優(yōu)先級(jí)是構(gòu)建高效、可維護(hù)網(wǎng)站的關(guān)鍵。通過(guò)這些知識(shí),你可以更好地管理和優(yōu)化你的樣式代碼,創(chuàng)造出既美觀又專(zhuān)業(yè)的網(wǎng)頁(yè)設(shè)計(jì)。現(xiàn)在,準(zhǔn)備好邁入CSS的世界,開(kāi)啟你的創(chuàng)意之旅吧!
我們下期再見(jiàn)!
END
文案編輯|云端學(xué)長(zhǎng)
文案配圖|云端學(xué)長(zhǎng)
內(nèi)容由:云端源想分享
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。