我的 CSS3 笔记
1. CSS3 選擇器
2. CSS3屬性
1、position屬性
定義和用法:position 屬性規(guī)定元素的定位類型。
說明:這個(gè)屬性定義建立元素布局所用的定位機(jī)制。任何元素都可以定位,不過絕對或固定元素會(huì)生成一個(gè)塊級框,而不論該元素本身是什么類型。相對定位元素會(huì)相對于它在正常流中的默認(rèn)位置偏移。
可能的值:
瀏覽器支持:所有主流瀏覽器都支持 position 屬性。
注釋:任何的版本的 Internet Explorer (包括 IE8)都不支持屬性值 "inherit"。
2.css的z-index屬性
定義和用法:z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面。
注釋:元素可擁有負(fù)的 z-index 屬性值。
注釋:Z-index 僅能在定位元素上奏效(例如 position:absolute;)!
說明:該屬性設(shè)置一個(gè)定位元素沿 z 軸的位置,z 軸定義為垂直延伸到顯示區(qū)的軸。如果為正數(shù),則離用戶更近,為負(fù)數(shù)則表示離用戶更遠(yuǎn)。
可能的值:
瀏覽器支持:所有主流瀏覽器都支持 z-index 屬性。
注釋:任何的版本的 Internet Explorer (包括 IE8)都不支持屬性值 "inherit"。
2、box-shadow 屬性
box-shadow 屬性向框添加一個(gè)或多個(gè)陰影。
語法:box-shadow: h-shadow v-shadow blur spread color inset;
3、pointer-events
pointer-events屬性值詳解
- auto——效果和沒有定義pointer-events屬性相同,鼠標(biāo)不會(huì)穿透當(dāng)前層。在SVG中,該值和visiblePainted的效果相同。
- none——元素不再是鼠標(biāo)事件的目標(biāo),鼠標(biāo)不再監(jiān)聽當(dāng)前層而去監(jiān)聽下面的層中的元素。但是如果它的子元素設(shè)置了pointer-events為其它值,比如auto,鼠標(biāo)還是會(huì)監(jiān)聽這個(gè)子元素的。
- 其它屬性值為SVG專用,這里不再多介紹了。
pointer-events: none;
可以讓某個(gè)元素實(shí)現(xiàn)類似于海市蜃樓的效果,具體理解為,你可以看的到某個(gè)元素,但是你無法摸的著。而 display:none; 是你摸不著,也看不見。
如果把某個(gè)元素再加上opacity:0;則可以很容易實(shí)現(xiàn)類似display:none;的效果(摸不著,看不見)。
更多用法請查看 pointer-events: none; 忽略某一層的存在
3. C33 的 2D和3D 轉(zhuǎn)換
2D 轉(zhuǎn)換包括:平移,旋轉(zhuǎn),縮放,偏轉(zhuǎn)
<style>/*transform 表示要進(jìn)行2d轉(zhuǎn)換了 平移,旋轉(zhuǎn),縮放,偏轉(zhuǎn) */.box{width: 800px;height: 650px;background-color: #ccc;margin: 200px auto;}img{transition: all 2s;/*transform-origin: left center;*//*改變中心旋轉(zhuǎn)點(diǎn),left,center,right,top,center,bottom*/}img:hover{/*平移,兩個(gè)值,一個(gè)水平位置,一個(gè)垂直位置, 平移后仍然占位置,是平移前的位置*//*-webkit-transform: translate(100px,100px)*//*旋轉(zhuǎn),方向是順時(shí)針,中心點(diǎn)是正中心*//*-webkit-transform:rotate(360deg);*//*偏轉(zhuǎn),第一個(gè)值水平偏轉(zhuǎn)方向,第二個(gè)值垂直偏轉(zhuǎn)方向*//*-webkit-transform:skew(180deg,360deg);*//*縮放,第一個(gè)值水平縮放倍數(shù),第二值垂直縮放倍數(shù),可用于鼠標(biāo)經(jīng)過時(shí)放大*//*-webkit-transform:scale(2,2);*//*如果要想添加多個(gè)2D轉(zhuǎn)化,用空格隔開*/ /*先平移,后旋轉(zhuǎn)*//*-webkit-transform:translate(300px,0) rotate(180deg);*/} </style> <div class="box"><img src="images/gl.jpg" alt=""> </div>復(fù)制代碼? 瀏覽器兼容性的處理,比如:
? -webkit-transform,-moz-transform,-ms-transform,-o-transform
?CSS3 的 3D 轉(zhuǎn)換
<style>.box{width: 600px;margin: 200px auto;perspective: 520px;/*透視屬性*/}.box:hover img{/*-webkit-transform:translateZ(200px);*//*平移的3D轉(zhuǎn)換*/-webkit-transform:rotateY(360deg) rotateX(360deg) rotateZ(360deg);/*-webkit-transform:rotateX(360deg);*/}img{transition: all 1.5s;}</style> </head> <body><div class="box"><img src="images/mw.jpg" alt=""></div> </body>復(fù)制代碼4. CSS3 的過渡動(dòng)畫
<style> .box{width: 300px;height: 300px;background-color: red;-webkit-transition:width 2s ease-in-out 3s, height 2s linear 1s, background-color 2s linear;/*第一個(gè)值,表示發(fā)生改變的屬性,all 只要發(fā)生改變的屬性,全部加上過渡動(dòng)畫*//*第二個(gè)值,表示時(shí)間*//*第三個(gè)值,表示動(dòng)畫的運(yùn)行軌跡*//*如果有第四個(gè)值,表示 先變化一個(gè)屬性,延遲一定時(shí)間,再變化另一個(gè)屬性,兩個(gè)屬性之間用逗號隔開*/}.box:hover{width: 1500px;height: 500px;background-color: pink;} </style> <div class="box"></div>復(fù)制代碼如果有第四個(gè)值,表示 先變化一個(gè)屬性,延遲一定時(shí)間,再變化另一個(gè)屬性, 兩個(gè)屬性之間用逗號隔開
linear,規(guī)定以相同速度開始至結(jié)束的過渡效果(等于cubic-bezier(0,0,1,1))
ease,規(guī)定慢速開始,然后變快,然后慢速結(jié)束的過渡效果(等于cubicbezier(0.25,1,0.25,1))
ease-in,規(guī)定以慢速開始的過渡效果,(等于cubic-bezier(0.42,0,1,1))
ease-out,規(guī)定以慢速結(jié)束的過渡結(jié)果(等于cubic-bezier(0,0,0.58,1))
ease-in-out,規(guī)定以慢速開始和結(jié)束的過渡效果,(等于cubic-bezier(0.42,0,0.58,1))
必須要有: 1.起始屬性? 2.終止屬性?
?CSS3 過渡使用?
?1.需要具有層級關(guān)系?
?2.必須是 hover 可以做到的?
?3.需要考慮是否有動(dòng)態(tài)數(shù)據(jù)的添加,沒有動(dòng)態(tài)就可以用,動(dòng)態(tài)數(shù)據(jù)用jQuery來寫,用回調(diào)來接收動(dòng)態(tài)數(shù)據(jù)?
5. object-fit ( image,video ) 自適應(yīng)
(1)替換元素
? 其內(nèi)容不受CSS視覺格式化模型(中文釋義參見這里)控制的元素,比如image, 嵌入的文檔(iframe之類)或者applet。比如,img元素的內(nèi)容通常會(huì)被其src屬性指定的圖像替換掉。替換元素通常有其固有的尺寸:一個(gè)固有的寬度,一個(gè)固有的高度和一個(gè)固有的比率。比如一幅位圖有固有用絕對單位指定的寬度和高度,從而也有固有的寬高比率。另一方面,其他文檔也可能沒有固有的尺寸,比如一個(gè)空白的html文檔。 CSS渲染模型不考慮替換元素內(nèi)容的渲染。這些替換元素的展現(xiàn)獨(dú)立于CSS。object, video, textarea, input也是替換元素,audio和canvas在某些特定情形下為替換元素。使用CSS的content屬性插入的對象是匿名替換元素。
(2)為何需要object-position/object-fit?
?適配響應(yīng)式布局
(3)object-fit理解
.fill { object-fit: fill; } .contain { object-fit: contain; } .cover { object-fit: cover; } .none { object-fit: none; } .scale-down { object-fit: scale-down; }復(fù)制代碼每個(gè)屬性值的具體含義如下:
fill : 中文釋義“填充”。默認(rèn)值。替換內(nèi)容拉伸填滿整個(gè)content box, 不保證保持原有的比例。?
contain : 中文釋義“包含”。保持原有尺寸比例。保證替換內(nèi)容尺寸一定可以在容器里面放得下。因此,此參數(shù)可能會(huì)在容器內(nèi)留下空白。?
cover : 中文釋義“覆蓋”。保持原有尺寸比例。保證替換內(nèi)容尺寸一定大于容器尺寸,寬度和高度至少有一個(gè)和容器一致。因此,此參數(shù)可能會(huì)讓替換內(nèi)容(如圖片)部分區(qū)域不可見。 none : 中文釋義“無”。保持原有尺寸比例。同時(shí)保持替換內(nèi)容原始尺寸大小。?
scale-down : 中文釋義“降低”。就好像依次設(shè)置了none或contain, 最終呈現(xiàn)的是尺寸比較小的那個(gè)。
6.? 同向邊距的重合問題(overflow : hidden 三個(gè)作用)
? ?overflow : hidden??
(1)給父級加 overflow : hidden 可以清除子級浮動(dòng)對父級的影響
(2)給父級加 overflow : hidden 可以使子級超出部分隱藏(比如:制作輪播圖時(shí))
(3)給父級加 overflow : hidden。解決同向邊距的重合問題;
HTML: <div id="box"><p>中華人民共和國</p> </div CSS: <style>*{padding: 0;margin: 0;}#box{width: 300px;height: 300px;background-color: aquamarine;/* padding-top: 30px; */}#box p{background-color: brown;margin-top: 30px;} </style> 復(fù)制代碼子集元素加入margin:top 的同時(shí),父級元素沒有margin:top,那么子集元素的margin:top 會(huì)加到父級上,導(dǎo)致整體的div全部下降,解決思路:給父級加 overflow:hidden 屬性?案例
案例 1:盾牌制作:
<style>html,body{background-color: pink;width: 100%;height: 100%;position: relative;padding-top: 1px;/*同向邊距問題的解決:1. overflow: hidden;2.padding-top: 1px;*/}.box{width: 480px;margin: 100px auto;/*上下100px,左右相等*/}.box img:first-child{transform: translate(-200px,50px) rotate(45deg);}.box img:nth-child(2){transform: translate(-600px,-50px) rotate(60deg);}.box img:nth-child(3){transform: translate(400px,80px) rotate(60deg) scale(.5,.5);}.box img:nth-child(4){transform: translate(-400px,-90px) rotate(60deg) scale(.5,.5);}.box img:nth-child(5){transform: translate(0px,80px) rotate(54deg) scale(.5,.5);}.box img:nth-child(6){transform: translate(400px,80px) rotate(65deg) scale(.5,.5);}.box img:nth-child(7){transform: translate(400px,80px) rotate(45deg) scale(.5,.5);}.box img:nth-child(8){transform: translate(0px,-300px) rotate(265deg) scale(.5,.5);}.box img:nth-child(9){transform: translate(0,80px) rotate(60deg);}img{transition: all 2s;}body:hover .box img{transform: none;}</style> </head> <body><div class="box"><img src="images/shield_1_01.png" alt=""><img src="images/shield_1_02.png" alt=""><img src="images/shield_1_03.png" alt=""><img src="images/shield_1_04.png" alt=""><img src="images/shield_1_05.png" alt=""><img src="images/shield_1_06.png" alt=""><img src="images/shield_1_07.png" alt=""><img src="images/shield_1_08.png" alt=""><img src="images/shield_1_09.png" alt=""></div> </body>復(fù)制代碼案例 2:撲克牌
<style>.box{background-color: skyblue;width: 600px;height: 600px;margin: 200px auto;position: relative;}.box img{position: absolute;top:100px;left: 100px;transition: all 1s;transform-origin: center bottom; }.box:hover img:first-child{transform: rotate(0deg);}.box:hover img:nth-child(2){transform: rotate(15deg);}.box:hover img:nth-child(3){transform: rotate(30deg);}.box:hover img:nth-child(4){transform: rotate(45deg);}.box:hover img:nth-child(5){transform: rotate(60deg);}</style> </head> <body><div class="box"><img src="images/pk1.png" alt=""><img src="images/pk1.png" alt=""><img src="images/pk1.png" alt=""><img src="images/pk1.png" alt=""><img src="images/pk1.png" alt=""></div> </body>復(fù)制代碼案例3. 鐘表的翻轉(zhuǎn)
<style>.box{width: 300px;height: 300px;background-color: red;perspective: 600px;}.box::before,.box::after{content: "";display: block;width: 300px;height: 300px;-webkit-background-size:100% 100%;background-size: 100% 100%;position: absolute;}.box::before{background-image: url(images/1.jpg);z-index: 1;}.box::after{background-image: url(images/timg.jpg);transition: transform 2s;transform-origin: right center;z-index: 2;}.box:hover::after{transform: rotateY(180deg);}</style> </head> <body><div class="box"></div> </body>復(fù)制代碼案例4. 正反面的翻頁效果
<style>.box{width: 310px;height: 441px;position: relative;margin: 0 auto;}.box img{position: absolute;top: 0;left: 0;transition: all 1s;backface-visibility: hidden;/*背面隱藏*/perspective: 500px;/*透視屬性,可以增加3D效果*/}.box img:first-child{z-index: 2;}.box img:nth-child(2){-webkit-transform:rotateY(180deg);}.box:hover img:first-child{-webkit-transform:rotateY(180deg);}.box:hover img:nth-child(2){-webkit-transform:rotateY(0);}</style> </head> <body><div class="box"><img src="images/pk1.png" alt=""><img src="images/pk2.png" alt=""></div> </body>復(fù)制代碼案例5. 正方體的制作
style>body{perspective: 800px;}div{width: 300px;height: 300px;border: 1px solid #ccc;}.box{margin: 400px auto;position: relative;transform-style: preserve-3d;-webkit-transform:rotateY(24deg) rotateX(35deg);transition: transform 6s linear;}.box:hover{-webkit-transform:rotateY(360deg) rotateX(360deg);}.box div{position: absolute;line-height: 300px;text-align: center;font-size: 100px;color: #ccc;}.box div:first-child{background-color: red;transform-origin: right;-webkit-transform:rotateY(90deg); }.box div:nth-child(2){background-color: orange;transform-origin: left;-webkit-transform:rotateY(270deg); }.box div:nth-child(3){background-color: yellow;-webkit-transform:rotateX(90deg) translateY(150px) translateZ(150px);}.box div:nth-child(4){background-color: green;transform-origin: left;-webkit-transform:rotateX(270deg) translateY(-150px) translateZ(150px); }.box div:nth-child(5){background-color: blue;-webkit-transform:translateZ(300px)}.box div:nth-child(6){background-color: purple;-webkit-transform:rotateY(180deg); }</style> </head> <body><div class="box"><div class="up">上</div><div class="down">下</div><div class="left">左</div><div class="right">右</div><div class="front">前</div><div class="rear">后</div></div> </body>復(fù)制代碼總結(jié)
以上是生活随笔為你收集整理的我的 CSS3 笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。