怎樣打造一個DOM元素位置引擎 (一)
碎碎念
這是一篇早就應該寫的文章,但是由於過年前專案緊張,一直沒有時間,這個週末決定把這筆債換了。這個專案開始於兩個月前,也是花了比較多時間的一個專案,不像前段時間寫的 Hexo 主題 fexo ,靈感一現,兩個晚上就大體出來了。這也是一個比較有意思的專案,因為它不是一個可以直接用的前端UI元件,它是一個基礎UI類庫,要更好的使用它,你需要再它基礎上去實現一些可用的前端元件。
這個DOM元素位置引擎是什麼?
說成一個引擎,實在有些裝逼,其實它就是控制 DOM 元素位置的一個 JavaScript Library,在前端互動中,怎樣給 DOM 元素定位是一個經常遇到的問題,所以我把可以通用的部分抽象出來,這樣可以更方便的給元素定位。
這個類庫我給它取名叫做 beside,意思是【在旁邊】,這也是 beside 的核心功能,讓一個元素放置於另一個元素旁邊。
Beside起源
它起源跟藝術一樣,源於生活(裝逼)。其實他的起源來源於一個刪除按鈕,需求來源於我們的互動設計師。開始我們前端做了一個刪除成員的功能,沒有任何提示,就直接刪除了。互動說這當然是不行的,要加個二次確認,前端說可以加個彈窗嗎?互動說不行,不要這種大彈窗,在刪除按鈕旁邊彈個小卡片就好了,也就是下面的效果:
二次確認這個小功能,它就是 Beside 的起源。
Beside 到底是什麼?
一句話: beside 是一個讓一個 DOM 元素放置在另一 DOM 元素的基礎 UI 庫。
Gibhub: beside
Demo: 檢視
效果圖:
使用場景
使用 Beside 可以更方便的實現一些前端元件, 典型的包括: Tooltip、Popover、 Dropdown Menu、垂直居中的 Modal 等。
Beside 的用法
<script src="bower_components/beside/dist/beside.js"></script>
<div id="me">ME</div>
<div id="you">YOU</div>
beside.init({
me: document.getElementById('me'),
you: document.getElementById('you'),
where: 'top center'
});
基於 Beside 的 UI component
- fo-popover A nice popover for Angular.
- fo-tooltop A nice tooltip for Angular.
瀏覽器相容性
- IE7 && IE7+
- Firefox
- Chrome
- Safari
- Opera
部落格原文: http://forsigner.com/2016/03/06/beside-1/
相關文章
- WPF 元素相對另外一個元素的 相對位置
- 如何實現一個基於 DOM 的模板引擎
- 如何判斷一個DOM元素正在動畫,一個CSS“阻塞”JS的例子動畫CSSJS
- 構建一個使用 Virtual-DOM 的前端模版引擎前端
- javascript如何實現複製克隆一個dom元素節點JavaScript
- 在排序陣列中查詢元素的第一個和最後一個位置排序陣列
- js實現的在li元素列表的任意位置插入一個新的li元素JS
- js 在陣列的指定索引位置插入一個新的元素JS陣列索引
- 判斷一個元素是否是另一個元素的子元素或者父元素
- 34. 在排序陣列中查詢元素的第一個和最後一個位置(中)排序陣列
- 《爆炸貓咪》開發商CEO:我們怎樣打造一個泛娛樂品牌?
- 在指定位置插入一個新的li元素程式碼例項
- 動手打造一款 canvas 排版引擎Canvas
- js動態在一個元素中新增另一個元素JS
- excel表格複製貼上格式怎麼能一模一樣 表格怎麼複製一個一模一樣的Excel
- 怎樣設計一個商城專案?
- 怎樣做好一個開源專案
- 怎樣尊重一個程式設計師程式設計師
- 如何判斷一個元素是否位於另一個元素之中
- 怎樣用一個佇列和一個棧實現求一個表示式的值?佇列
- JavaScript DOM位置尺寸APIJavaScriptAPI
- 《DNF》元素聖靈玩法技巧 怎樣用好元素
- 《怎樣成為一個高手》觀後感
- 怎麼樣“抄“一個PHP擴充套件PHP套件
- 設定一個怎樣的小目標
- 王垠:怎樣寫一個直譯器
- react如果你想為一個元件返回多個元素怎麼辦?React元件
- 寫一個更好的Javascript DOM庫JavaScript
- 在一個元素上:hover,改變另一個元素的css屬性CSS
- 打造一個啟動介面
- CSS下一個兄弟元素CSS
- jquery css()一次性為多個元素設定多個樣式jQueryCSS
- 怎樣設計一個好的資料庫資料庫
- 怎樣組建一個TPM專案團隊?
- 學會怎樣尊重一個程式設計師程式設計師
- 怎樣成長為一個真正的Oracle DBAOracle
- js dom元素樣式設定相關style屬性介紹JS
- 這個網站怎麼沒有一個目錄,告我當前位置?網站