一個在線css三角形生成器

2020-12-26 酷扯兒

本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫

為了提高 前端開發效率, 筆者先後寫了上百個前端工具, 有些是給公司內部使用的, 有些單純是因為自己太「」, 不想寫代碼, 所以才「被迫」做的. 接下來介紹的一款工具——css三角形生成器也是因為之前想要解放設計師的生產力, 自己又懶得切圖或者寫

css

代碼, 所以想來想去還是自己做一個能自動生成css三角形代碼的工具吧.

接下來筆者就來帶大家介紹一下這個工具的用途和實現方案, 方便大家後續可以擴展出更多的「懶人工具」.

在線css三角形生成器預覽

由預覽動畫我們可以看到通過在線工具我們可以輕鬆配置各種想要的三角形, 並且能實時查看

css

代碼. 開發完這個工具之後筆者再也不用擔心還需要手寫三角形代碼了. (上班摸魚也成了可能, 確實很多時候就是不想寫代碼還想要有錢拿) 在文末筆者會附上

css

工具的在線地址, 接下來我們來看看具體實現流程.

實現css三角形生成器

因為這個工具的需求來自於前端, 所以肯定是要對

css

js

編程有一定的基礎, 比如css3的

transform

,

transition

, 布局, 盒模型,

border

邊界特性等.

和筆者之前寫的任何一個開源工具一樣, 在開發項目前一定要明確需求和目標, 這裡筆者簡單整理一下需求:

生成任何大小的三角形(size)生成不同位置的三角形(direction)生成不同角度的三角形(rotate)生成不同背景色的三角形(color, 其實這個實不實現無所謂, 主要是筆者連這個代碼都懶的寫)了解需求之後我們可以大致畫一個簡單的原型圖來代表我們的

css

生成器界面, 如下:

有了原型圖, 我們可以得到如下的任務細分圖:

這裡筆者要提的一點是其實以上流程對於任何項目都適用, 包括你遇到的難解的問題, 都可以一步步把思路先理清楚, 把大目標拆解為一塊塊的小目標, 然後逐個擊破, 這樣大難題也就解決了.

接下來我們先分析一下用

css

實現三角形的原理.

1.css畫三角形的原理

其實筆者在之前的文章中也分享過3種以上的使用

css

實現三角形的方案, 這裡筆者介紹一個通用的方法, 也就是用

border

來實現三角形, 我們先來看下面的圖示:

以上是展示了當box元素的

width

小於自身

border

寬度時的樣子以及當box寬度為零而

border-width

不為零時的樣子. 通過圖形一分析是不是很容易聯想到如果我只要一個邊有顏色,其他都為透明面是不是就能變成三角形了呢?

的確也是這麼實現的, 知道這個原理之後我們來繼續往下實現所見即所得的「三角形」.

2.編輯器實現

編輯器實現也是前端老生長談的話題了, 筆者在H5-Dooring項目中寫過一個非常複雜的編輯器, 但是這裡我們只要需要一個靜態且簡單的編輯器就夠了. 如下圖的界面:

我們可以用任何我們擅長的框架和組件庫來實現, 比如·

vue3+ element plus

,

react + antd4.0

, 筆者這裡採用

react

方案實現, 顏色選擇器採用社區比較有名的

react-color

.

編輯器界面的代碼筆者就不一一介紹了, 相信大家都能實現, 我們這裡來說一下樣式數據共享邏輯:

我們要想保證預覽區域和css代碼預覽區域能隨表單值變化而實時變化, 這裡一定要將表單數據共享出來, 我們可以用

react

組件的

state

或者

vue

vuex

(雖然不用vuex也可以將data提升)來共享狀態.

3. 預覽區域實現

預覽區域實現其實有了以上的分析其實很好實現了, 只需要利用共享的

form

數據來綁定到三角形元素的樣式上即可. 畫布的背景這裡筆者也是用

css

實現的, 如下圖:

感興趣可以cv一下, 這代碼如下:

.previewArea {display: inline-block; width: 360px; height: 360px; background: #eee; background-image: linear-gradient(45deg,rgba(0,0,0,.2) 25%, transparent 0, transparent 75%, rgba(0,0,0,.2) 0), linear-gradient(45deg,rgba(0,0,0,.2) 25%, transparent 0, transparent 75%, rgba(0,0,0,.2) 0); background-size: 30px 30px; background-position: 0 0,15px 15px;}

還有一個比較關鍵的一點是如何實現切換三角形的方向的問題, 我們都知道切換方向後

css

border

的幾個方向屬性都會變, 比如三角形的方向向上時, 我們的

css

如下:

{border-width: 0 60px 60px 100px; border-color: transparent transparent #06c transparent;}

三角形的方向向下時, 我們的

css

如下:

{border-width: 100px 60px 0 60px; border-color: #06c transparent transparent transparent;}

同樣左右也是類似的, 所以我們要維護4中樣式, 如果後期想加一下左上, 右上, 左下, 右下, 這樣代碼會非常難以維護(不是

if else

就是

switch

, 說實話

switch

只適合8個條件一下的判斷), 所以筆者這裡用對象法來解決它, 並將其封裝成一個函數:

const getBorderWidthAndColor = (direction:string, w:number, h:number, color:string) => {const borderWidthAndColor:any = { '1': { borderWidth: `0 ${w/2}px ${h}px ${w/2}px`, borderColor:`transparent transparent ${color} transparent` }, '2': { borderWidth: `${h}px ${w/2}px 0 ${w/2}px`, borderColor:`${color} transparent transparent transparent` }, '3': { borderWidth: `${h/2}px ${w}px ${h/2}px 0`, borderColor:`transparent ${color} transparent transparent` }, '4': { borderWidth: `${h/2}px 0 ${h/2}px ${w}px`, borderColor:`transparent transparent transparent ${color}` } } return borderWidthAndColor[direction] }

其實屬性預覽比如寬度, 高度, 背景色這些都好處理, 筆者這裡就不一一介紹了. 預覽如下:

4. 代碼實時展示實現

至於代碼實時展示在文本框中, 這個也是很容易實現, 我們只要要把拿到的數據實時展示到文本框裡即可. 由於筆者採用的css module 和react方式實現的, 所以需要對css進行額外處理, 比如將對象格式轉化為css規範的格式, 所以需要加如下步驟:

JSON.stringify(triangleCss, null, 4).replaceAll(/"/g, '').replaceAll(/,/g, ';')

這樣, 一個css三角形生成器就做好了, 大家還可以在此基礎上繼續擴展, 比如支持多邊形, 六角形, 五角形等, 也是完全沒問題的.

相關焦點

  • 50款超實用的CSS工具!
    CSS 圓角生成器,CSS 框架,CSS Sprites生成器,CSS 排版工具以及 CSS 表單生成器。Grid Designer 2可控性強,選項豐富的網格系統,支持 CSS 在線即時輸出。Design By Grid PNG Grid Generator生成用於CSS網格的 PNG 圖片,以方便地用作 PSD 或 HTML/CSS 設計背景,免除手工製作網格的麻煩。
  • LOGO在線製作生成器到底哪個好?
    在網際網路時代,製作淘寶店鋪LOGO、拼多多LOGO以及各種網站LOGO,很多人都喜歡用logo在線製作生成器生成。那麼Logo在線製作生成器哪個好呢?今天我們就給大家分享多個LOGO在線製作生成器,分析其優劣勢,助您選擇。
  • WordPress主題在線生成器
    不懂HTML,也不懂JS、PHP和CSS,可是又想製作一個屬於自己的WordPress主題?試試WordPress主題在線生成器吧。今天要介紹的就是已有若干年歷史的主題生成器WordPress Theme Generator。
  • 在線工資條生成器網站有哪些優秀的工資條軟體
    在線生成工資表或者工資條的平臺越來越多,其中在諸多的在線工資條生成器網站中,螞蟻工資表生成軟體官網上為每家企業帶來的選擇都是很滿意的,這在運用的過程中帶來的效果和工作效率上是越來越高的,在生成的過程中其方法上是很簡單的,簡單的其點擊或者輸入工資信息的時候,都是會起到了很大的幫助。
  • 新版微信對話生成器在線截圖工具
    各種搞笑內容,天天被人表白,怎麼可能呢,他們都是用一款在線的微信對話截圖工具來生成的圖片。是不是得用PS一點一點處理?事實上,無需P圖如此費功夫,只需要藉助一些小工具,就能夠輕鬆做到!微信對話生成器百度搜索「12tool對話生成器」,進入對話生成器製作頁面,點擊進入首頁。
  • 有趣的CSS題目(11):reset.css 知多少?
    (點擊上方公眾號,可快速關注)作者:伯樂在線專欄作者 - chokcoco如有好文章投稿,請點擊
  • Logo Type Maker:免費在線 Logo生成器
    Logo Type Maker:免費在線 Logo生成器 Logo Type MakerLogo Type Maker是一個實用方便的免費在線 Logo生成器。
  • 類似傻瓜文案生成器的有哪些?微博超火生成器網頁地址大全[視頻...
    傻瓜文案生成器的玩法很多,微博上也出現了很多熱門的生成器玩法,這次小編會分享一些超級火爆的生成器,下面就是這次小編要給大家分享的內容,想要知道傻瓜文案生成器的玩法和其他生成器的入口,都可以參考下面的攻略哦!
  • 條形碼生成器就是條碼生成器
    條形碼生成器其實就是條碼生成器,這個在條碼領域中還是很有作用的,但是有一點,如果是國標碼,沒有註冊,註冊申請是無法使用條碼生成器生成條碼的,或者說生成了的條碼別人也掃不出信息來
  • 前端: 如何利用Qrcode製作一個二維碼生成器?
    玲琅滿目的二維碼在我們的都市和朋友圈中隨處可見, 很多平臺都提供了定製二維碼的服務, 那麼作為一名程式設計師, 我們如何自己實現一個簡單的二維碼生成器呢? 接下來筆者就來帶大家一起利用Qrcode實現一個二維碼生成器.
  • 愛豆微博生成器在線生成入口地址 明星發微博@你圖片製作方法
    愛豆微博生成器是最近比較火的軟體,這個軟體的功能主要是模擬愛豆的微博號幫你推送想要的訊息,看上去非常的搞怪,那麼這個軟體的在線生成入口在哪?和小編一起去看看吧!  愛豆微博生成器在線生成入口:點擊進入  給大家分享愛豆微博生成器玩法  *如果存檔中沒有你想要的博主,請先手動選擇,然後評論或私信告訴我,我加到存檔。  請輸入對方的微博名字  *點擊圖片可以更換頭像。
  • 免費在線工具合集,生活常用、教育學習、辦公輔助、圖片視頻……
    前言在我們生活和工作中,經常會用到各種各樣的工具,比如圖片轉換壓縮、視頻轉換壓縮、屏幕錄製、在線解壓等等,然而沒有一個軟體能一次性解決所有問題。Tooleyes支持平臺:WebTooleyes 是一個致力於打造和收集各種實用在線工具的工具合集類網站 。網站目前收集了生活常用 、教育學習 、辦公輔助 、圖片視頻 、網絡工具和程序開發等多種類型 ,近百種實用工具 。
  • 老婆生成器在線玩入口地址 一鍵模擬你的女友網址
    小夥伴們也許是單身太久了,居然想到了老婆生成器這種東西,不過小編在玩過之後就一發不可收拾了,下面給大家帶來這個老婆生成器的介紹!  老婆生成器  也許是單身太久,上班太無聊了,竟然想到了老婆生成器,看來這個設計者應該是個單身!不過這個生成器還是挺好玩的
  • 真人照片一鍵在線變漫畫頭像生成器工具,免費卡通頭像在線生成器...
    在微信裡就可以把照片變動漫,不管是做頭像還是發個朋友圈都還是OK的。   第一步:在微信小程序裡面搜索「動漫頭像卡通人物生成器」,就可以找到。
  • 30 CSS的4種編寫方式
    外鏈式的優點:多個HTML文件,可以共用一個CSS樣式表文件。比如,我在項目文件夾中,創建一個"外鏈式.html"文件,再在css文件夾中創建一個"css.css"文件。然後在"css.css"這個文件中寫css代碼,在.css文件中寫css代碼,就不需要寫style標籤了,直接寫css語句就行了。比如我給p標籤的文字設置成黃色。
  • Div+css教程之製作html的工具
    此文章主要為大家介紹了Div+css教程之製作html的工具,具有一定的參考價值,學習覺得挺不錯的,分享給大家。創業項目優選 好項目來A5招商 ,點擊入駐!1.切圖工具圖片的效果對一個網頁來說是很重要的,所以說在切圖這方面也沒什麼小巧的工具,一種是用ps(photoshop),另外一種是fw(fireworks),除了這兩個種工具ahuing沒有找到一個合適的工具了,如果哪個朋友有更好的切具可以推薦下,目前ahuing用的是第二種,從效率上出發也建議用第二種;fw切圖是很簡單的,打開一張效果圖(必須是生成好的一個整張的圖片
  • 在條碼生成器裡快速批量製作條碼
    條碼的製作列印需要藉助條碼生成器,而常見的在線的條碼碼生產器一般都是單個生成的,如果想要批量生成條形碼需要藉助專門的條碼生成器來實現。以Label mx條碼生成器為例,演示一下如何條碼如何快速生成。1.啟動軟體,使用一維條碼工具在頁面中畫出一個一維碼,通過選擇條碼類型,輸入條碼數據完成起始條碼的設置。2、批量生成條碼常見有兩種,相同條碼的批量製作和流水號條碼的批量製作。如果是流水號條碼批量生成,點擊設計好的條碼,在右側屬性欄中的條碼選項中選擇「流水條碼」。如果是相同條碼的重複製作,不需要進行任何操作。3、在軟體中進行紙張和區域的設置。
  • 用html和css怎麼製作一個簡單的網頁
    前面發的兩篇關於html和css的文章,不知道大家看會了沒有呢,私下有沒有操作呢。俗話說,學以致用,只學不用和沒學沒什麼區別。今天就用前兩節的知識教大家一個簡單的網頁製作,可能有些陌生的知識,自行百度哦。
  • 【頭條】「身份證生成器」挑戰實名制
    長沙市民王先生第一次網購火車票,卻發現自己的身份證信息竟被他人在12306網站註冊了,今年春運,王先生還要為怎麼購票大傷腦筋。春運期間,記者發現,通過身份證號碼生成器在預訂火車票網上預訂、退訂等環節中一樣暢通無阻,這無疑為「黃牛黨」的刷票、囤票行為提供了可乘之機。  「機選身份證」很容易  記者在網上搜索「身份證號碼生成器下載」,彈出的軟體五花八門,大部分是免費的;還有少部分付費型的,功能就更加強大了,不僅能自動生成身份證號碼,甚至只要提交一張照片,軟體馬上就能製作出一張身份證複印件。
  • 如何利用Qrcode製作一個二維碼生成器?
    玲琅滿目的二維碼在我們的都市和朋友圈中隨處可見,很多平臺都提供了定製二維碼的服務, 那麼作為一名程式設計師,我們如何自己實現一個簡單的二維碼生成器呢?接下來筆者就來帶大家一起利用Qrcode實現一個二維碼生成器。