整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Vue3 實現一個簡單的放大動畫

          Vue3 實現一個簡單的放大動畫

          計思路

          定位動畫我們在之前已經實現了。那么這里只要考慮如何實現放大動畫,最后將兩者結合起來就好。從后端拿到的返回值是一個固定長度的數組,所以這里還是用 div 利用 flex 布局將圖片平鋪展示,利用 CSS transform 進行位置移動和縮放。

          接下來就是如何計算出每個 div 的位移。DOM 元素的位移主要關注左上角頂點的位移。針對這個需求可以畫出如下草圖。外層 div 為 container,內層 div 為 inner。


          從上圖可以看到,每個 div 的位移即 center.left - inner.left, center.top - inner.top. container 的中心點:

          const containerCenterX=containerRect.left + containerRect.width / 2;
          const containerCenterY=containerRect.top + containerRect.height / 2;

          inner 移動的偏移量:

          // 讓 inner 移到 container 的正中間
          const offsetX=containerCenterX - itemRect.width / 2 - itemRect.left;
          const offsetY=containerCenterY - itemRect.height / 2 - itemRect.top;

          最后將方位動畫的 div 疊在 inner 上面即可。

          代碼實現和 Demo 演示

          梳理清思路之后,就可以實現代碼了。Demo 已經放在 CodeSandbox 上了。其中最主要的還是位移計算的邏輯。下面是Demo地址,也可以在我的博客上看到 Demo。 Demo 地址:codesandbox.io/p/devbox/si…

          布局部分代碼:

            <div class="container" ref="container">
              <div
                v-for="(image, index) in imageList"
                :key="index"
                class="wrapper"
                ref="imageElList"
                :style="{ opacity: image.active ? 1 : 0.6 }"
                @click="toggleActiveImage(index)"
              >
                <img :src="image.src" class="image" />
                <direction
                  ref="directionElList"
                  class="direction"
                  :style="{ display: image.active ? 'block' : 'none' }"
                  :pinPosition="selectedDirection"
                />
              </div>
            </div>

          數據結構部分:

          export const imageDemos=[
            {
              name: "image-1",
              src: "https://images.adsttc.com/media/images/564c/8b23/e58e/ce4d/7300/01c1/newsletter/01.jpg?1447856922",
              active: false,
            },
            {
              name: "image-2",
              src: "https://i.pinimg.com/550x/65/a9/10/65a91018534fc59b675150fc432ccc41.jpg",
              active: false,
            },
            {
              name: "image-3",
              src: "https://1.bp.blogspot.com/-PcYuV8FVZmQ/VXWy7y-QjDI/AAAAAAABewE/La-BpNsCsY0/s1600/mapa-grande1.jpg",
              active: false,
            },
            {
              name: "image-4",
              src: "https://image2.sina.com.cn/gm/zhuanqu/sephiroth/rwjs/fomalhaut_b.gif",
              active: false,
            },
            {
              name: "image-5",
              src: "https://gd-hbimg.huaban.com/f0c7a577ed51f171967cbd3c1b21e90361b6924b1594b7-yrOBDd",
              active: false,
            },
          ];

          偏移量計算部分代碼:

          const showActiveImage=(imageEl)=> {
            const containerEl=container.value;
          
            const containerRect=containerEl!.getBoundingClientRect();
            const itemRect=imageEl!.getBoundingClientRect();
          
            const containerCenterX=containerRect.left + containerRect.width / 2;
            const containerCenterY=containerRect.top + containerRect.height / 2;
          
            const offsetX=containerCenterX - itemRect.width / 2 - itemRect.left;
            const offsetY=containerCenterY - itemRect.height / 2 - itemRect.top;
          
            imageEl!.style.transform=`translate(${offsetX}px, ${offsetY}px) scale(1.2)`;
            imageEl!.style.zIndex=100;
          };

          拓展

          這次的需求也可以用于展示動畫。比如產品展示或者局部細節的展示。根據不同的需求結合不同的動畫,可以讓我們的頁面變得更加酷炫。

          三部分 附錄(因為暫時不支持插入超鏈接所以部分內容無法顯示


          附錄一 DIV命名規范


          • 企業DIV使用頻率高的命名方法
          • 網頁內容類
          • 標題: title
          • 摘要: summary
          • 箭頭: arrow
          • 商標: label
          • 網站標志: logo
          • 轉角/圓角:corner
          • 橫幅廣告: banner
          • 子菜單: subMenu
          • 搜索: search
          • 搜索框: searchBox
          • 登錄: login
          • 登錄條:loginbar
          • 工具條: toolbar
          • 下拉: drop
          • 標簽頁: tab
          • 當前的: current
          • 列表: list
          • 滾動: scroll
          • 服務: service
          • 提示信息: msg
          • 熱點:hot
          • 新聞: news
          • 小技巧: tips
          • 下載: download
          • 欄目標題: title
          • 熱點: hot
          • 加入:joinus
          • 注冊: regsiter
          • 指南: guide
          • 友情鏈接: friendlink
          • 狀態: status
          • 版權: copyright
          • 按鈕: btn
          • 合作伙伴: partner
          • 投票: vote
          • 左右中:left right center


          • 注釋的寫法: /* Footer */ 內容區/* End Footer */
          • id的命名:
          • 頁面結構
          • 容器: container
          • 頁頭:header
          • 內容:content/container
          • 頁面主體:main
          • 頁尾:footer
          • 導航:nav
          • 側欄:sidebar
          • 欄目:column
          • 頁面外圍控制整體布局寬度:wrapper
          • 左右中:left right center

          • 導航
          • 導航:nav
          • 主導航:mainbav
          • 子導航:subnav
          • 頂導航:topnav
          • 邊導航:sidebar
          • 左導航:leftsidebar
          • 右導航:rightsidebar
          • 菜單:menu
          • 子菜單:submenu
          • 標題: title
          • 摘要: summary

          • 功能
          • 標志:logo
          • 廣告:banner
          • 登陸:login
          • 登錄條:loginbar
          • 注冊:regsiter
          • 搜索:search
          • 功能區:shop
          • 標題:title
          • 加入:joinus
          • 狀態:status
          • 按鈕:btn
          • 滾動:scroll
          • 標簽頁:tab
          • 文章列表:list
          • 提示信息:msg
          • 當前的:current
          • 小技巧:tips
          • 圖標: icon
          • 注釋:note
          • 指南:guild
          • 服務:service
          • 熱點:hot
          • 新聞:news
          • 下載:download
          • 投票:vote
          • 合作伙伴:partner
          • 友情鏈接:link
          • 版權:copyright

          • class的命名:
          • 顏色:使用顏色的名稱或者16進制代碼,如
          • .red { color: red; }
          • .f60 { color: #f60; }
          • .ff8600 { color: #ff8600; }
          • 字體大小,直接使用”font+字體大小”作為名稱,如
          • .font12px { font-size: 12px; }
          • .font9px {font-size: 9pt; }
          • 對齊樣式,使用對齊目標的英文名稱,如
          • .left { float:left; }
          • .bottom { float:bottom; }
          • 標題欄樣式,使用”類別+功能”的方式命名,如
          • .barnews { }
          • .barproduct { }

          • 注意事項::
          • 一律小寫;
          • 盡量用英文;
          • 不加中杠和下劃線;
          • 盡量不縮寫,除非一看就明白的單詞.


          • 推薦的 CSS 書寫順序:
          • 顯示屬性
          • display
          • list-style
          • position
          • float
          • clear
          • 自身屬性
          • width
          • height
          • margin
          • padding
          • border
          • background
          • 文本屬性
          • color
          • font
          • text-decoration
          • text-align
          • vertical-align
          • white-space
          • other text
          • content

          附錄二 CSS精靈


          • CSS精靈原理以及應用
          • CSS雪碧的基本原理是把你的網站上用到的一些圖片整合到一張單獨的圖片中,從而減少你的網站的HTTP請求數量。
          • 該圖片使用CSS background和background-position屬性渲染,這也就意味著你的標簽變得更加復雜了,圖片是在CSS中定義,而非<img>標簽。
          • 一個簡單的例子:
          • 一張圖片作出一個按鈕的三個狀態
          • 一個鏈接用CSS做成按鈕的樣式,我們可以使用同一張圖片,完成按鈕的三個狀態,a:link,a:hover,a:active <a class="button" href="#">鏈接</a>
          • 加入右側的圖片為:200px 65px的三個按鈕圖拼合而成的圖片button.png,從上到下一次為按鈕的普通、鼠標滑過、鼠標點擊的狀態。則可以使用CSS進行定義。
          a {
           display:block; 
           width:200px; 
           height:65px; 
           line-height:65px; /*定義狀態*/
           text-indent:-2015px; /*隱藏文字*/
           background-image:url(button.png); /*定義背景圖片*/
           background-position:0 0;
           /*定義鏈接的普通狀態,此時圖像顯示的是頂上的部分*/
          }
          a:hover {
           background-position:0 -66px;
           /*定義鏈接的滑過狀態,此時顯示的為中間部分,向下取負值*/
          }
          a:active {
           background-position:0 -132px; 
           /*定 義鏈接的普通狀態,此時顯示的是底部的部分,向下取負值*/
          }
          
          • 更多的CSS雪碧,圖片更復雜,背景定位更精確。可能會用到大量的數值
          • 如:background:url(nav.png) -180px 24pxno-repeat; 來達到更精確的定位
          • 優點:
          • 減少加載網頁圖片時對服務器的請求次數
          • 可以合并多數背景圖片和小圖標,方便在任何位置使用,這樣不同位置的請求只需要調用一個圖片,從而減少對服務器的請求次數,降低服務器壓力,同時提高了頁面的加載速度,節約服務器的流量。
          • 提高頁面的加載速度
          • sprite技術的其中一個好處是圖片的加載時間(在有許多 sprite 時,單張圖片的加載時間)。由所需圖片拼成的一張 GIF圖片的尺寸會明顯小于所有圖片拼合前的大小。單張的 GIF只有相關的一個色表,而單獨分割的每一張 GIF 都有自己的一個色表,這就增加了總體的大小。因此,單獨的一張 JPEG 或者 PNGsprite 在大小上非常可能比把一張圖分成多張得來的圖片總尺寸小。
          • 減少鼠標滑過的一些bug
          • IE6不會主動預加載鼠標滑過即a:hover中的背景圖片,所以,如果使用多張圖片,鼠標滑過會出現閃白的現象。使用CSS雪碧,由于一張圖片即可,所以不會出現這種現象。
          • 不足:
          • CSS雪碧的最大問題是內存使用
          • 影響瀏覽器的縮放功能
          • 拼圖維護比較麻煩
          • 使CSS的編寫變得困難
          • CSS 雪碧調用的圖片不能被打印
          • 錯誤得使用 Sprites 影響可訪問性

          附錄三 一些tips解決方案


          頁面優化實踐


          • 從下面的幾個方面可以進行頁面的優化:
          • 減少請求數
          • 圖片合并
          • CSS文件合并
          • 減少內聯樣式
          • 避免在 CSS中使用 import
          • 減少文件大小
          • 選擇適合的圖片格式
          • 圖片壓縮
          • CSS 值縮寫(Shorthand Property)
          • 文件壓縮
          • 頁面性能
          • 調整文件加載順序
          • 減少標簽數量
          • 調整選擇器長度
          • 盡量使用CSS 制作顯示表現
          • 增強代碼可讀性與可維護性
          • 規范化
          • 語義化
          • 模塊化

          寫DIV+CSS 的一些常識


          • 不要使用過小的圖片做背景平鋪
          • 這就是為何很多人都不用 1px 的原因,這才知曉。寬高 1px 的圖片平鋪出一個寬高 200px 的區域,需要 200200=40, 000 次,占用資源
          • 無邊框
          • 推薦的寫法是 border:none;,哈哈,我一直在用這個。 border:0; 只是定義邊框寬度為零,但邊框樣式、顏色還是會被瀏覽器解析,占用資源
          • 慎用 通配符
          • 所謂通配符,就是將CSS 中的所有標簽均初始化,不管用的不用的,過時的先進的,一視同仁,這樣,大大的占用資源。要有選擇的初始化標簽。
          • CSS的十六進制顏色代碼縮寫
          • 習慣了縮寫及小寫,這才知道,原來不是推薦的寫法,為的是減少解析所占用的資源。但同時會增加文件體積。孰優孰劣,有待仔細考證。
          • 樣式放頭上,腳本放腳下。不內嵌,只外鏈
          • 堅決不用 CSS表達式
          • 使用 引用樣式表,而不是通過@import 導入。
          • 一般來說,PNG比 GIF 要小,小得多。再者,GIF 中有多少顏色是被浪費的,很值得優化。
          • 千萬不要在 HTML中縮放圖片,一者不好看,二者占資源。
          • 正文字體最好用偶數
          • 12px、14px、16px,效果非常好。特例,15px。
          • block、ul、ol等上下留出至少一倍行距,左側至少兩倍行距,右側隨意。
          • 段落之間,至少要有一倍行距
          • 強行指定某些元素的 line-height,正文 1.6倍于文字大小,標題1.3倍。
          • 中文標點用全角
          • 英文夾雜在中文中,左右空格,半角。
          • 中文字體的粗體和斜體,遠離較好

          常用代碼片段


          • 雅虎工程師提供的CSS初始化示例代碼【僅供參考】
          • 可以在html頭文件中直接引用,從而避免瀏覽器的不兼容帶來的錯誤。
          body,
          div,
          dl,
          dt,
          dd,
          ul,
          ol,
          li,
          h1,
          h2,
          h3,
          h4,
          h5,
          h6,
          pre,
          code,
          form,
          fieldset,
          legend,
          input,
          button,
          textarea,
          p,
          blockquote,
          th,
          td { 
           margin:0; padding:0; 
          }
          body {
           background:#fff; 
           color:#555; 
           font-size:14px; 
           font-family: Verdana, Arial, Helvetica, sans-serif; 
          }
          td,
          th,
          caption { 
           font-size:14px;
          }
          h1, 
          h2, 
          h3, 
          h4, 
          h5, 
          h6 { 
           font-weight:normal; 
           font-size:100%; 
          }
          address, 
          caption,
          cite, 
          code, 
          dfn, 
          em, 
          strong,
          th, 
          var { 
           font-style:normal; 
           font-weight:normal;
          }
          a { 
           color:#555; 
           text-decoration:none; 
          }
          a:hover { 
           text-decoration:underline; 
          }
          img {
           border:none;
          }
          ol,ul,li { 
           list-style:none; 
          }
          input, 
          textarea, 
          select, 
          button { 
           font:14px Verdana,Helvetica,Arial,sans-serif; 
          }
          table { 
           border-collapse:collapse; 
          }
          html {
           overflow-y: scroll;
          } 
          .clearfix:after {
           content: "."; 
           display: block; 
           height:0; 
           clear:both; 
           visibility: hidden;
          }
          .clearfix { 
           *zoom:1; 
          }
          
          • mobile meta標簽
          <meta name=”viewport” content=”width=320,target-densitydpi=dpi_value,initial-scale=1, user-scalable=no”/>
          
          • 表格不被撐開
          table-layout: fixed; word-break: break-all;;border-collapse: collapse
          
          • 不設寬高居中
          <div id=”abc” style=”display:table;text-align:center;width:100%;height:100%;”>
           <span style=”background:#f00; display:table-cell; vertical-align:middle;”>
           <input type=”button” value=”item1″ />
           </span>
          </div>
          
          • 透明度的兼容代碼
          filter:alpha(opacity=50); /*1-100*/
          -moz-opacity:0.5; /*0-1.0*/
          -khtml-opacity:0.5; /*0-1.0*/
          opacity:0.5; /*0-1.0*/
          
          • 文字溢出點點省略
          white-space:nowrap;
          text-overflow:ellipsis;
          overflow:hidden;
          
          • 清除浮動的幾種方法
          • 方法一:投機取巧法 – 不推薦
          • 直接一個放到當作最后一個子標簽放到父標簽那兒,此方法屢試不爽,兼容性強
          • 方法二:overflow + zoom方法 –不推薦
          • .fix{overflow:hidden; zoom:1;}
          • 此方法優點在于代碼簡潔,涵蓋所有瀏覽器
          • 方法三:after + zoom方法 -推薦–此方法可以說是綜合起來最好的方法了
          • clearfix只應用在包含浮動子元素的父級元素上
          .fix{zoom:1;}
          .fix:after{
           display:block; 
           content:'clear'; 
           clear:both;
           line-height:0; 
           visibility:hidden;
          }
          
          • 更多代碼片段詳情
          • 實用的60個CSS代碼片段

          一些總結


          • 自動繼承屬性:
          • color
          • font
          • text-align
          • list-style
          • 非繼承屬性:
          • background
          • border
          • position
          • 具有破壞性的元素:
          • float
          • display:none;
          • position:absoblute/fixed/sticky;
          • 具有包裹性的元素:
          • display:inline-block/table-cell
          • position:absolute/fixed/sticky
          • overflow:hidden/scroll
          • 消除圖片底部間隙的方法
          • 圖片塊狀化-無基線對齊
          • img{display:block;}
          • 圖片底線對齊
          • img{vertical-align:bottom;}
          • 行高足夠小 - 基線位置上移
          • .box{line-height:0;}

          一些概念


          • BFC
          • BFC全稱”Block Formatting Context” 中文為“塊級格式化上下文”
          • 記住這么一句話:BFC元素特性表現原則就是,內部子元素再怎么翻江倒海,翻云覆雨都不會影響外部的元素
          • BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此
          • 優雅降級(graceful degradation)
          • 一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容
          • 漸進增強 progressive enhancement:
          • 是在瀏覽器開啟JavaScript功能后,如果瀏覽器版本不支持某些 JavaScript 能力,我們解決這種問題的方式
          • 平穩退化
          • 是在瀏覽器沒有JavaScript功能,或沒有開啟JavaScript功能情況下,我們解決這種問題的方式;

          學習從來不是一個人的事情,要有個相互監督的伙伴,想要學習或交流前端問題的小伙伴可以私信“學習”小明加群獲取2019web前端最新入門資料,一起學習,一起成長!

          CSS 是什么?

          CSS是Cascading Style Sheets的簡稱,中文稱為層疊樣式表。

          屬性和屬性值用冒號隔開,以分號結尾。

          CSS 四種引入方式:

          1.行內式

          行內式是在標簽的style屬性中設定CSS樣式。

          <div style="..."></div>

          2.嵌入式

          嵌入式是將CSS樣式集中寫在網頁的<head>標簽的<style></style>標簽對中。

          <head>
          
              ...
          
              <style type="text/css">
          
                  ...此處寫CSS樣式
          
              </style>
          
          </head>

          3.導入式
          將一個獨立的.css文件引入HTML文件中,導入式使用@import 引入外部CSS文件,<style>標記也是寫在<head>標記中。

          導入式會在整個網頁裝載完后再裝載CSS文件。

          <head>
          
              ...
          
              <style type="text/css">
          
                  @import "My.css"; 此處注意.css文件的路徑
          
              </style>
          
          </head>

          4.鏈接式
          將一個獨立的.css文件引入到HTML文件中,使用<link>標記寫在<head>標記中。

          鏈接式會以網頁文件主體裝載前裝載CSS文件。

          <head>
          
              ...
          
              <link href="My.css" rel="stylesheet" type="text/css">
          
          </head>
          
          

          樣式應用順序:

          • 行內樣式優先級最高
          • 針對相同的樣式屬性,不同的樣式屬性將以合并的方式呈現
          • 相同樣式并且相同屬性,呈現方式在<head>中的順序決定,后面會覆蓋前面屬性
          • !important 指定樣式規則應用最優先
          .nick {
              color: yellow !important;
          }

          選擇器(Selector)

          基本選擇器:

          1.通用元素選擇器

          * 表示應用到所有的標簽。

          * {color: yellow}

          2.標簽選擇器

          匹配所有使用 div 標簽的元素(可以匹配所有標簽)

          div {color: yellow}

          3.類選擇器

          匹配所有class屬性中包含info的元素。

          語法:.類名{樣式}(類名不能以數字開頭,類名要區分大小寫。)

          .Mycolor {color: yellow}
          <h3 class="Mycolor">nick</h3>

          4.ID選擇器

          使用id屬性來調用樣式,在一個網頁中id的值都是唯一的(是W3C規范而不是規則,所以不會報錯)。

          語法:#ID名{樣式}(ID名不能以數字開頭)

          #Mycolor {color: yellow}
          <h3 id="Mycolor">Nick.</h3>

          組合選擇器:

          1.多元素選擇器

          同時匹配h3,h4標簽,之間用逗號分隔。

          h3,h4 {color: yellow;}
          <h3>Nick</h3>
          <h4>Jenny</h4>
          

          2.后代元素選擇器

          匹配所有div標簽里嵌套的P標簽,之間用空格分隔。

              div p {color: yellow;}
          <div>
              <p>Nick</p>
              <div>
                  <p>Nick</p>
              </div>
          </div>

          3.子元素選擇器

          匹配所有div標簽里嵌套的子P標簽,之間用>分隔。

              div > p {color: yellow;}
          <div>
              <p>Nick</p>
              <p>Nick</p>
          </div>

          4.毗鄰元素選擇器

          匹配所有緊隨div標簽之后的同級標簽P,之間用+分隔(只能匹配一個)。

              div + p {color: yellow;}
          <div>Nick</div>
          <p>Nick</p>

          屬性選擇器:

          1.[title] & P[title]

          設置所有具有title屬性的標簽元素;

          設置所有具有title屬性的P標簽元素。

              [title]
              {
                  color: yellow;
              }
              p[title]
              {
                  color: yellow;
              }
           
          <div title>Nick</div>
          <p title>Nick</p>

          2.[title=Nick]

          設置所有title屬性等于“Nick”的標簽元素。

              [title="Nick"]
              {
                  color: yellow;
              }
          <p title="Nick">Nick</p>

          3.[title~=Nick]

          設置所有title屬性具有多個空格分隔的值、其中一個值等于“Nick”的標簽元素。

              [title~="Nick"]
              {
                  color: yellow;
              }
          <p title="Nick Jenny">Nick</p>
          <p title="Jenny Nick">Nick</p>

          4.[title|=Nick]

          設置所有title屬性具有多個連字號分隔(hyphen-separated)的值、其中一個值以"Nick"開頭的標簽元素。

          例:lang屬性:"en"、"en-us"、"en-gb"等等

              [title|="Nick"]
              {
                  color: yellow;
              }
           <p title="Nick-Jenny">Nick</p>
          

          5.[title^=Nick]

          設置屬性值以指定值開頭的每個標簽元素。

              [title^="Nick"]
              {
                  color: yellow;
              }
          <p title="NickJenny">Nick</p>

          6.[title$=Nick]

          設置屬性值以指定值結尾的每個標簽元素。

              [title$="Nick"]
              {
                  color: yellow;
              }
          <p title="JennyNick">Nick</p>

          7.[title*=Nick]

          設置屬性值中包含指定值的每個元素

          [title*="Nick"]
              {
                  color: yellow;
              }
           
          <p title="SNickJenny">Nick</p>

          偽類選擇器:

          1. link、hover、active、visited

          • a:link(未訪問的鏈接狀態),用于定義了常規的鏈接狀態。
          • a:hover(鼠標放在鏈接上的狀態),用于產生視覺效果。
          • a:active(在鏈接上按下鼠標時的狀態)。
          • a:visited(已訪問過的鏈接狀態),可以看出已經訪問過的鏈接。
              a:link{color: black}
              a:hover{color: yellow}
              a:active{color: blue}
              a:visited{color: red} 
          <a href="#">Nick</a>

          2. before、after

          • P:before 在每個<p>元素的內容之前插入內容;
          • P:after 在每個<p>元素的內容之后插入內容。
              p {
                  color: yellow;
              }
              p:before{
                  content: "before...";
              }
              p:after{
                  content: "after...";
              }
           <p> Nick </p>  

          常用屬性

          1. 顏色屬性:

          color

          • HEX(十六進制色:color: #FFFF00 --> 縮寫:#FF0)
          • RGB(紅綠藍,使用方式:color:rgb(255,255,0)或者color:rgb(100%,100%,0%))
          • RGBA(紅綠藍透明度,A是透明度在0~1之間取值。使用方式:color:rgba(255,255,0,0.5))
          • HSL(CSS3有效,H表示色調,S表示飽和度,L表示亮度,使用方式:color:hsl(360,100%,50%))
          • HSLA(和HSL相似,A表示Alpha透明度,取值0~1之間。)

          transparent

          • 全透明,使用方式:color: transparent;

          opacity

          • 元素的透明度,語法:opacity: 0.5;
          • 屬性值在0.0到1.0范圍內,0表示透明,1表示不透明。
          • filter濾鏡屬性(只適用于早期的IE瀏覽器,語法:filter:alpha(opacity:20);)。

          2. 字體屬性:

          font-style: 用于規定斜體文本

          • normal 文本正常顯示
          • italic 文本斜體顯示
          • oblique 文本傾斜顯示

          font-weight: 設置文本的粗細

          • normal(默認)
          • bold(加粗)
          • bolder(相當于<strong>和<b>標簽)
          • lighter (常規)
          • 100 ~ 900 整百(400=normal,700=bold)

          font-size: 設置字體的大小

          • 默認值:medium
          • <absolute-size>可選參數值:xx-small、 x-small、 small、 medium、 large、 x-large、 xx-large
          • <relative-size>相對于父標簽中字體的尺寸進行調節。可選參數值:smaller、 larger
          • <percentage>百分比指定文字大小。
          • <length>用長度值指定文字大小,不允許負值。

          font-family:字體名稱

          • 使用逗號隔開多種字體(優先級從前向后,如果系統中沒有找到當前字體,則往后面尋找)

          font:簡寫屬性

          • 語法:font:字體大小/行高 字體;(字體要在最后)

          3. 文本屬性:

          white-space: 設置元素中空白的處理方式

          • normal:默認處理方式。
          • pre:保留空格,當文字超出邊界時不換行
          • nowrap:不保留空格,強制在同一行內顯示所有文本,直到文本結束或者碰到br標簽
          • pre-wrap:保留空格,當文字碰到邊界時換行
          • pre-line:不保留空格,保留文字的換行,當文字碰到邊界時換行

          direction: 規定文本的方向

          • ltr 默認,文本方向從左到右。
          • rtl 文本方向從右到左。

          text-align: 文本的水平對齊方式

          • left
          • center
          • right

          line-height: 文本行高

          • normal 默認

          vertical-align: 文本所在行高的垂直對齊方式

          • baseline 默認
          • sub 垂直對齊文本的下標,和<sub>標簽一樣的效果
          • super 垂直對齊文本的上標,和<sup>標簽一樣的效果
          • top 對象的頂端與所在容器的頂端對齊
          • text-top 對象的頂端與所在行文字頂端對齊
          • middle 元素對象基于基線垂直對齊
          • bottom 對象的底端與所在行的文字底部對齊
          • text-bottom 對象的底端與所在行文字的底端對齊

          text-indent: 文本縮進

          letter-spacing: 添加字母之間的空白

          word-spacing: 添加每個單詞之間的空白

          text-transform: 屬性控制文本的大小寫

          • capitalize 文本中的每個單詞以大寫字母開頭。
          • uppercase 定義僅有大寫字母。
          • lowercase 定義僅有小寫字母。

          text-overflow: 文本溢出樣式

          • clip 修剪文本。
          • ellipsis 顯示省略符號...來代表被修剪的文本。
          • string 使用給定的字符串來代表被修剪的文本。
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <!--<link href="cc2.css" rel="stylesheet" type="text/css">-->
              <style>
                  div {
                      width: 100px;
                      height: 100px;
                      white-space: nowrap;
                      overflow: hidden;
                      text-overflow: ellipsis;
                  }
              </style>
          </head>
          <body>
              <div>索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧 索寧</div>
          </body>
          </html>

          text-decoration: 文本的裝飾

          • none 默認。
          • underline 下劃線。
          • overline 上劃線。
          • line-through 中線。

          text-shadow:文本陰影

          • 第一個參數是左右位置
          • 第二個參數是上下位置
          • 第三個參數是虛化效果
          • 第四個參數是顏色
          • text-shadow: 5px 5px 5px #888;

          word-wrap:自動換行

          • word-wrap: break-word;
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  p {
                      width: 150px;
                      height: 160px;
                      background-color: #FFA500;
                      /*邊框陰影*/
                      box-shadow: 10px 10px 5px #888;
                      /*自動換行*/
                      word-wrap: break-word;
                  }
                  h1 {
                      text-shadow: 5px 5px 5px #888;
                  }
              </style>
          </head>
          <body>
              <p>
                  When you are old and grey and full of sleep,And nodding by the fire, take down this book,And slowly read, and dream of the soft look
              </p>
              <h1>索寧</h1>
          </body>
          </html>    

          a {
              text-decoration: none;
              /*去除a標簽下劃線*/
          }

          4. 背景屬性

          background-color: 背景顏色

          background-image 設置圖像為背景

          • url("http://images.cnblogs.com/cnblogs_com/suoning/845162/o_ns.png"); 圖片地址
          • background-image:linear-gradient(green,blue,yellow,red,black); 顏色漸變效果

          background-position 設置背景圖像的位置坐標

          • background-position: center center; 圖片置中,x軸center,y軸center
          • 1px -195px 截取圖片某部分,分別代表坐標x,y軸

          background-repeat 設置背景圖像不重復平鋪

          • no-repeat 設置圖像不重復,常用
          • round 自動縮放直到適應并填充滿整個容器
          • space 以相同的間距平鋪且填充滿整個容器

          background-attachment 背景圖像是否固定或者隨著頁面的其余部分滾動

          background 簡寫

          • background: url("o_ns.png") no-repeat 0 -196px;
          • background: url("o_ns.png") no-repeat center bottom 15px;
          • background: url("o_ns.png") no-repeat left 30px bottom 15px;

          5. 列表屬性

          list-style-type: 列表項標志的類型

          • none 去除標志
          • decimal-leading-zero; 02.
          • square; 方框
          • circle; 空心圓
          • upper-alph; & disc; 實心圓

          list-style-image:將圖象設置為列表項標志

          list-style-position:列表項標志的位置

          • inside
          • outside

          list-style:縮寫

          頁面布局

          1. 邊框

          border-style:邊框樣式

          • solid 默認,實線
          • double 雙線
          • dotted 點狀線條
          • dashed 虛線

          border-color:邊框顏色

          border-width:邊框寬度

          border-radius:圓角

          • 1個參數:四個角度應用
          • 2個參數:第一個參數應用于 左上、右下;第二個參數應用于 左下、右上
          • 3個參數:第一個參數應用于 左上;第二個參數應用于 左下、右上;第三個參數應用于右下
          • 4個參數:左上、右上、右下、左下(順時針)

          border: 簡寫

          • border: 2px yellow solid;

          box-shadow:邊框陰影

          • 第一個參數是左右位置
          • 第二個參數是上下位置
          • 第三個參數是虛化效果
          • 第四個參數是顏色
          • box-shadow: 10px 10px 5px #888;
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  div {
                      border:2px solid;
                      border-radius:25px;
                      width: 140px;
                  }
              </style>
          </head>
          <body>
              <div>
                   點贊哦!dear. 
              </div>
          </body>
          </html>

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  .radius1 {
                      display: inline-block;
                      width: 100px;
                      height: 100px;
                      background-color: yellow;
                      border-radius: 20px;
                  }
                  .radius2 {
                      display: inline-block;
                      width: 100px;
                      height: 100px;
                      background-color: red;
                      border-radius: 20px 35px;
                  }
                  .radius3 {
                      display: inline-block;
                      width: 100px;
                      height: 100px;
                      background-color: blue;
                      border-radius: 20px 35px 50px;
                  }
                  .radius4 {
                      display: inline-block;
                      width: 100px;
                      height: 100px;
                      background-color: green;
                      border-radius: 20px 35px 50px 60px;
                  }
              </style>
          </head>
          <body>
              <div>
                  <span class="radius1"></span>
                  <span class="radius2"></span>
                  <span class="radius3"></span>
                  <span class="radius4"></span>
              </div>
          </body>
          </html>

          邊框實現各種三角符號:

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  .triangle-one {
                      display: inline-block;
                      border-top: 50px red solid;
                      border-right: 50px green solid;
                      border-bottom: 50px yellow solid;
                      border-left: 50px blue solid;
                  }
                  .triangle-two {
                      display: inline-block;
                      border-top: 0 red solid;
                      border-right: 50px green solid;
                      border-bottom: 50px yellow solid;
                      border-left: 50px blue solid;
                  }
                  .triangle-stree {
                      display: inline-block;
                      border-top: 50px red solid;
                      border-right: 0 green solid;
                      border-bottom: 50px yellow solid;
                      border-left: 50px blue solid;
                  }
                  .triangle-four {
                      display: inline-block;
                      border-top: 50px red solid;
                      border-right: 0 green solid;
                      border-bottom: 0 yellow solid;
                      border-left: 50px blue solid;
                  }
           
                  .triangle-five {
                      display: inline-block;
                      border: 50px transparent solid;
                      border-top: 50px red solid;
                  }
                  .triangle-six {
                      display: inline-block;
                      border: 50px transparent solid;
                      border-bottom: 50px yellow solid;
                  }
                  .triangle-seven {
                      display: inline-block;
                      border: 50px transparent solid;
                      border-top: 60px red solid;
                      border-right: 0;
                  }
                  .triangle-eight {
                      display: inline-block;
                      border: 50px transparent solid;
                      border-left: 30px yellow solid;
                      border-bottom: 0;
                  }
              </style>
          </head>
          <body>
              <div class="triangle-one"></div>
              <div class="triangle-two"></div>
              <div class="triangle-stree"></div>
              <div class="triangle-four"></div>
              <div class="triangle-five"></div>
              <div class="triangle-six"></div>
              <div class="triangle-seven"></div>
              <div class="triangle-eight"></div>
          </body>
          </html>

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  .back {
                      width: 1000px;
                      height: 1000px;
                      margin: 0 auto;
                      background-color: #ddd;
                      position: relative;
                  }
                  .back-in {
                      position: absolute;
                      width: 1020px;
                      height: 45px;
                      left: -20px;
                      top: 50px;
                      background-color: #2F4F4F;
                  }
                  .back-img {
                      border: 20px solid transparent;
                      border-top: 10px solid dimgrey;
                      border-right: 0;
                      display: inline-block;
                      position: absolute;
                      top: 95px;
                      left: -20px;
                  }
                  .back-font {
                      line-height: 9px;
                      margin-left: 30px;
                      color: white;
                  }
              </style>
          </head>
          <body>
              <div class="back">
                  <div class="back-in"><h3 class="back-font">妹子求關注 ^.^</h3></div>
                  <div class="back-img"></div>
              </div>
          </body>
          </html>

          2.★ 盒子模型

          一個標準的盒子模型:

          padding:用于控制內容與邊框之間的距離;

          margin: 用于控制元素與元素之間的距離;

          一個參數,應用于四邊。

            兩個參數,第一個用于上、下,第二個用于左、右。

            三個參數,第一個用于上,第二個用于左、右,第三個用于下。

          邊框在默認情況下會定位于瀏覽器窗口的左上角,但是并沒有緊貼著瀏覽器的窗口的邊框,這是因為body本身也是一個盒子,外層還有html,
          在默認情況下,body距離html會有若干像素的margin,所以body中的盒子不會緊貼瀏覽器窗口的邊框了。
          
          解決方法:
          body {
              margin: 0;
          }

          3.★ display

          • none 不顯示。
          • block 顯示為塊級元素。
          • inline 顯示為內聯元素。
          • inline-block 行內塊元素(會保持塊元素的高寬)。
          • list-item 顯示為列表元素。

          4. visibility

          • visible 元素可見
          • hidden 元素不可見
          • collapse 當在表格元素中使用時,此值可刪除一行或一列,不會影響表格的布局。

          5.★ float 浮動

          讓一行顯示兩個塊級標簽,會脫離文檔流

          • none
          • left 左浮動
          • right 右浮動

          clear 清除浮動:

          • none : 默認值。允許兩邊都可以有浮動對象
          • left : 不允許左邊有浮動對象
          • right : 不允許右邊有浮動對象
          • both : 不允許兩邊有浮動對象

          6. clip 剪裁圖像

          rect 剪裁定位元素:

          • auto 默認值,無剪切
          • 上-右-下-左(順時針)的順序提供四個偏移值
          • 區域外的部分是透明的
          • 必須指定 position:absolute;
          • 例:clip:rect(0px,60px,200px,0px);

          7. overflow 設置當對象的內容超過其指定高度及寬度時如何顯示內容

          • visible 默認值,內容不會被修剪,會呈現在元素框之外。
          • hidden 內容會被修剪,并且其余內容是不可見的。
          • scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便查看其余的內容。
          • auto 如果內容被修剪,則瀏覽器會顯示滾動條以便查看其余的內容。

          8.★ position 規定元素的定位類型

          • 通過以下四種屬性進行定位:
          • left
          • top
          • right
          • bottom
          • z-index

          9. z-index 元素層疊順序

          • z-index 僅在定位元素上有效(例:position:absolute;)
          • 可以指定負數屬性值(例:-1;)
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  .z-index1 {
                      width: 100px;
                      height: 100px;
                      background-color: yellow;
                      position: absolute;
                      z-index: -1;
                  }
                  .z-index2 {
                      width: 100px;
                      height: 100px;
                      background-color: red;
                      position: absolute;
                      top: 20px;
                      left: 20px;
                      z-index: 5;
                  }
              </style>
          </head>
          <body>
              <div class="z-index1"></div>
              <div class="z-index2"></div>
          </body>
          </html>

          10. outline 邊框輪廓

          • outline-width 輪廓寬度
          • outline-color 輪廓顏色
          • outline-style 輪廓樣式

          11. zoom 縮放比例

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <style>
                  .zoom1 {
                      zoom: 100%;
                  }
                  .zoom2 {
                      zoom: 150%;
                  }
                  .zoom3 {
                      zoom: 200%;
                  }
              </style>
          </head>
          <body>
              <div class="zoom1">Nick 100%</div>
              <div class="zoom2">Nick 200%</div>
              <div class="zoom3">Nick 300%</div>
          </body>
          </html>

          12. cursor 鼠標的類型形狀

          鼠標放在以下單詞上,There will be a miracle:

          url: 自定義光標

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
              <!--<link href="cc2.css" rel="stylesheet" type="text/css">-->
              <style>
                  body {
                      cursor: url("mouse.png"), auto;
                      /*圖片地址:http://images.cnblogs.com/cnblogs_com/suoning/845162/o_mouse.png*/
                  }
              </style>
          </head>
          <body>
              <div><img src="http://images.cnblogs.com/cnblogs_com/suoning/845162/o_ns.png" height="100%" width="100%"></div>
          </body>
          </html>

          Auto: 默認
          Default: 默認
          e-resize
          ne-resize
          nw-resize
          n-resize
          se-resize
          sw-resize
          s-resize
          w-resize
          Crosshair
          Pointer
          Move
          text
          wait
          help

          not-allowed

          13. transform、transition 動畫效果

          transform 轉換,變形

          • origin 定義旋轉基點(left top center right bottom 坐標值) transform-origin: 50px 50px; transform-origin: left;。
          • rotate 旋轉 transform:rotate(50deg) 旋轉角度可以為負數,需要先定義origin。
          • skew 扭曲 transform:skew(50deg,50deg) 分別為相對x軸傾斜,相對y軸傾斜。
          • scale 縮放 transform:scale(2,3) 橫向放大2倍,縱向放大3倍;transform:scale(2) 橫豎都放大2倍。
          • translate 移動 transform:translate(50px, 50px) 分別為相對x軸移動,相對y軸移動。
          <!DOCTYPE html>
          <html>
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>nick</title>
              <meta charset="utf-8" />
              <style type="text/css">
                  div {
                      border: 1px solid black;
                      height: 30px;
                      width: 30px;
                      background-color: yellow;
           
                      /*transform-origin: 50px 50px;*/
                      transform-origin: left;
                      transform: rotate(50deg);
                      /*transform: skew(50deg,50deg);*/
                      /*transform: translate(50px,50px);*/
                      /*transform: scale(2);*/
                  }
              </style>
          </head>
          <body>
              <div></div>
          </body>
          </html>


          Transition 平滑過渡

          • transition-property: 變換的屬性(none(沒有屬性改變)、all(所有屬性改變)、具體屬性)
          • transition-duration: 變換持續時間
          • transition-timing-function: 變換的速率(ease:(逐漸變慢)、linear:(勻速)、ease-in:(加速)、ease-out:(減速)、ease-in-out:(加速然后減速)、cubic-bezier:(自定義時間曲線))
          • transition-delay: 變換延遲時間
          • transition: 縮寫
          #property 指定屬性對應類型
          
          1、color: 通過紅、綠、藍和透明度組件變換(每個數值單獨處理),如:background-color,border-color,color,outline-color等CSS屬性;
          
          2、length:真實的數字,如:word-spacing,width,vertical- align,top,right,bottom,left,padding,outline-width,margin,min-width,min- height,max-width,max-height,line-height,height,border-width,border- spacing,background-position等屬性;
          
          3、percentage:真實的數字,如:word-spacing,width,vertical- align,top,right,bottom,left,min-width,min- height,max-width,max-height,line-height,height,background-position等屬性;
          
          4、integer 離散步驟(整個數字),在真實的數字空間,以及使用floor()轉換為整數時發生,如:outline-offset,z-index等屬性;
          
          5、number真實的(浮點型)數值,如:zoom,opacity,font-weight等屬性;
          
          6、transform list。
          
          7、rectangle:通過x、 y、 width和height(轉為數值)變換,如:crop;
          
          8、visibility:離散步驟,在0到1數字范圍之內,0表示“隱藏”,1表示完全“顯示”,如:visibility;
          
          9、shadow:作用于color、x、y、和blur(模糊)屬性,如:text-shadow;
          
          10、gradient:通過每次停止時的位置和顏色進行變化。它們必須有相同的類型(放射狀的或是線性的)和相同的停止數值以便執行動畫,如:background-image;
          
          11、paint server (SVG):只支持下面的情況:從gradient到gradient以及color到color,然后工作與上面類似;
          
          12、space-separated list of above:如果列表有相同的項目數值,則列表每一項按照上面的規則進行變化,否則無變化;
          
          13、a shorthand property:如果縮寫的所有部分都可以實現動畫,則會像所有單個屬性變化一樣變化。
          #支持執行transition效果的屬性
          
          Property Name    Type
          background-color    as color
          background-position    as repeatable list of simple list of length, percentage, or calc
          border-bottom-color    as color
          border-bottom-width    as length
          border-left-color    as color
          border-left-width    as length
          border-right-color    as color
          border-right-width    as length
          border-spacing    as simple list of length
          border-top-color    as color
          border-top-width    as length
          bottom    as length, percentage, or calc
          clip    as rectangle
          color    as color
          font-size    as length
          font-weight    as font weight
          height    as length, percentage, or calc
          left    as length, percentage, or calc
          letter-spacing    as length
          line-height    as either number or length
          margin-bottom    as length
          margin-left    as length
          margin-right    as length
          margin-top    as length
          max-height    as length, percentage, or calc
          max-width    as length, percentage, or calc
          min-height    as length, percentage, or calc
          min-width    as length, percentage, or calc
          opacity    as number
          outline-color    as color
          outline-width    as length
          padding-bottom    as length
          padding-left    as length
          padding-right    as length
          padding-top    as length
          right    as length, percentage, or calc
          text-indent    as length, percentage, or calc
          text-shadow    as shadow list
          top    as length, percentage, or calc
          vertical-align    as length
          visibility    as visibility
          width    as length, percentage, or calc
          word-spacing    as length
          z-index    as integer


          鼠標放在以下圖片上,There will be a miracle:

          <!DOCTYPE html>
          <html>
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>nick</title>
              <meta charset="utf-8" />
              <style type="text/css">
                  .img-see-2016-7-2 {
                      background-image: url("http://images.cnblogs.com/cnblogs_com/suoning/845162/o_sea.jpg");
                      background-size: 660px;
                      background-repeat: no-repeat;
                      height: 300px;
                      width: 600px;
          
                      transition-duration: 30s;
                      transition-timing-function: ease;
                      transition-property: background-size;
                  }
                  .img-see-2016-7-2:hover {
                      background-size: 2000px;
                  }
              </style>
          </head>
          <body>
              <div class="img-see-2016-7-2"></div>
          </body>
          </html>

          作者:suoning

          原文鏈接:https://www.cnblogs.com/suoning/p/5625582.html


          主站蜘蛛池模板: 麻豆一区二区免费播放网站| 久久精品亚洲一区二区三区浴池 | 九九无码人妻一区二区三区| 精品一区二区三区视频在线观看| 秋霞鲁丝片一区二区三区| 一区二区三区免费视频播放器| 国产一区视频在线| 午夜视频一区二区| 在线精品亚洲一区二区| 色精品一区二区三区| 精品欧美一区二区在线观看 | 日韩AV无码一区二区三区不卡毛片| 亚洲AV色香蕉一区二区| 久久se精品一区二区影院| 亚洲一区二区三区无码国产| 精品少妇一区二区三区视频| 波多野结衣一区在线观看| 无码人妻一区二区三区免费手机 | 国产成人久久精品区一区二区 | 色婷婷综合久久久久中文一区二区| 精品国产一区二区三区www| 欧美日本精品一区二区三区| 午夜视频一区二区| 中文字幕精品一区二区精品| 免费日本一区二区| 中文字幕日韩精品一区二区三区 | 国产精品无码一区二区三区在| 精品一区二区三区免费毛片| 中文字幕在线视频一区| 久久久久人妻精品一区蜜桃 | 精品少妇人妻AV一区二区 | 天海翼一区二区三区高清视频| 久久精品日韩一区国产二区| 国产SUV精品一区二区88L| 亚洲视频一区二区| 精品无码一区二区三区爱欲九九| 日韩精品午夜视频一区二区三区| 国产一区二区电影| 精品一区二区三区中文| 亚洲AV日韩综合一区尤物| 超清无码一区二区三区|