2分鐘完成30*15頁拉勾網職位需求關鍵詞的抓取
css網頁佈局
最大價值:讓html做結構,與樣式相分離
選擇器 {屬性:值;屬性:值;}
p {
color: red;
}
css的程式碼風格
- 樣式格式書寫:緊湊格式 , 展開格式(提倡,更直觀)
- 樣式的大小寫:用小寫的形式做
- 空格規範:屬性值前面,冒號後面,空一格;選擇器和大括號中間保留一個空格;css選擇器的作用:簡單來說,就是選擇標籤用的
css的三種書寫
-
內部樣式表:html的內部,style標籤內,理論上可以放在任何地方,但常用於上方(嵌入式的),可以控制整個頁面
優點:結構清晰
-
行內樣式表:直接砸標籤內部寫style標籤
<p style="color:red"></p>
用於修改簡單的樣式
-
外部樣式表:樣式和結構分離,css在html的外部
-
新建一個css的檔案,css檔案只有樣式,沒有標籤
-
<link rel="sytlesheet" href="路徑"/>
-
link和@import(css2)的區別
<style>
@import url('...');
</style>
- 寫的形式不一樣
- link是xhtml標籤,@import屬於css的範圍,只能載入css
- link應用css時,在頁面載入的時候同時載入,@import需要頁面網頁完全載入以後載入
- link支援使用javascript控制DOM去改變樣式,而@import不支援
CSS背景
-
背景圖片:優點,容易控制位置
// 背景圖片 backgroud-img:none/url; // 背景平鋪:重複圖片 background-repeat: none/no-repeat; //背景圖片位置 注意:方位名詞只寫一個時,另外一個預設居中顯示;無順序的要求 background-positon: x y; // 背景影象固定 負值的時候是往左和往上移動 background-attachment: sroll/fixed; // 背景顏色 background-color: red; // 背景縮放 可以數字固定也可以時百分比,百分比時候是根據盒子的百分比為基準 background-size: x y; background-size: contain; // 等比例的拉伸圖片,不超過盒子 background-size: cover; // 等比例的拉伸圖片,會超過盒子
背景複合寫法:background習慣性的寫 背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置
多倍景:先寫的覆蓋後寫的 圖片one會堆疊再two上
background: url('one') no-repeat left bottom,url('two') norepeat center center
-
背景色半透明
background: rgba(0,0,0,0.3);
-
背景漸變
background: linear-gradient(起始方向,顏色1,顏色2...); #起始位置:left right tip bottom ; to left bottom 左下角 background: -webkit-linear-gradient(left,red,blue); background: -webkit-linear-gradient(left/top,red,blue); // 顏色節點均勻分佈 background: radio-gradient(red,green,blue); // 顏色不均勻的徑向漸變 background: radio-gradient(red %4,gree 10%,blue 4%); // 現狀為圓形的徑向漸變 background: radio-gradient(circle,red,green,blue);
注意:
- 背景漸變必須新增瀏覽器的私有字首
- 背景圖片要設定成功,必須要有高和寬
Emmont語法
快速標籤生成
-
tab鍵,直接輸入標籤名
-
生成多個標籤,eg:div3(加tab鍵)
-
父子級關係>(tab);兄弟級關係+(tab)
-
生成帶有類名或是id名的,直接寫.demo(tab) 或者#demo(tab)
div.demo(tab)或者div#demo(tab)
-
若生成的類名有順序,用$自增符號,從1開始排序
demo$*5(tab)
-
預設顯示幾個文字,用{}
div{我不喜歡}(tab) div{$@1996}*2 //從1998到1999
選擇器
-
基礎選擇器
- 標籤選擇器
- 類選擇器:最常用的
- ID選擇器:有唯一性,同一個id屬性只能有一個
- 萬用字元選擇器:*{}
-
偽類選擇器
a:link沒訪問過的連結
a:visited訪問過的連結
a:hover滑鼠經過時的連結
a:active點選沒有鬆開時
按順序申明:link visited hover active
目標偽類選擇器
:target { // 匹配頁面中所有目標元素 h1 color: red; } <a href='#anchor1'>one</a> <a href='#anchor2'>two</a> <a href='#anchor1'>one</a> <h1 id='anchor1'>瞄點一</h1> <h1 id='anchor2'>瞄點二</h1>
E:only-child { // 匹配所有沒有任何兄弟元素 並且這個元素是E color: red; }
E:only-of-type {} //匹配沒有和E同種型別的元素 // 匹配所有E元素,且這個E元素沒有任何同一型別的兄弟元素
E:empty {} // 匹配所有p標籤,且沒有任何內容和子節點
-
複合選擇器
交集選擇器
兩個標籤挨在一起,中間不能有空格
div.test 表示既是div而且div的類名是test
並集選擇器:逗號隔開
常見文字屬性
font-style
- itaic:傾斜字型,有一些傾斜字型的文字是沒有斜體的,使用瀏覽器強制執行
- normal:預設正常值
- oblique: 瀏覽器會顯示傾斜的字型樣式。
font-weight
字型粗細
- 數字:100-900取值範圍
- 單詞:normal正常 bold bolder加粗 lighter變細
font-family
字型樣式
- '宋體' / '隸屬'
- '\5E7C\5706'
- LiSu 如果是英文單個 不需要引號
- Georgia 'Times New Roman' 'Times' serif '隸書' 既有英文又有中文,中文寫在後面
font-size
- samller x-samller xx-samller large larger x-large xx-large
- 數字加單位形式 13px
單位
100vw:整屏寬度
100vh:整屏高度
vmax:選vh vm中較大的一個
vmin:選vh vm中較小的一個
-
相對定位
em:相對於當前物件內文字字型尺寸
px:相相對於電腦螢幕的解析度,谷歌預設文字大小是16px
-
絕對定位
in:英寸
cm:釐米
mm:毫米pt:點
font
// 空心文字
<style>
span {
font-size: 40px;
font-weight: 700;
-webkit-text-fill-color: #f4f4f4;
-webkit-text-stroke-color: red;
-webkit-text-stroke-width: 1px;
}
</style>
<span>空心文字</span>
font屬性對字型進行綜合的設定
font: font-style font-weight font-size/line-height font-family
注意:使用font屬性時,必須按照以上順序書寫,不能更換順序
其中不需要的屬性可以省略,但必須保留font-size和font-family
color
字型顏色
-
red
-
cccccc
00ffaa 兩兩相同可以省略 #0fa
-
rgb(a,b,c)
raba 最後a表示透明度:0表示完全透明,1表示完全不透明
-
hsl( )
H 顏色名字:取0到360 0/360紅色 120綠色 240藍色
S 純度:值越高越純 越低越灰 (0-100%)
L 亮色:黑到白 越低越白 越高越黑 (0-100%)
text-align
文字對在標籤之中的對齊方式,,預設左對齊
- center
- left
- right
- justify:文字的兩端對齊,一般用於英文鋸齒狀
text-decoration
文字劃線
- none:沒有樣式
- underline:下劃線
- overline:上劃線
- line-throught:刪除線
<div>
my what is a Big Dack
</div>
<style>
div {
text-decoration: none;
text-decoration: underline;
text-decoration: overline;
text-decoration: line-through;
}
</style>
text-transform
轉換文字的大小寫
- capitalize:每一個單詞的首字母大小
- lovwercase:所有字母都小寫
- uppercase:所有字母都大寫
- none:預設都不改變
<div>
my what is a Big Dack
</div>
<style>
div {
text-transform: lowercase;
text-transform: uppercase;
text-transform: capitalize;
}
</style>
text-indent
首行的文字縮排,em一個文字大小
text-indent: 2em;
// -200px
注意:允許負的
text-shadow
文字陰影
text-shadow: 水平方向的陰影位置 垂直的陰影位置 模糊距離 陰影顏色
text-shadow: -10px -10px 3px red,10px 10px 3px pink
注意:可以寫多組文字陰影,用逗號隔開
letter-spacing
增加或減少字元間的距離,正值增加,負值減少,用於漢字
若用於字母,則每個字母間的距離都會變大
letter-spacing: 20px;
word-spacing
用於英文的
word-spacing: 20px
line-height
行高,該上下間距,文字行和文字行之間的距離
-
number:固定的數字,此數字會與當前字型尺寸相乘來設定行間距
-
length:設定固定的行間距
-
%:基於當前字型尺寸的百分比行間距
注意:一般情況下,行距比字號大7 8 畫素即可
word-break
-
normal:使用瀏覽器預設的換行規則
-
keep-all:文字內容在同一行顯示,不換行
注意:在半形空格和-的時候可以換行,第一次遇見空格會直接換行,接著要看是否超過顯示框,如果沒有超過就不換行
一般不用於英文
-
break-all:針對英文,所有單詞遇到邊界一律拆分
white-space
- pre:保留文字原本的樣式,超過父元素不換行
- nowrap:文字不換行,文字再一排(一行)顯示
- pre-wrap:能解析空格,超出部分自動換行
- pre-line:不解析空格,超過部分自動換行
層疊性 優先順序 繼承性
層疊性是瀏覽器處理衝突的能力,如果一個css屬性通過兩個選擇器設定到同一個元素上,那麼這個時候的屬性就會被另外一個屬性層疊掉
優先順序
!important>行內樣式>id選擇器>類/偽類選擇器>標籤選擇器>繼承或者*
權重疊加:計算權重,權重會疊加,但不會有進位
- 行內樣式 1 0 0 0
- id選擇器 0 1 0 0
- 類選擇器 0 0 1 0
- 元素選擇器和偽元素選擇器 0 0 0 1
- 萬用字元,子選擇器,兄弟選擇器 * > + ~等 0 0 0 0
- 繼承的樣式沒有權重 !important的權重最高
繼承性
文字字型的屬性:font-size font-family color text-align
注意
-
a標籤裡面的文字顏色是不能繼承父親的設定的
<style> div { color: pink; } </style> <div> <a href="#">dsagoji</a> </div>
繼承的是離它最近的祖先元素
<style>
#test {
color: red;
}
.father2 {
color: black;
}
</style>
<div id='test'>
<div class="father">
father // 繼承id 的紅色
<div class="son">son</div> // 繼承id的 black
</div>
<div class="fater2">
father2 // 類>id black
<div class="son2">
son2
</div>
</div>
</div>
盒子模型
盒子模型:marge padding content border
ie盒模型 : 最大的不同在於padding不會撐大盒子
margin
border
border:border-width border-style(solid dashed dotted) border-color
border複合寫法:
border:1px solid red // 邊框寬度 邊框樣式 邊框顏色
border-style: solid dotted dashed double; // 實線 電線 虛線 雙線
border-color: red;
border-width: 2px 3px 1px // 上2 右3 下1 左和右一樣3
border分別設定
border-right-style: dotted;
border-top-color: red;
border-left-width: 3px;
(沒有嚴格的順序要求,一般按照這樣格式)
border-collapse: collapse;(表格的細線邊框)
注意:邊框會影響盒子的實際大小
border-radius邊框圓角
border-radius: 4px 8px 12px 16px // 左上 右上 右下 坐下
border-radius: 4px 8px; // 如果沒有某個值就從對角取值
border-top-left-radius: 5px; // 坐上角
複合寫法eg:
padding: 5px 代表上下左右都是5px
padding: 5px 10px 上下5,左右10
padding: 5px 10px 15px 上5px 左右10px 下20px
padding: 5px 10px 15px 20px 從上開始順時針
marge與padding類似
padding不會撐破盒子
- 如果沒盒子本身沒有指定高度或者寬度時,不會撐大盒子
浮動的盒子不會有外邊距合併的問題
陰影盒子和文字陰影
box-shadow:h-shadow v-shadow blur spread color inser; // 水平方向(必填) 垂直方向(必填) 模糊距離 陰影大小 內部陰影
h-shadow,v-shadow:設定陰影的位置
spread:向外延展的尺寸距離,設定陰影的大小
注意
- inser不寫時候預設是outside,但不可以寫,不然陰影無效
- 盒子陰影不佔空間,不會影響其他盒子的排列
文字陰影:text-shadow:h-shadow v-shadow blur color;
浮動
float: left;
float: right;
CSS浮動特性
標準流:從上往下 從左往右
塊級元素一般在父元素從上到下排列
行內元素一般在父元素從左到右排列
-
會脫離標準流的控制(俗稱脫標),不在保留原來的位置
-
不管原先是什麼元素,加了浮動後具有行內塊元素的特點
如果是塊級元素,想要有高度,必須手動新增,它預設的100%新增浮動後會消失
-
所有浮動的盒子在一行顯示,並且頂端對其(不管低端),若是裝不下,會另起一行顯示
浮動的元素不會撐開父元素
<style>
.father1 {
width: 220px;
height: 200px;
box-sizing: border-box;
border: 2px solid red;
}
.father1 div[class^='son'] {
float: left;
width: 100px;
height: 100px;
background-color: pink;
}
</style>
<div class="angle"></div>
<div class="father1">Lorem ipsum dolor sit t magni nesciunt eaque amet saepe exercitationem? Voluptatum aute
m aut sint distinctio itaque corrupti tenetur ad blanditiis?
<img src="images/睜眼.png" alt="">
<div class="son1"></div>
<div class="son2"></div>
<div class="son3"></div>
</div>
-
浮動的元素不會遮住文字和圖片
清除浮動
-
同層級
clear: left; // ---------------- clear: right; // ---------------- clear: both;
-
父子級
-
給父元素加heitht(不推薦)
-
BFC佈局
overflow: hidden; // ----------------------- display: inline-block
-
給父元素的浮動後邊加一個空的塊級標籤,設定清除浮動
clear: both; // --------------------- E::after { content: ''; display: block; clear: both; } // ----------------------------- //IE6,7專用 *zoom: 1;
-
CSS消除樣式
清除內外邊距css樣式
* {
marge:0;
padding:0;
}
注意:行內元素為了相容性儘量只設置左右的內外邊距,設定之後可能也並不會起作用
ul li {
list-style: none;
}
定位
定位:將盒子定在某一個位置,定位也是在擺放盒子,按照定位的方式移動盒子
定位:定位模式+邊偏移
定位模式是用來指定一個元素在文件中的定位方式,邊偏移則決定了該元素的最終位置
定位模式
-
static:靜態定位
-
relative:相對定位
相對定位是元素在移動位置的時候,相對於它原來的位置來說的(自戀型)
positon: relative
注意
-
它是相對與自己原來的位置移動的(移動位置的時候參照點是原來的位置)
-
原來在標誌流中的位置繼續佔有,後面的盒子仍然以標準流的方式對待它(不脫標,繼續保留原來的位置)
相當於塊級元素還是可以繼承父元素的寬度的
-
-
absolute:絕對定位
絕對定位是元素在移動位置的時候,相對於它祖先元素來說的
position absolute;
-
如果沒有祖先元素或者祖先元素沒有定位,則以瀏覽器為準定位
-
如果祖級元素有定位,則以最近一級的有定位的祖先元素為參照點移動位置
-
決定對位不佔有原來的位置(脫標)
不能繼承父元素的寬度,需要手動區設定
-
-
fixed:固定定位
不寫偏移量的時候 相對於body定位的(預設狀態)
寫偏移量的時候才是相對與瀏覽器定位
使用場景:可以在瀏覽器頁面滾動時元素位置不會改變
// 定位設定居中
<style>
.father2 {
width: 500px;
height: 300px;
margin: 0 auto;
position: relative;
background-color: purple;
}
.father2 .son {
position: absolute;
width: 20px; /* 如果高度或則寬度沒有寫,則會拉伸到父元素的高或寬 auto表示平分剩餘空間*/
height: 20px;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
background-color: pink;
}
</style>
<div class="father2">
<div class="son"></div>
</div>
隱藏
(面試題)
盒子隱藏
-
display: none;
隱藏 不會持續佔據空間 會隱藏子元素 子元素不能通過設定diaplay: block進行反隱藏
-
visibility: hidden/visibale;
隱藏 會持續佔據空間 會隱藏子元素 子元素能通過設定visibility: visible進行反隱藏
-
opacity: 0/1;
0完全透明 1完全不透明,子元素不能透過子元素 opacity: 0.8進行反隱藏
-
position: absolute;
設定偏移量移出視線範圍
-
設定寬高 背景透明 不會隱藏子元素 transparent rgba
文字隱藏
-
text-indent: 負值;
文字放入盒子 盒子設定隱藏
-
font-size: 0
overflow
overflow: hidden/scroll;
overflow-x: hidden; <-- y軸上會有滾動條 -->
overflow-y: hidden;
- auto:內容被修建,瀏覽器會顯示滾動條
- inherit:規定應該從父元素繼承overflow屬性的值
text-overflow
- clip:修剪文字
- ellipsis:顯示省略符號來代替被修剪的文字
文字省略...
width: 100px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
注意:要加高度
多行文字顯示省略號,有較大的相容性問題,適用於webkit瀏覽器或移動端
-webkit-line-clam:限制一個塊元素顯示的文字行數
diaplay: -webkit-box 必須結合屬性,將物件作為彈性盒子
-webkit-box-orient 必須結合屬性,設定或檢索伸縮盒物件的子元素排列方式
width: 300px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;