主頁 > 前端設計 > WEB之CSS3系列筆記

WEB之CSS3系列筆記

2020-09-30 21:13:44 前端設計

WEB之CSS3系列筆記

CSS3屬性選擇器

屬性選擇器串列

選擇符 簡介
E[att] 選擇具有att屬性的E元素
E[att="val"] 選擇具有att屬性且屬性值為val的E元素
E[att^="val"] 匹配具有att屬性, 且值以val開頭的E元素
E[att$="val"] 匹配具有att屬性, 且值以val借位的E元素
E[att*="val"] 匹配具有att屬性, 且值中含有val的E元素
  • 例如:

    button {
      cursor: pointer;
    }
    button[disabled] {
      cursor: default
    }
    
  • 例如

    input[type=search] {
      color: skyblue;
    }
    
    span[class^=black] {
      color: lightgreen;
    }
    
    span[class$=black] {
      color: lightsalmon;
    }
    
    span[class*=black] {
      color: lightseagreen;
    }
    

結構偽類選擇器

屬性串列

選擇符 簡介
E:first-child 匹配父元素中的第一個子元素E
E:last-child 匹配父元素中最后一個E元素
E:nth-child(n) 匹配父元素中的第n個子元素E
E:first-of-type 指定型別E的第一個
E:last-of-type 指定型別E的最后一個
E:nth-of-type(n) 指定型別E的第n個
  • 例如

    ul li:first-child {
      background-color: lightseagreen;
    }
    
    ul li:last-child {
      background-color: lightcoral;
    }
    
    ul li:nth-child(3) {
      background-color: aqua;
    }
    
    /************************************************/
    <style>
      /* 偶數 */
      ul li:nth-child(even) {
        background-color: aquamarine;
      }
    
      /* 奇數 */
      ul li:nth-child(odd) {
        background-color: blueviolet;
      }
    
      /*n 是公式,從 0 開始計算 */
      ul li:nth-child(n) {
        background-color: lightcoral;
      }
    
      /* 偶數 */
      ul li:nth-child(2n) {
        background-color: lightskyblue;
      }
    
      /* 奇數 */
      ul li:nth-child(2n + 1) {
        background-color: lightsalmon;
      }
    
      /* 選擇第 0 5 10 15, 應該怎么選 */
      ul li:nth-child(5n) {
        background-color: orangered;
      }
    
      /* n + 5 就是從第5個開始往后選擇 */
      ul li:nth-child(n + 5) {
        background-color: peru;
      }
    
      /* -n + 5 前五個 */
      ul li:nth-child(-n + 5) {
        background-color: tan;
      }
    </style>
    

偽元素選擇器

選擇符 簡介
::before 在元素內部的前面插入內容
::after 在元素內部的后面插入內容
  • 偽類選擇器注意事項
    • beforeafter 必須有 content 屬性
    • before 在內容前面,after 在內容后面
    • beforeafter 創建的是一個元素,但是屬于行內元素
    • 創建出來的元素在 Dom 中查找不到,所以稱為偽元素
    • 偽元素和標簽選擇器一樣,權重為 1

2D轉換之translate

2D 轉換

  • 2D 轉換是改變標簽在二維平面上的位置和形狀
  • 移動: translate
  • 旋轉: rotate
  • 縮放: scale

translate 語法

  • x 就是 x 軸上水平移動
  • y 就是 y 軸上水平移動
transform: translate(x, y)
transform: translateX(n)
transfrom: translateY(n)
  • 重點知識點

    • 2D 的移動主要是指 水平、垂直方向上的移動
    • translate 最大的優點就是不影響其他元素的位置
    • translate 中的100%單位,是相對于本身的寬度和高度來進行計算的
    • 行內標簽沒有效果
  • 例如:

    div {
      background-color: lightseagreen;
      width: 200px;
      height: 100px;
      /* 平移 */
      /* 水平垂直移動 100px */
      /* transform: translate(100px, 100px); */
    
      /* 水平移動 100px */
      /* transform: translate(100px, 0) */
    
      /* 垂直移動 100px */
      /* transform: translate(0, 100px) */
    
      /* 水平移動 100px */
      /* transform: translateX(100px); */
    
      /* 垂直移動 100px */
      transform: translateY(100px)
    }
    

2D 轉換 rotate

  1. rotate 旋轉

    • 2D 旋轉指的是讓元素在二維平面內順時針或者逆時針旋轉
  2. rotate 語法

    /* 單位是:deg */
    transform: rotate(度數) 
    
    /**/
    div{
          transform: rotate(0deg);
    }
    
  3. 重點知識點

    • rotate 里面跟度數,單位是 deg
    • 角度為正時,順時針,角度為負時,逆時針
    • 默認旋轉的中心點是元素的中心點
  4. 代碼演示

    img:hover {
      transform: rotate(360deg)
    }
    

設定元素旋轉中心點(transform-origin)

  1. transform-origin 基礎語法

    transform-origin: x y;
    
  2. 重要知識點

    • 注意后面的引數 x 和 y 用空格隔開
    • x y 默認旋轉的中心點是元素的中心 (50% 50%),等價于 center center
    • 還可以給 x y 設定像素或者方位名詞(topbottomleftrightcenter)

2D 轉換之 scale

  1. scale 的作用

    • 用來控制元素的放大與縮小
  2. 語法

    transform: scale(x, y)
    
  3. 知識要點

    • 注意,x 與 y 之間使用逗號進行分隔
    • transform: scale(1, 1): 寬高都放大一倍,相當于沒有放大
    • transform: scale(2, 2): 寬和高都放大了二倍
    • transform: scale(2): 如果只寫了一個引數,第二個引數就和第一個引數一致
    • transform:scale(0.5, 0.5): 縮小
    • scale 最大的優勢:可以設定轉換中心點縮放,默認以中心點縮放,而且不影響其他盒子
  4. 代碼演示

div:hover {
    /* 注意,數字是倍數的含義,所以不需要加單位 */
    /* transform: scale(2, 2) */

    /* 實作等比縮放,同時修改寬與高 */
    /* transform: scale(2) */

    /* 小于 1 就等于縮放*/
    transform: scale(0.5, 0.5)
}

影片(animation)

  1. 什么是影片

    • 影片是 CSS3 中最具顛覆性的特征之一,可通過設定多個節點來精確的控制一個或者一組影片,從而實作復雜的影片效果
  2. 影片的基本使用

    • 先定義影片
    • 在呼叫定義好的影片
  3. 語法格式(定義影片)

    @keyframes 影片名稱 {
        0% {
            width: 100px;
        }
        100% {
            width: 200px
        }
    }
    
  4. 語法格式(使用影片)

    div {
    	/* 呼叫影片 */
        animation-name: 影片名稱;
     	/* 持續時間 */
     	animation-duration: 持續時間;
    }
    
  5. 影片序列

    • 0% 是影片的開始,100 % 是影片的完成,這樣的規則就是影片序列
    • 在 @keyframs 中規定某項 CSS 樣式,就由創建當前樣式逐漸改為新樣式的影片效果
    • 影片是使元素從一個樣式逐漸變化為另一個樣式的效果,可以改變任意多的樣式任意多的次數
    • 用百分比來規定變化發生的時間,或用 fromto,等同于 0% 和 100%
  6. 代碼演示

    <style>
        div {
          width: 100px;
          height: 100px;
          background-color: aquamarine;
          animation-name: move;
          animation-duration: 0.5s;
        }
    
        @keyframes move{
          0% {
            transform: translate(0px)
          }
          100% {
            transform: translate(500px, 0)
          }
        }
      </style>
    

影片常見屬性

屬性 描述
@keyframes 規定影片
animation 所有影片屬性的簡寫屬性, 除了animation-play-state屬性,
animation-name 規定@keyframes影片的名稱
animation-duration 規定影片完成一個周期所花費的秒或毫秒, 默認是0
animation-timing-function 規定影片的速度曲線
animation-delay 規定影片何時開始, 默認是0.
animation-iteration-count 規定影片被播放的次數, 默認是1, 還有infinite
animation-direction 規定影片是否在下一周期逆向播放, 默認是"normal", alternate逆播放
animation-play-state 規定影片是否正在運行或暫停,默認"running"還有paused
animation-fill-mode 規定影片結束后狀態, 保持forwards回到起始backwards
  • 例如:

    div {
      width: 100px;
      height: 100px;
      background-color: aquamarine;
      /* 影片名稱 */
      animation-name: move;
      /* 影片花費時長 */
      animation-duration: 2s;
      /* 影片速度曲線 */
      animation-timing-function: ease-in-out;
      /* 影片等待多長時間執行 */
      animation-delay: 2s;
      /* 規定影片播放次數 infinite: 無限回圈 */
      animation-iteration-count: infinite;
      /* 是否逆行播放 */
      animation-direction: alternate;
      /* 影片結束之后的狀態 */
      animation-fill-mode: forwards;
    }
    
    div:hover {
      /* 規定影片是否暫停或者播放 */
      animation-play-state: paused;
    }
    

    影片簡介方式

    /* animation: 影片名稱 持續時間 運動曲線 何時開始 播放次數 是否反方向 起始與結束狀態 */
    animation: name duration timing-function delay iteration-count direction fill-mode
    

    知識要點

    • 簡寫屬性里面不包含 animation-paly-state
    • 暫停影片 animation-paly-state: paused; 經常和滑鼠經過等其他配合使用
    • 要想影片走回來,而不是直接調回來:animation-direction: alternate
    • 盒子影片結束后,停在結束位置:animation-fill-mode: forwards

速度曲線細節

animation-timing-function: 規定影片的速度曲線,默認是ease

描述
linear 影片從頭到尾的速度是相同的,勻速
ease 默認,影片從低俗開始,然后加快,在結束前變慢,
ease-in 影片以低速開始,
ease-out 影片以低速結束,
ease-in-out 影片以低速開始和結束,
strps() 指定了時間函式中的間隔數量(步長)
  • 例如

    div {
      width: 0px;
      height: 50px;
      line-height: 50px;
      white-space: nowrap;
      overflow: hidden;
      background-color: aquamarine;
      animation: move 4s steps(24) forwards;
    }
    
    @keyframes move {
      0% {
        width: 0px;
      }
    
      100% {
        width: 480px;
      }
    }
    

3D 轉換

3D 轉換知識要點

  • 3D 位移:translate3d(x, y, z)
  • 3D 旋轉:rotate3d(x, y, z)
  • 透視:perspctive
  • 3D呈現 `transfrom-style``

``3D移動translate3d`

  • 3D 移動就是在 2D 移動的基礎上多加了一個可以移動的方向,就是 z 軸方向
  • transform: translateX(100px):僅僅是在 x 軸上移動
  • transform: translateY(100px):僅僅是在 y 軸上移動
  • transform: translateZ(100px):僅僅是在 z 軸上移動
  • transform: translate3d(x, y, z):其中x、y、z 分別指要移動的軸的方向的距離
  • 注意:x, y, z 對應的值不能省略,不需要填寫用 0 進行填充
 transform: translate3d(x, y, z)
 
 /*******************************/
transform: translate3d(100px, 100px, 100px)
/* 注意:x, y, z 對應的值不能省略,不需要填寫用 0 進行填充 */
transform: translate3d(100px, 100px, 0)

透視 perspective

知識點講解

  • 如果想要網頁產生 3D 效果需要透視(理解成 3D 物體投影的 2D 平面上)
  • 實際上模仿人類的視覺位置,可視為安排一直眼睛去看
  • 透視也稱為視距,所謂的視距就是人的眼睛到螢屏的距離
  • 距離視覺點越近的在電腦平面成像越大,越遠成像越小
  • 透視的單位是像素

知識要點

  • 透視需要寫在被視察元素的父盒子上面

    body {
      perspective: 1000px;
    }
    

translateZ

translateZperspecitve 的區別

  • perspecitve 給父級進行設定,translateZ 給 子元素進行設定不同的大小

3D 旋轉rotateX

3D 旋轉指可以讓元素在三維平面內沿著 x 軸、y 軸、z 軸 或者自定義軸進行旋轉

  • 語法

    • transform: rotateX(45deg) -- 沿著 x 軸正方向旋轉 45 度
    • transform: rotateY(45deg) -- 沿著 y 軸正方向旋轉 45 度
    • transform: rotateZ(45deg) -- 沿著 z 軸正方向旋轉 45 度
    • transform: rotate3d(x, y, z, 45deg) -- 沿著自定義軸旋轉 45 deg 為角度
  • 例如

    div {
      perspective: 300px;
    }
    
    img {
      display: block;
      margin: 100px auto;
      transition: all 1s;
    }
    
    img:hover {
      transform: rotateX(-45deg)
    }
    
    /*
    - 左手的手拇指指向 x 軸的正方向
    
    - 其余手指的彎曲方向就是該元素沿著 x 軸旋轉的方向
    */
    

3D 旋轉 rotateY

div {
  perspective: 500px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateY(180deg)
}
/*
- 左手的拇指指向 y 軸的正方向

- 其余的手指彎曲方向就是該元素沿著 y 軸旋轉的方向(正值)
*/

3D 旋轉 rotateZ

  1. 代碼演示

    div {
      perspective: 500px;
    }
    
    img {
      display: block;
      margin: 100px auto;
      transition: all 1s;
    }
    
    img:hover {
      transform: rotateZ(180deg)
    }
    
  2. rotate3d

    • transform: rotate3d(x, y, z, deg) -- 沿著自定義軸旋轉 deg 為角度
    • x, y, z 表示旋轉軸的矢量,是標識你是否希望沿著該軸進行旋轉,最后一個標識旋轉的角度
      • transform: rotate3d(1, 1, 0, 180deg) -- 沿著對角線旋轉 45deg
      • transform: rotate3d(1, 0, 0, 180deg) -- 沿著 x 軸旋轉 45deg

3D 呈現 transform-style

  1. transform-style
    • ☆☆☆☆☆

    • 控制子元素是否開啟三維立體環境

    • transform-style: flat 代表子元素不開啟 3D 立體空間,默認的

    • transform-style: preserve-3d 子元素開啟立體空間

    • 代碼寫給父級,但是影響的是子盒子

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/143263.html

標籤:HTML5

上一篇:Javplayer 整合插件版下載使用

下一篇:撰寫python代碼實作打開并登錄網頁、對網頁進行點擊、輸入資訊等操作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more