1. 程式人生 > >前端之響應式佈局,過度以及flex佈局

前端之響應式佈局,過度以及flex佈局

一,z-index

脫離文件流標籤,具有z-index屬性的值,可以用來控制顯示層次的優先順序,值為任意整數(值越大優先順序越高)

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>z-index</title>
	<style>
		.box {
			position: relative;
			width: 400px;
			height: 400px;
			background: cyan;
		}
		div div {
			width: 200px;
			height: 200px;
			background: orange;
			/*絕對定位議案與相對定位結合使用,父級先使用相對定位,然後子級使用絕對定位的參考系是最近的使用相對定位的父級*/
			position:absolute;
		}
		.b1 {
			background: tan;
		}
		.b2 {
			background: pink;
			left:100px;
			top:100px;
			/*只是改變現實的優先順序,也可以改變body總的順序改變*/
			z-index:2;
		}
		.b3 {
			right:0;
			bottom:0;
		}
	</style>
</head>
<body>
	<!-- 需求1:d1,d2,d3均為box的一半大小 -->
	<!-- 需求2:d1左上角,d2居中,d3右下角 -->
	<!-- 需求3:d2區域在最上方(會覆蓋d1,d3的重疊部分) -->
	<div class="box">
		<div class="b1"></div>
		<div class="b2"></div>
		<div class="b3"></div>
	</div>
</body>
</html>

二,響應式佈局

可以強加一些邏輯,視窗在規定的範圍內,顯示一定的樣式,超出範圍設定其他的樣式

1,響應式佈局內,css語法同樣正常使用

2,響應式佈局之間存在不同螢幕尺寸的限制,使用樣式相互不影響(滿足當前螢幕尺寸時,該樣式塊起作用,不滿足時,則樣式塊失效)

3,當相應式佈局中樣式塊起作用時,會與正常樣式塊協同佈局,遵循選擇器的有限級規則

原則: 1,採用響應式佈局的頁面,基本樣式只做共性的樣式設定,需要根據頁面尺寸進行適應變化的樣式均有相應式佈局處理

2,要根據縣影視佈局的頁面要處理所有螢幕尺寸下的樣式塊

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>響應式佈局</title>
	<style>
		html,body {
			margin: 0;
		}
		.it {
			height: 300px;
			background: #f30;
			text-align:center;
			float: left;
			border-radius: 50%;
			font: 500 50px/300px "微軟雅黑";
			color:white;
		}
		.box:after {
			content: "";
			display: block;
			clear:both;
		}
		/*設定螢幕超出1200px範圍*/
		@media only screen and (min-width: 1200px) {
			.box {
				max-width: 1200px;
				width: 95%;
				margin: 0 auto;
				background-color: pink;
			}
			.it {
				width: 25%;
			}
		}
		@media only screen and (min-width: 600px) and (max-width:1200px) { 
			.box {
				background-color: cyan;
			}
			.it {
				width: 30%;
				margin: 0 calc(10% / 6);
			}
		}
		@media only screen and (max-width: 600px) {
			.box {
				background-color: orange;
			}
			.it {
				width: 80%;
				margin-left: 10%;
				min-width: 300px; 
			}
		}
	</style>
</head>
<body>
	<div class="box">
		<div class="it">1</div>
		<div class="it">2</div>
		<div class="it">3</div>
		<div class="it">4</div>
		<div class="it">5</div>
		<div class="it">6</div>
		<div class="it">7</div>
		<div class="it">8</div>
		<div class="it">9</div>
		<div class="it">10</div>
		<div class="it">11</div>
		<div class="it">12</div>
	</div>
</body>
</html>

三,過渡

從一個狀態以動畫的方式程式設計另一種狀態的這種變化過程就叫做過渡

屬性:

1,transition-porperty:表示過渡樣式屬性
all(預設值) 還可以填多個值,之間用逗號隔開(表示過渡需要變得)
2,transition-duration:表示過渡持續的時間
3,transiton-delay:表示過渡延遲時間
4,transition-timing-function:表示過渡運動曲線
-- linear:勻速
-- ease:慢快慢(預設值)
-- ease-in-out:慢快慢
-- easa-in:慢快
-- ease-out:快慢
-- cubic-bezier():貝賽爾曲線函式
5,transition:上面四個屬性整體賦值,按1234的順序賦值
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>過渡</title>
	<style>
		.box {
			width: 200px;
			height: 200px;
			background: cyan;
			/*過渡樣式屬性(一般不設定.存在固定值)*/
			transition-property: all;
			/*過渡持續時間(下面的0可以省略,直接.2s)*/
			transition-duration: 0.2s;
			/*過渡延遲時間(一般會給使用者造成電腦卡頓的感覺,也不設定)*/
			transition-delay: 0.1s;
			/*過渡運動曲線(一半呢只使用預設值)*/
			transition-timing-function: ease;
			/*可以複合賦值*/
			/*transition: 0.3s ease;*/
		}
		.hover {
			width: 200px;
			height: 200px;
			margin: 0 auto;
		}
		/*下面是製造第二狀態處理方式,不會出現閃的狀態*/
		.hover:hover .box{
			width: 200px;
			height: 200px;
			border-radius: 50%;
			background: pink;
		}
	</style>
</head>
<body>
	<!-- 過渡的效果通過hover產生,可以製作一個hover層,處理方式:與顯示層同等區域大小 -->
	<div class="hover">
		<div class="box"></div>
	</div>
</body>
</html>

四,felx佈局

目的:之前學習的盒模型佈局(display) float佈局 position都不能很好的解決block垂直居中的問題,flex佈局擅長

1,將父級display屬性設定為flex,則父級成為container,子級成為item

2,container設定item的排列方向flex-direction

3,iterm對於container的空間佔比flex-grow

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>flex佈局</title>
	<style>
		.container {
			width: 600px;
			height: 600px;
			border: 1px solid black;
			margin: 0 auto;
		}
		.item {
			/*width: 200px;*/
			/*height: 200px;*/
			border-radius: 50%;
			background-color: orange;
			font-size: 80px;
		}
		/*容器:規定容器為flex,則容器內的標籤會成為該容器的專案(item)*/
		.container {
			/*在父級中設定子級的顯示方式:colum每個區域在自己的顯示區域橫豎顛倒,colum-reverse每個區域橫豎顛倒之後上下換位置(row預設值什麼什麼卵用)*/
			flex-direction: row;
			display: flex;
		}
		.item {
			/*預設只能一行排列,所有item總寬不允許超出container寬度*/
			/*width: 300px;*/
			/*預設情況下item可以不規定高度,高度會自適應父級*/
			/*item沒有設定寬度下,可以通過flex-grow決定對於父級的佔比*/
		}
		.it1, .it3 {
			flex-grow: 1;
		}
		.it2 {
			flex-grow: 3;
			background-color: pink
		}
	</style>
</head>
<body>
	<div class="container">
		<div class="item it1">1</div>
		<div class="item it2">2</div>
		<div class="item it3">3</div>
	</div>
</body>
</html>

五,動畫

1,animation-name:表示動畫名(名字隨意)
2,animation-duration:表示動畫的持續時間
3,animation-delay:表示動畫延遲時間
4,animation-timing-function:表示動畫的運動曲線
-- linear:勻速
-- ease:慢快慢
-- ease-in-out:慢快慢
-- easa-in:慢快
-- ease-out:快慢
-- cubic-bezier():貝賽爾曲線函式
5,animation-paly-state:表示動畫狀態
可以用於懸浮播放,離開暫停
-- running:執行
-- paused:暫停
6,animation-fill-mode:表示動畫結束後的停留位置
-- forwards:終點 
-- backwards:起點
7,animation-iteration-count:表示動畫播放的次數
-- <count>:固定次數
-- infinite:無限次
8,animation-direction:表示運動方向
-- normal:原起點為第一次運動的起點,且永遠從起點向終點運動
-- alternate:原起點為第一次運動的起點,且來回運動
-- alternate-reverse:原終點變為第一次運動的起點,且來回運動
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>	動畫</title>
	<style>	
		.box {
			width: 200px;
			height: 200px;
			background-color: red;
		}
		.box {
			/*繫結動畫名*/
			animation-name:xuan;
			/*持續時間*/
			animation-duration:5s;
			/*延遲時間*/
			/*animation-delay: .1s;*/
			/*動畫結束停留位置:backwards起點 forwards終點*/
			/*animation-fill-mode: forwards;*/
			/*運動次數 infinite無數次*/
			animation-iteration-count: infinite;
			/*多次運動方向的規則*/
			/*alternate:來回*/
			/*alternate-reverse:終點開始來回*/
			animation-direction: alternate-reverse;
			/*動畫狀態 running*/
			/*animation-play-state: paused;*/

			/*整體設定*/
			/*animation: wasai 1s 2 linear alternate;*/
		}
		.box:hover {
			animation-play-state: running;
		}
		@keyframes xuan {
			/*0%到100%表示顯示的起始位置形態設定*/
			0% {
				height: 400px;
			}
			100% {
				width: 400px;
			}
		}
	</style>
</head>
<body>
	<div class="box"></div>
</body>
</html>