内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

用SVG制作酷炫動態(tài)圖標(biāo)的方法-創(chuàng)新互聯(lián)

用SVG制作酷炫動態(tài)圖標(biāo)的方法?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、濱城網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為濱城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、基本圖形元素

svg有一些預(yù)定義的形狀元素:矩形<rect>,圓形<circle>,橢圓<ellipse>,直線<line>,折線<polyline>,多邊形<polygon>,路徑<path>和文本<text>。

<!-- viewBox定義畫布大小 width/height定義實際大小 -->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300" viewBox="0 0 300 300">

    <!-- 直線 (x1,y1)與(x2,y2)為兩點坐標(biāo) -->
    <line x1="0" y1="0" x2="250" y2="30" />

    <!-- 多邊形 通過多個點的坐標(biāo)形成封閉圖形 -->
    <polygon points="5,5 100,100 50,200" />

    <!-- 矩形 (x,y)為左上角起始點 -->
    <rect x="100" y="100" width="120" height="100" />

    <!-- 圓形 (cx,cy)圓心點 r半徑 -->
    <circle cx="100" cy="50" r="40" stroke="black"/>

    <!-- 文本 (x,y)左下角坐標(biāo)  -->
    <text x="0" y="20" style="font-size:16px;font-weight: bold">Try SVG</text>

</svg>

二、樣式與效果

svg元素的樣式可以寫成標(biāo)簽的屬性,也可以寫在style里面。下面是一些主要的樣式屬性:

stroke: 筆觸顏色
   stroke-width:筆觸寬度
   stroke-opacity:筆觸的透明度
   fill:填充色,即background
   fill-opacity:填充色的透明度
   transform:圖形變換,類似css3 transform

svg還支持很多濾鏡效果,能做漸變、陰影、模糊、圖像混合等等。不需要了解那么多,例如要畫幾個彩色圓圈,用circle 配合fill 即可。

注意:transform 默認以svg左上角為基點,而不是圓心或其他中心。左上角是svg坐標(biāo)系原點。了解transform和坐標(biāo)系統(tǒng),可以參考 這里。

三、輔助元素

svg有幾個輔助元素:<g> <defs> <symbol> <use>。它們不代表具體形狀,而是幫助進行圖形元素的分組管理、重復(fù)使用等。具體介紹可以參考 這里。

<g>  元素通常用來對相關(guān)圖形元素進行分組,以便統(tǒng)一操作,比如旋轉(zhuǎn),縮放或者添加相關(guān)樣式等。
   <use>  實現(xiàn)SVG現(xiàn)有圖形的重用,可以重用單個SVG圖形元素,也可以重用<g><defs>定義的組元素。
   <defs>  內(nèi)部定義的元素不會直接顯示,可以不用事先定義樣式,而是在使用<use>實例化的時候再定義。
   <symbol>  能夠創(chuàng)建自己的視窗,兼具<g>的分組功能和<defs>初始不可見的特性。

對于上面提到的transform基點問題,可以通過嵌套<g>標(biāo)簽并偏移<g>的位置,進而重設(shè)基點。如下畫出幾個水平排列的圓圈,并設(shè)置不同的縮放尺寸

<svg width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
    <g transform="translate(20 50)">
        <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)" />
    </g>
    <g transform="translate(40 50)">
        <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)" />
    </g>
    <g transform="translate(60 50)">
        <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)" />
    </g>
    <g transform="translate(80 50)">
        <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)" />
    </g>
</svg>

四、動畫的實現(xiàn)

svg的動畫效果是基于動畫標(biāo)簽元素實現(xiàn)的:

<animate>實現(xiàn)單屬性的過渡效果;
    <animateTransform>實現(xiàn)transform變換動畫效果;
    <animateMotion>實現(xiàn)路徑動畫效果。

svg的寫法很靈活,樣式可以寫成標(biāo)簽屬性也可以寫在style里面,動畫標(biāo)簽可以通過xlink指定元素,也可以寫在動畫元素的內(nèi)部。如下演示animateTransform的xlink寫法:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect id="animateObject" x="20" y="20" width="50" height="50" fill="blue"></rect>
    <animateTransform
        xlink:href="#animateObject" <!-- 指定動畫元素 -->
        attributeName="transform"  <!-- 需要動畫的屬性名稱 -->
        type="scale"  <!-- 指定transform屬性 -->
        begin="0s"    <!-- 開始時間,即延遲 -->
        dur="3s"      <!-- 動畫時間 -->
        from="1"      <!-- 開始值 -->
        to="2"        <!-- 結(jié)束值 -->
        repeatCount="indefinite"   <!-- 重復(fù)方式,indefinite無限重復(fù)  -->
    />
</svg>

上例的動畫是A到B的過渡,要形成順暢的循環(huán),至少要定義三個關(guān)鍵點。animateTransform支持更多更靈活的屬性設(shè)置:

values:多個關(guān)鍵點的值,替代from和to,例如 values="0;1;0"

keyTimes:跟values對應(yīng),各個點的時間點

calcMode:動畫快慢方式。discrete | linear | paced | spline

keySplines:設(shè)置運動的貝塞爾控制點,calcMode為spline時有效

五、代碼實例

circle畫圓,fill著色,用g標(biāo)簽包裹并定位,transform設(shè)置初始形變,animateTransform設(shè)置動畫?,F(xiàn)在來看代碼,相信不會再是一頭霧水了:

<svg class="lds-message" width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
    <g transform="translate(20 50)">
        <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)">
            <animateTransform attributeName="transform" type="scale" begin="-0.375s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
        </circle>
    </g>
    <g transform="translate(40 50)">
        <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)">
            <animateTransform attributeName="transform" type="scale" begin="-0.25s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
        </circle>
    </g>
    <g transform="translate(60 50)">
        <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)">
            <animateTransform attributeName="transform" type="scale" begin="-0.125s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
        </circle>
    </g>
    <g transform="translate(80 50)">
        <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)">
            <animateTransform attributeName="transform" type="scale" begin="0s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
        </circle>
    </g>
</svg>

效果圖:

用SVG制作酷炫動態(tài)圖標(biāo)的方法

也可以用js控制svg的屬性,控制svg的動畫過程,做成能響應(yīng)點擊等事件的圖標(biāo)按鈕。

感謝各位的閱讀!看完上述內(nèi)容,你們對用SVG制作酷炫動態(tài)圖標(biāo)的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道。

標(biāo)題名稱:用SVG制作酷炫動態(tài)圖標(biāo)的方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article8/dosoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、用戶體驗網(wǎng)站內(nèi)鏈、外貿(mào)建站企業(yè)建站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
长顺县| 巴彦县| 宣汉县| 延寿县| 巴彦淖尔市| 潮安县| 合水县| 都匀市| 宜兴市| 格尔木市| 萝北县| 波密县| 获嘉县| 治多县| 怀远县| 黎川县| 灌南县| 丹巴县| 黔西县| 新丰县| 清涧县| 垦利县| 松溪县| 会理县| 阳城县| 永定县| 皮山县| 营山县| 武平县| 贵港市| 乐山市| 麦盖提县| 宾川县| 隆林| 侯马市| 长白| 呈贡县| 庄浪县| 曲麻莱县| 夹江县| 巴中市|