Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
學Web前端要掌握什么技能?常見CSS知識點有哪些?CSS是前端三要素之一,是Web前端工程師必須要掌握的知識點。為了快速、系統的掌握企業所需的Web前端技術,很多人選擇專業的學習,下面就給大家分享CSS常見知識點分享。
CSS:Cascading Style sheet層疊樣式表或級聯樣式表,是一種樣式設置規則,用于控制頁面的外觀的樣式。使用CSS能夠實現內容與樣式的分離、方便團隊開發,有助于樣式復用、便于網站后期維護,實現頁面的精準控制、讓頁面更精美。
CSS代碼書寫方式分為三種:嵌入式、外鏈式、行內式。
嵌入式:將CSS代碼嵌入到HTML文件中,嵌入式是通過HTML中的
外鏈式:外鏈式是指單獨寫一個以.css為擴展名的文件,然后在標簽中使用標簽,將這個css文件鏈接到html文件中。(注意:css文件不能單獨的運行,它必須要依賴于HTML文件)
語法規則:
< link rel="stylesheet" href="css文件的地址">
行內式:將CSS代碼書寫在HTML標簽的style屬性中。style是一個通用屬性,每一個標簽里面都擁有這個屬性!
語法格式:
<標簽名 style=”屬性:值;屬性:值;”>
初學CSS,你需要掌握這些使用技巧:
1、負邊距的效果。注意左右負邊距表現并不一致,左為負時是左移,右為負時是左拉。
2、BFC應用匯總:阻止外邊距合并(margin collapsing)、消除浮動的影響。
3、flex布局:當flex-grow之和小于1時,只能按比例分配部分剩余空間,而不是全部。
4、并不是給元素設置display:block就會自動填充父元素寬度。input 就是個例外,其默認寬度取決于size特性的值。
5、對定位和固定定位時,同時設置left和right等同于隱式地設置寬度。
6、position:sticky,粘性定位要起作用需要設置最后滯留位置。chrome有bug,firefox完美。
7、要使模態框背景透明,用rgba是一種簡單方式。
8、display:table實現多列等高布局。css實現定寬高比的原理:padding的百分比是相對于其包含塊的寬度,而不是高度。
9、background-position百分比的正確理解方式:圖片自身的百分比位置與容器同樣的百分比位置重合。
10、background-repeat新屬性值:round和space。前者表示湊個整,后者表示留點縫。
11、background-attachment指定背景如何附著在容器上,注意其屬性值local和fixed的使用。
12、可以使用outline來描邊,不占地方,它甚至可以在里面。
13、瀏覽器默認顯示tab為8個空格,tab-size可以指定空格長度。
14、圖片在指定尺寸后,可以設置object-fit為contain或cover保持比例。
15、設置寬度為fill-available,可以使inline-block像block那樣填充整個空間。
開篇之前,先提個問題,什么是類?分類嗎?可以這么說吧!我們可以給物體分類,也可以給人分類。正所謂,物以類聚,人以群分。難道我們這里是給元素分類?用分類來理解是不準確的啦!從某些角度,也可以理解成分類,說白了也就是個標識而已。廢話不說,我們正式步入今晚的主題!
html中的類是什么鬼?先上個例子,然后再剖析它:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
<style>
.c1 {
background-color: tomato;
color: white;
border: 2px solid black;
margin: 20px;
padding: 20px;
}
</style>
</head>
<body>
<div class="c1">
<h2>彩虹運維技術棧社區,公眾號ID:TtrOpsStack</h2>
</div>
<div class="c1">
<p>筆者親自設計的,一個入侵性極低的Oracle監控方案</p>
<a href="https://mp.weixin.qq.com/s/PDm2bK7IMFOwjNHFOblgXg" target="_blank">oracledb_exporter監控Oracle,一個入侵性極低的監控方案。</a>
</div>
<div class="c1">
<p>意猶未盡的第2篇再次推出,一個入侵性極低的Oracle監控方案</p>
<a href="https://mp.weixin.qq.com/s/gFeWlZRGkIMAOCNFpKm8-Q" target="_blank">意猶未盡的第2篇再次推出,繼續講解oracledb_exporter監控Oracle,一個入侵性極低的監控方案。</a>
<div>
</body>
</html>
效果如下圖:
好了,我們正式開始對它進行剖析,搞清楚到底啥是類,上面的小栗子中,定義了3個div元素,它們的class屬性值均為 "c1"。然后注意到沒有?在head中的style標簽里,通過 ”.c1“ 的方式同時對3個div進行了css樣式的設置。所以也由此引出了它的一個特點,那就是多個HTML元素可以共享同一個類,上述的例子中3個div(元素)的類(class)名都定義了為“c1”,且同時對3個div進行了css樣式的設置,這就是它的共享性。不知道筆者說明白了沒有,好尷尬。
那接下來,我們再來個小栗子:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
<style>
.c2 {
font-size: 120%;
color: crimson;
}
</style>
</head>
<body>
<h1>彩虹<span class="c2">運維</span>技術棧社區</h1>
<p>我們會<span class="c2">持續分享</span>運維和運維開發領域相關的技術文章</p>
</body>
</html>
效果如下圖:
上面的例子中,“運維”和“持續分享”這兩個字都在span標簽里,且這兩個span標簽都定義了class屬性,class=“c2”,同時通過“.c2”的方式設置了CSS屬性。上面的例子中,就是通過這樣的辦法實現了對某部分的文字進行樣式的設置。
截止目前,我們通過兩個小栗子,直接解剖了什么是類,那么我們再做個小總結:
其實在前面的小栗子中,已經講解過class的語法了,不知道廣大盆友們注意到了沒有。如果沒有注意到,咱們再這個章節重新復習一下。
看下面代碼:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
<style>
.cc3 {
background-color: blue;
color: white;
padding: 8px;
}
</style>
</head>
<body>
<h2 class="cc3">彩虹運維技術棧社區,公眾號ID:TtrOpsStack</h2>
<p class="cc3">我們會持續分享運維和運維開發領域相關的技術文章</p>
</body>
</html>
效果如下圖:
上面的例子中,是如何引用到文本內容并設置CSS屬性的呢?答案就是通過.css3這樣的語法,我們設置的類名是css3。然后在style中,設置css屬性,在{}大括號里的內容就是CSS的屬性,關于CSS,筆者后續會專門逐一講解哈。
什么?一個元素可以屬于多個類?到底怎么玩,廢話不說,咱們上個例子就知道了。下面的例子,是在上一個例子的基礎上進行了小改造,看下面代碼:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
<style>
.cc3 {
background-color: blue;
color: white;
padding: 8px;
}
.css4 {
text-align: center;
}
</style>
</head>
<body>
<h2 class="cc3 css4">彩虹運維技術棧社區,公眾號ID:TtrOpsStack</h2>
<p class="cc3">我們會持續分享運維和運維開發領域相關的技術文章</p>
</body>
</html>
效果如下圖:
注意到這個語法了嗎?class="cc3 css4",沒錯了!在上面的style中,分別對同一個h2元素進行設置了不同的CSS屬性。也就是說,對同一個元素需要定義多個類,用空格分隔類名就可以實現啦!是不是太簡單了啦?
什么?類的復用怎么理解?也就是說不同的元素可以共享同一個類。其實這個概念,在之前的例子中都有用到啦!只不過還沒有拋出這個概念而已,下面我們來個小栗子,鞏固一下。
這個例子是在上一個例子的基礎上做了小改造,看下面代碼:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
<style>
.share_class {
background-color: blue;
color: white;
padding: 8px;
text-align: center;
}
</style>
</head>
<body>
<h2 class="share_class">彩虹運維技術棧社區,公眾號ID:TtrOpsStack</h2>
<p class="share_class">我們會持續分享運維和運維開發領域相關的技術文章</p>
</body>
</html>
效果如下圖:
注意到了嗎?兩個元素:h2和p元素,都使用了相同的類,類名叫share_class,這就達到了復用的效果呀!
截止目前,還沒講解到js,那么先講個小知識點,js如何使用class的。當然,核心的用法也是使用類名為指定的元素完成一些功能,在JavaScript里是通過getElementsByClassName()方法來訪問元素中的類名,反言之,也可以說是通過getElementsByClassName()方法來訪問帶有指定類名的元素。關于js的知識,后續筆者會一一講解每個知識點,不急,咱們慢慢來。
下面,先來個小栗子,這例子很簡單,通過js實現點擊后隱藏h2和p元素的內容,下面看代碼:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>陪你復習鞏固,攻破前端技能</title>
</head>
<body>
<button onclick="my_fun()">點擊可以隱藏元素哦</button>
<h2 class="c1">彩虹運維技術棧社區,公眾號ID:TtrOpsStack</h2>
<p class="c1">我們會持續分享運維和運維開發領域相關的技術文章</p>
<script>
function my_fun() {
var x=document.getElementsByClassName("c1");
for (var i=0; i < x.length; i++) {
x[i].style.display="none";
}
}
</script>
</body>
</html>
效果如下圖:
看到效果了嗎?隱藏的功能就是通過js實現的,js很強大,后面我們一起專門分享js的知識點。
好了,今晚的知識點分享到此為止啦!誠邀廣大盆友的關注,望多多點贊、轉發、收藏。
本文轉載于(喜歡的盆友關注我們):https://mp.weixin.qq.com/s/c9tXDae2l1osseOwKzILuQ
文共3019字,預計學習時長9分鐘
來源:Pexels
JavaScript是目前最流行的編程語言之一。就像任何其他編程語言一樣,它有許多讓人馬上就能學會的小技巧。
每一個技巧都能完成大多數開發人員每天需要完成的工作。根據經驗,讀者可能已經知道了其中一些,然而仍會對其他的技巧大吃一驚。
本文將介紹一系列技巧,而這些技巧能將讀者打造為一名更好的開發人員,并增強JavaScript技能。
我們一起來看看吧~
開發人員一旦了解了對象解構,就可能每天都會用到。
但什么是解構呢?
解構是一個JavaScript表達式,允許將數組、對象、映射和集合中的數據提取到其自己的變量中。它允許您一次從一個或多個對象中提取屬性。
一起看看以下示例,其中有一個用戶對象。如果要將用戶名(name)存儲在變量中,則必須將其賦給新行上的變量。如果想把性別(gender)也存儲在一個變量中,就必須重復上述操作。
const user={
name: 'Frank',
age: 23,
gender: 'M',
member: false
}const name=user.name
const gender=user.gender
使用解構,就可以通過以下語法直接獲取對象屬性的變量:
const { name, age, gender, member }=user;console.log(name) // Frank
console.log(age) // 23
console.log(gender) // M
console.log(member) // false
來源:Pexels
作為一名開發人員,做的最多的事情就是調試。但是調試不僅僅是使用console.log在控制臺打印出一堆日志信息這么簡單。
知道控制臺對象有分析代碼片段性能的好辦法嗎?大多開發人員只知道用標準的console.log方法來調試代碼。
控制臺對象有很多有用的功能。它有一個time和timeEnd函數,可以幫助分析性能。其工作原理非常簡單。
在被測試的代碼前調用console.time函數。此函數有一個參數,接受一個描述被分析內容的字符串。在被測試代碼的末尾,調用console.timeEnd函數。給這個函數與第一個參數相同的字符串。然后,運行代碼所需的時間將會在控制臺中顯示。
console.time('loop') for (let i=0; i < 10000; i++) {
// Do stuff here
} console.timeEnd('loop')
Every和some函數并不是為所有開發人員熟知。然而,它們在某些情況下非常有用。先來講講every函數。如果想要知道數組中的所有元素是否都通過了某個測試,那就可以應用此函數。本質上,這是在遍歷數組中的每個元素,并且檢查它們是否屬性都為真。
這聽起來可能有些抽象,所以請看以下示例。并沒有那么復雜。
const random_numbers=[ 13, 2, 37,18, 5 ]
const more_random_numbers=[ 0, -1, 30, 22 ]const isPositive=(number)=>{
return number > 0
}random_numbers.every(isPositive); // returns true
more_random_numbers.every(isPositive); // returns false
Every函數返回一個布爾值。如果數組中的所有元素都通過了測試,則返回“真”(true)。如果數組中的某個元素未通過測試,則返回“假” (false)。
也可以使用一個匿名函數作為測試函數:
random_numbers.every((number)=>{
return number > 0
})
some函數與every函數的工作原理幾乎完全相同。兩個函數只有一個主要區別:some函數測試的是數組中是否至少有一個元素通過了測試。
回顧上述實例,如果使用some函數而不是every函數,那么兩個數組都將返回“真”(true),因為兩個數組都包含一個正數。
const random_numbers=[ 13, 2, 37,18, 5 ]
const more_random_numbers=[ 0, -1, 30, 22 ]const isPositive=(number)=>{
return number > 0
}random_numbers.some(isPositive); // returns true
more_random_numbers.some(isPositive); // returns true
有條件地設置一個變量很簡單,而且能使代碼更漂亮。在應用這個技巧的時候并不需要編寫if語句——這是筆者最喜歡的JavaScript技巧之一。
所以要如何有條件地設置一個變量?
const timezone=user.preferred_timezone || 'America/New_York'
上述例子是檢查用戶是否有首選時區。如果用戶有首選時區,則使用該時區。如果用戶沒有首選時區,則使用默認時區,即“美國/紐約”(‘America/New_York’)。
這段代碼看起來比使用if語句要干凈得多。
let timezone='America/New_York'if(user.preferred_timezone) {
timezone=user.preferred_timezone
}
更簡潔了,不是嗎?
來源:Pexels
有時需要將所有的值轉換為字符串數組。例如,當使用Triple equal(===)運算符檢查數組中是否存在某個數字時,可能會出現這種情況。
筆者最近遇到了一個問題,其包含multi-select控件。Select選項的HTML值是字符串而不是整數,而這是有意義的,選定值的數組如下所示:
let selected_values=[ '1', '5','8' ]
問題在于,沒能成功檢查所選值的數組中是否存在某個整數。筆者使用了一個Intersect函數,它使用了triple equals(===)運算符。并且由于‘5’ !==5 ,而必須找到一個解決辦法。
在筆者看來,最漂亮的解決方案是將數組中的所有值都轉換為整數。當筆者進行嘗試時,偶然間發現了一個極其簡單,卻又漂亮的解決辦法。
selected_values=selected_values.map(Number)// [ 1, 5, 8 ]
與將所有值轉換為整數不同,可以通過簡單地更改map函數的參數,將數組中的值轉化為布爾值。
selected_values=selected_values.map(Boolean)
來源:Pexels
美好的未來在召喚你~干巴爹~
留言點贊關注
我們一起分享AI學習與發展的干貨
如轉載,請后臺留言,遵守轉載規范
*請認真填寫需求信息,我們會在24小時內與您取得聯系。