CSS心領神會

css入門

三要素

1) html (網頁骨架) 	塊 ,行 (table/form)
2) css(頁面裝飾,佈局,動畫過渡效果)
	原則:對於動畫效果能用css實現的絕對不用js
3) Javascript(樹莓派)
	動態DOM, 類似於jstl
	數據交互

如何在html中使用css(3種方式)

1) 嵌入在標籤內部
		將css代碼寫在了html中,較爲混亂
		複用性較低

		好處:優先級高,簡單直接(修改別人代碼的時候,weex rn)
2) 集中嵌入在style標籤中
		
3) 將css獨立寫在外部的css文件中,並且通過link導入進來
	適用於企業級開發

css語法

選擇器 {
	/*規則*/
	color:#ffffff;
	background-color:pink;
}

css選擇器 (jQuery選擇器)

核心選擇器

用法:選擇較大範圍
1. 標籤(元素)選擇器
	div {}
	h1 {}
2. id選擇器
	#one {}
	<div id="one">one</div>
	<div id="two">two</div>
3. class選擇器
	.first {}
	<div id="one" class="first">one</div>
	<div id="two" class="first">two</div>
	<div id="three" class="first">one</div>
	<div id="four" class="second">two</div>
	<p id="five" class="first">p</div>
詞窮!!!
4. 並且選擇器
	div.first {}
	p#five {}
5. 或者選擇器
	div,.first {}
6. 普遍選擇器
	* 	

層次選擇器【一般不超過5層】

1. 子代選擇器
	.top_nav > ul > li
	選中class爲top_nav的元素的直接後代ul元素的直接後代li元素
2. 後代選擇器
	.top_nav li				
3. 下一個兄弟選擇器
	.top_nav li + *
4. 之後所有兄弟選擇器
	.top_nav li ~ *

過濾器

對已經選擇到的元素進行過濾
1. 屬性過濾器
	selector[name]	已選擇到的元素具有name屬性
	selector[name=v]	已選擇到的元素具有name屬性,並且name屬性的值爲v
	selector[name^=v]	已選擇到的元素具有name屬性,並且name屬性的值以'v'開頭
	selector[name$=v]	已選擇到的元素具有name屬性,並且name屬性的值以'v'結尾
	selector[name*=v]	已選擇到的元素具有name屬性,並且name屬性的值中包含了'v'
2. 僞類過濾器
	以:開頭的
	selector:first-child 	過濾出已選擇元素中的是第一個孩子的元素
	selector:last-child 	
	selector:nth-child(2)
	selector:nth-child(even)
	selector:nth-child(odd)
	selector:nth-child(3n+1)
	selector:only-child
	selector:not(selector)
	...

	selector:hover
	selector:active
	selector:visited
	selector:focus
3. 僞元素過濾器
	可以產生出來一個虛擬元素(行內元素)
	以::開頭的
	div::before {

	}
	div::after {

	}
	<div>
		::before
		<p>one</p>
		<p>two</p>
		::after
	</div>

css規則【簡單大方】

單位值
	px 	像素 
字體【設計師-架構師規定】【可以被繼承】
	<div style="font-size:12px">
		one
		<div>
			two
		</div>
	</div>

	font-size 	字體大小 	默認16px 	
	font-weight 字體粗細程度
		normal【默認】
		bold 		加粗
		bolder	比當前元素上繼承的值要大一些
		100~900
	font-style 	風格 (是否打開斜體)
		normal【默認】
		italic
	font-family 	字體族
	line-height 	行高
		絕對單位:1px 
	速寫
	font: [font-weight] [font-style] font-size/line-height font-family

網絡字體(字體圖標庫)
	iconfont【阿里巴巴的字體圖標庫】
	1. 選取自己想要圖標
	2. 生成項目
	3. 按照說明進行使用

文本【可以被繼承】
	text-align
		left 	居左排列
		center
		right	
	text-indent 	文本縮進
	text-decoration
		line-through
		overline
		underline
		none
	text-transform 	字體大小寫轉換
		uppercase
		lowercase
列表
	list-style:none
盒子
	margin
	padding
	border
	width
	height
背景
	background-color 	背景色
		關鍵字 		teal	red 	black white
		十六進制		#ffffff 	#000000 	#ff0000
		rgb函數 		rgb(255,255,255)
		rgba函數 	rgba(0,0,0,.5)
	background-clip 	背景覆蓋區域
		border-box 	邊框及邊框以內全部覆蓋
		padding-box 內邊距及內邊距以內全部覆蓋
		content-box 內容區域全部覆蓋
    background-origin: border-box;
		背景圖鋪設的起點
    background-image: url('./images/a.jpg');
		背景圖
    background-repeat: no-repeat;
		背景圖的重複方式
    background-size: contain;
		背景圖的覆蓋方式
    background-position: 50px 50px;
		關鍵字 center
		座標點 1px 2px
		背景圖開始鋪設的座標
	backgroud:
		速寫形式

css佈局 *

佈局就是爲了解決多個塊元素在一行中顯示的問題。

默認文檔流
	塊元素從上往下進行排列
浮動佈局
float:left;
	向左側浮動
clear:left;
	當前元素左側不允許有浮動元素,換行
display:block;
	將一個元素設置爲塊元素
	<span style="display:block"></span>
	
應該加在塊元素上
1> 特點:
	1. 寬高默認由內容決定(一般要給浮動元素指定寬度)
	2. 脫離文檔流,在默認文檔流不會再佔據空間
	3. 在同一層次中,所有的浮動元素會在一行顯示,當一行中無法容納這些浮動元素的時候,就會自動換行
	4. 浮動元素會失去對父元素的支撐
2> 浮動元素的父元素沒有高度的問題
	1. 所有子元素浮動,通過僞元素進行支撐
	2. 保留一個子元素不浮動,用於支撐父元素,爲了讓他顯示出來,可以加margin
定位佈局
position:static; 【靜態】

position:relative
position:absolute
position:fixed
position:sticky

如果一個元素具有position規則,並且規則值爲relative,absolute,fixed,sticky之一,那麼,我就認爲這個元素是一個定位元素;只有定位元素才能使用如下規則:
	left:
	right:
	bottom:
	top:

相對定位
	position:relative
	特點:
		1. 相對於當前元素所在位置
		2. 當前元素不會脫離文檔流(即使發生了移動也不會被其他元素搶佔位置)
	應用:
		一般情況下相對定位要配合絕對定位來進行移動

絕對定位
	position:absolute
	特點:
		1. 相對於距離它最近的父定位元素,如果它的父元素沒有定位元素,那就相對於瀏覽器視口
		2. 脫離文檔流(不佔據默認文檔流的空間;塊元素的寬度不再爲100%)
固定定位
	position:fixed
	特點:
		1. 相對於瀏覽器視口
		2. 脫離文檔流(不佔據默認文檔流的空間;塊元素的寬度不再爲100%)
		3. 不會隨着屏幕的移動而移動

粘滯定位(補充)

1. 塊元素居中
	給塊元素一個寬度
	margin:0 auto;

選擇器的優先級 *

Importance 		特權
	!important
Specificity 	權重(積分機制)
	1000 	style屬性中
	100 	id選擇器
	10 		類選擇器,僞類過濾器,屬性過濾器
	1 		元素選擇器,僞元素選擇器
Source order 	順序

問題反饋及解決

1. 移動端網頁的理解、PC網頁的理解
	1) 兩套代碼【針對複雜的網頁】
		一套用於在pc中打開(浮動,定位)【https://you.163.com/】
			容器一個寬度 .wrapper 	1200px
		一套用於在移動端打開【https://m.you.163.com/】
	2) 一套代碼【針對簡單的網頁】
		跟隨者屏幕的寬度而自動改變佈局方式
2. display:
	block  	將一個元素設置爲塊元素	
		可以設置width,height
		寬度默認爲100%,高度默認由內容決定
		獨佔一行空間
	inline 	將一個元素設置爲行內元素
		不可以設置width,height
		與其他行內元素共享一行空間
	inline-block 	將一個元素設置爲行內塊元素
		可以設置width,height
		可以與其他行內元素共享一行空間
	...
3. vertical-align【用於在一個盒子中,有多個行內元素,但是這個多個行內元素高度不一致,通過這個屬性可以調整多個元素的垂直位置,一般用於一行既有文本,也有圖片/邊框】
	用來指定行內元素(inline)或表格單元格(table-cell)元素的垂直對齊方式。

伸縮盒佈局

響應式佈局(bootstrap[封裝了一些佈局代碼,完成響應式佈局],柵格系統)
	<div class="row"> 
		<div class="col-sm-2">1</div>
		<div class="col-sm-2">2</div>
		<div class="col-sm-2">3</div>
		<div class="col-sm-2">4</div>
		<div class="col-sm-2">5</div>
		<div class="col-sm-2">6</div>
	</div>
	佈局代碼:浮動,定位,伸縮盒
	bs3 	float 	穩定(絕大多數瀏覽器都兼容)
	bs4 	flex 		兼容(今年來,絕大多數瀏覽器都兼容)
	
	spring security 	jdk8 拉姆達 	jdk1.6(銀行)

1. 語法
	<div class="parent">
		<div>1</div>
		<div>2</div>
		<div>3</div>
	</div>

	【聲明在父元素上的規則】
	display:flex;
		這個規則應用到父元素上,表示當前元素爲伸縮盒。默認情況下,主軸在x軸上,交叉軸在y軸上
	flex-direction: row/column
		默認情況下,爲row (主軸在x軸上)
	flex-wrap:no-wrap/wrap
		默認情況下,爲no-wrap,表示當容器中的子元素寬度和超過了容器寬,不換行
	justify-content 對主軸上剩餘空間的排列設置(不要使用flex-grow對剩餘空間進行分配了!)
		flex-start
		flex-end
		center
		space-around
		space-between
	align-items	交叉軸上的顯示
		flex-start 	交叉軸的開始排列
		flex-end 		交叉軸結束排列
		center 			交叉軸的中間排列
	【聲明在子元素上的規則】
	flex-basis: 	指定子元素的寬度基準【固定,相對】,width
 flex-grow: 1;	對容器剩餘空間的分配,1表示當前元素佔據剩餘空間的一份
	flex-shrink:1;對於虧損空間的墊付,1表示棧虧損空間的一份
	flex: flex-grow flex-shrink flex-basis;

2. 封裝
	數據問題?模擬數據【電商】
	商品管理
		一條條錄入
		python	爬蟲 	jd 	
		1) 華爲p40 	5999 	介紹 	主圖	... 	(300條)

		前端 -> Java -Jpython->python

表格與表單(html)

【一般應用在後臺管理系統中】
html標籤(塊、行內、功能【table、iframe、form】)
css3
	選擇器(基本,層次,屬性過濾器,僞元素過濾器,僞類過濾器)
	規則(文本,字體,背景,列表,盒子)
	盒子模型
	佈局(浮動,定位佈局,伸縮盒佈局)
	-- bootstrap()

1) 表格
	與列表類似,用於展現一些數據,一般不用於佈局,因爲他的默認樣式太複雜
		你是不是做技術??? 	你是不是IT(猥瑣,邋遢,有錢)【外界】 表格
		格局?							div 架構

	table 		表格容器
		caption 表格標題
		thead 	表格的表頭
			tr > th > *
		tbody 	表格的主體
			tr > td > *
		tfoot 	表格底部
			tr > td > *

	表格美化
		1. 屬性
			align:center
			colspan 	跨列 	【通過excel來操作模擬】
			rowspan 	跨行 	

		2. css 	首選方案!!
			table {
				border-collapse:collapse
				width:90%;
				margin:0 auto;
			}

			table td,
			table th {
				border:1px solid #ccc;
				text-align:center;
			}

2) iframe
	div.container
		div.header
		div.content
			div.left
			div.right
	iframe
		將外部的一個網頁鏈接進來你當前的網頁中
3) 表單
	注意:
		1. 在企業級開發的時候,一般不直接使用這些表單,因爲表單元素在不同的瀏覽器中顯示的樣子是不同的。一般使用組件(bootstrap/element-ui...)
		2. 看點資訊精選
			發佈文章功能:
				標題 							input type="text"
				文章所屬分類			select 	如果是二級分類,需要插件,樹形下拉菜單
				正文 							富文本編輯器(需要插件)
		3. 在表單學習的時候
			掌握表單和表單元素的屬性及特性
			掌握交互原理 


	獲取用戶輸入的數據,是用戶與我們程序之間一個數據橋樑
	同步
		form表單的直接提交就是同步操作
	異步
		form表單通過ajax提交

	form
		action 	url(相對路徑、絕對路徑)
		method 	get/post 
		enctype 【只有在method=post考慮,如果是get方式,參數將會被直接編碼爲查詢字符串,無法更改】
			application/x-www-form-urlencoded
				默認值								保存或更新品牌數據【字符,photo,name,introduce】
				查詢字符串
				username=terry&password=123321&department=1
				規則:
					屬性名與屬性值之間通過=分割
					鍵值對之間通過&分割
					屬性值中如果有特殊字符,會將這個特殊字符轉換爲百分比格式【這也是爲什麼二進制不能使用這種編碼】
						/ => %2F
			multipart/form-data 		附件上傳【二進制圖片】
				如果表單中出現了二進制文件,<input type="file" name="file"/>,就無法使用查詢字符串,只能用這種協議
			text/plain

			application/json【目前在同步請求中不支持,但是在ajax中是支持的】

	表單及元素
		<form>
			<input type="text"/> 			單行文本框
			<input type="password"/> 	單行密碼框
			<input type="file"/> 			文件選擇按鈕,encotype必須爲multipart/form-data
			<input type="radio"/> 		單選按鈕
				單選按鈕一般會同時出現多個,着多個按鈕的name值必須相等才能達到互斥的要求
				value必須通過,這樣當勾選某個單選按鈕的時候會提交該按鈕上的value值
			<input type="checkbox"/> 	複選按鈕
			<input type="reset"/> 		將表單內容恢復默認
			<input type="submit"/> 		提交表單
			<input type="button/> 		普通按鈕
			...【h5新增】
			<input type="search" placeholde="請輸入關鍵字"/> 		搜索框
			<input type="date" /> 														日期框
			
			
			<select name="department">
				<option value="1">JavaEE</option>
				<option value="2">WebUI</option> 				當用戶選擇WebUI的時候,department的值爲2
				<option value="3">BigData</option>
			</select>
			<textarea name="introduce rows="" cols="">提示...</textarea>
		</form>
	

鄙視鏈
	iphone產品工程師 		-> 富士康		-> 	大衆iphone用戶 	-> 不會使用iphone
	研究協議,自定義協議 	-> 使用協議(http,請求頭)->前端(http 知道) -> 美工(不知道)
	嵌入式 c 						-> java -> 前端 -> 美工

動畫(前端【移動互聯】)- 美觀誇張【扁平化】

夢幻西遊,呼吸燈... 
語法
	animation
		1)關鍵幀定義
			隨着時間移動的一些列的css規則
			@keyframes name {
				0% {
					width:100px
				}
				50% {
					width:300px
				}
				100%{
					width:150px;
				}
			}
		2)動畫定義
			.move {
				animation-name: move; 							指定關鍵幀名稱
				animation-duration: 2000ms; 				設置動畫持續時間(from-to)
				animation-timing-function: linear;  時間曲線
				animation-fill-mode:backwards; 			動畫完成後保持的規則(from/to)
				animation-delay: 1000ms; 						持續時間
				animation-iteration-count: infinite;重複次數
				animation-direction:alternate-reverse; 	動畫運行的方向
				animation: 		以上的速寫形式
			}
		3) 應用
			<div class="move"></div>
			開源組件庫 
			自定義組件庫

		flash (直播流-監控)
			海康 flash
		4) animation.css(css3 animation動畫輪子)
			1. 導入animation.css
			2. 調用class

框架

過渡效果

一般表示在元素狀態切換的時候的過渡效果

transition-property
	規則名
	規則名1,規則名2[,...]
	all
	指明在狀態切換的時候,哪些屬性添加過渡效果

transition-duration
	持續時間 ms/s
transition-timing-function
	linear
	steps
transition-delay 
	延遲 ms/s
transition
	transition-property transition-duration [transition-delay][transition-timing-function]

變形

transform 	
	指定變形函數

	1)旋轉
		rotate(deg) 	旋轉度數
		rotateX(deg)
		rotateY(deg)
		rotateZ(deg)
	2) 平移
		translate(長度)
		translateX(長度)
		translateY(長度)
		translateZ(長度)
	3) 放大
		scale()
		scaleX()
		scaleY()
	4) 拉伸
		skew(deg)
		skewX(deg)
		skewY(deg)
transform-origin	
	指定變形的原點

媒體查詢(響應式佈局)

@media(媒體查詢條件) {
	選擇器 {
		規則
	}
}
1) 媒體查詢的應用位置
	1.直接應用在規則內部
		<style>
			html{
				font-size:20px
			}
			@media screen and (max-width:1500px){

			}
		</style>
	2.應用在link標籤中
		<link rel="stylesheet" href="./css/screen_small.css" media="(max-width: 1380px)">
		<link rel="stylesheet" href="./css/screen_middle.css" media="(min-width: 1380px) and (max-width: 1500px)">
		<link rel="stylesheet" href="./css/screen_large.css" media="(min-width: 1500px) and (max-width: 1780px)">
		<link rel="stylesheet" href="./css/screen_xlarge.html" media=" (min-width: 1780px) ">
	3.應用在style標籤中
		<style>
		
		</style>
		<style media="screen and (max-width: 1380px)">
			.wrapper {
				width: 1105px;
			}
			html {
				font-size: 20px;  
			}
		</style>
		<style media="screen and (min-width: 1380px) and (max-width: 1500px)">
			.wrapper {
				width: 1200px;
			}
			html {
				font-size: 25px;  
			}
		</style>

2)注意:
	1. 如果我們編寫的網頁運行在pc中,那麼一般要給固定寬度,但是這個寬度如果隨着屏幕的寬度發生改變,我們就成爲響應式(.wrapper)
	2. 如果我們編寫的網頁運行在大屏上,一般就採用滿屏鋪,不用指定wrapper
	3. 如果我們編寫的網頁運行在mobile中,一般就採用滿屏鋪,不用指定wrapper,但是需要響應式佈局
		如果手機寬屏(橫放)
			原先一行放4列,橫放後一行放2列
		手機
		pad

at規則(@)

1) @font-face
2) @keyframes
3) @media
4) @import
	@import url
	@import url list-of-media-queries;
5) @charset 
	指定當前css文件的編碼格式(說明當前文件是使用xx編碼)

css腳本語言(css預處理語言)【瞭解】

sass
less

bootstrap4(思路,封裝)【瞭解】

第三方庫:iconfont/animation.css/bootstrap
bs 是css3的一個庫,也就說我們如果用了這個庫,就可以很少的去寫css代碼,因爲css中提供了大量的選擇及規則。我們只管通過類調用即可

css庫
js庫
組件庫

bootstrap-reboot.css 		重置樣式,類似於我們自己寫的common.css,要比我們寫的好多了
bootstrap-grid.css 			柵格佈局(封裝了flex佈局【bs4封裝float佈局】)
bootstrap.css 					完整樣式(包含重置樣式,柵格佈局,按鈕,表格,下拉菜單,模態框...)


vue (組件庫-柵格系統、組件[table,form,button])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章