TP Notes
全部
CSS
SVG
資源收集
HTML
其它
關於我
2020年6月26日 星期五
即時操作 css
雖然可以用新的 css 取代舊的,這裡還是研究一下即時操作現有 css 的方式 document.styleSheets 可以取得目前網頁中所有的 css 資料, 回傳的陣列就是一個 `` 的區域 ``` document.styleSheets[n].cssRules ``` 就是該區域中的每一個設定的陣列, ``` document.styleSheets[n].cssRules[m].cssText ``` 就是這個 css 完整字串, 只是這個字串是唯讀的, 必須用 ``` document.styleSheets[n].deleteRule(m) ``` 來刪除這整個設定
**(什麼爛設計)**
, 以及用 ``` document.styleSheets[n].insertRule("css字串",索引) ``` 來新增, 索引預設是 0 ,也就是新增後會在最前面,如果沒有把本來的刪掉,新增的效果不會顯示, 然後索引也不能比本來的 Rules 多很多,只能剛好接在後面 然後比較特別的是動畫的 keyframes 如果下面這個是 keyframes ``` document.styleSheets[n].cssRules[k] ``` 那麼 ``` document.styleSheets[n].cssRules[k].name //這個 keyframes 的名稱 document.styleSheets[n].cssRules[k].cssRules[kn] //這個 keyframes 裡頭的每個 n% 的設定 document.styleSheets[n].cssRules[k].cssRules[kn].keyText //就是 % 的名稱 document.styleSheets[n].cssRules[k].cssRules[kn].cssText //完整的 css 內容 ``` 可以用 ``` document.styleSheets[n].cssRules[k].findRule("100%") //搜尋 document.styleSheets[n].cssRules[k].deleteRule("100%") //刪除 document.styleSheets[n].cssRules[k].appendRule("100%{left:100px}") //新增 ``` 在 firefox 和 chrome 即時改變 css 的值,會立刻反應,但是在 safari/iphone/ipad 只要遇到動畫,都會延遲以及不正常反應 寫到最後,覺得還是用新的 css 蓋掉舊的 css 比較好
``` $mmcode(r1) ```
Blue
Red
Add Key
Del Key
2020年6月24日 星期三
CSS 的 filter
css 的 filter 相當好用,有時候只是想換個顏色,完全不需要再做另一張圖
blur
$textarea id="a06241_filter" style="width:100%;height:8em">$/textarea>
2020年6月4日 星期四
用 CSS 畫 3D 物件
第一次看到只用 CSS 就可以畫 3D 物件覺得非常神奇, 想當初在設計導航程式時,在那記憶體只有 16M 的機器上,要跑全台灣/全中國地圖,而且導航除了需要旋轉地圖到行進方向,最好還要有 2.5D 的斜角視圖才可以看到遠方更多的資訊,當時所有計算全部自己寫,光旋轉就要一堆 sin , cos 的計算,而現在只要一行指令就可以旋轉了...... 3D 的基礎,投影面和視點, 在 CSS 上也必須分層建立好 首先先建一個 view 裡面指定投影距離 **perspective:400px;** 在 view 裡頭建立 camera , 這裡有個很重要的參數 **transform-style: preserve-3d;** 然後在 camera 裡再建立 obj , 同樣的這裡也必須加上 **transform-style: preserve-3d;** ,然後就可以在 obj 中放面的資料 最簡單的範例如下 : ``` $mmcode(r0) ```
------------------------------------- 如果只有一個物件,可以省略 obj 那一層,也就是每個面都是一個物件的概念, 例如以下範例,利用八個面組成一顆鑽石
``` $mmcode(r3) ```
------------------------------------- 掌握這個方式後,就可以開始玩 3D 了,這裡寫了一個有趣的展示,只用 CSS 就可以做出早期德軍總部的隧道畫面,這裡用了一個參數 **backface-visibility: hidden;-webkit-backface-visibility: hidden;** 可以把背對的面隱藏,在這個範例中我有偷懶一下,並沒有把所有的面都設到正確的方向,只有一個 aa2 那個面需要在背對時隱藏。
``` $mmcode(r1) ```
--------------------------------- 加上 javascript 產生面, 可以做個球, 只要花點時間,光靠 CSS 就可以做出旋轉地球了呢 !
``` $mmcode(r2) ```
------------------------------------ 因為 div 是矩形, 雖然可以利用 clip-path 來做裁切,但是裡頭的貼圖並不會跟著變形,如果把解析度提高,那麼每個面都會接近矩形,效果很不錯,只是效能會很差,在調整了一下適當大小,又用了些偷懶的方式,沒有精算的很準確, 最後附上旋轉五色鳥做為這篇的結束,
``` $mmcode(r5) ```
2020年6月3日 星期三
用 CSS 畫箭頭
第一次看到有人用 div + css 畫三角形,覺得非常有意思,第一個想到的方法是利用 clip-path 來畫,這個方式最直覺,後來發現他用的是邊框,方法如下 : ``` $mmcode(r1) ```
由這裡可以看到,加厚的邊框變成了梯形, 如果把本來的 div 寬度設 0 ,然後把不要的邊框設為透明,那麼三角形就出現了 ``` $mmcode(r2) ```
同理,還可以畫梯形 那麼這篇的目的是畫箭頭, 這裡我打算用 ::before 來畫 ``` $mmcode(r3) ```
以後如果需要用到箭頭,就可以引用這個 CSS 然後設定 width , left 和 top , 以及 font-size 來修改大小,然後用 transform rotate 來旋轉,這會是個使用上相當方便的箭頭 既然箭頭都畫了,順便把一些常用的畫一畫 ``` $mmcode(r4) ```
‹
›
首頁
查看網路版