DIV箭頭用于表現DIV內容的指向,是使用非常普遍的一種表現形式,例如新浪微博的消息轉發:

還有傲游網站的導航條:

像傲游賬戶上方這種箭頭更需要多幅圖片以表現箭頭和hover的效果。?

傳統的實現方式都需要一副表示箭頭的圖片放在DIV上方來實現,例如新浪微博的相關CSS如下:

而使用CSS3的特性,我們不需要圖片就可以實現更加華麗的效果,這樣做的好處還包括減少本地文件系統的讀取、節省服務器帶寬和連接數、避免文件下載失敗帶來的錯誤等等。
實現的原理是:我們可以將箭頭看作是一個矩形或者菱形的一個角,使用CSS3的屬性transform來實現矩形的旋轉。
朝上的箭頭需要將矩形旋轉45度,我們使用transform:?rotate(45deg)來實現,另外針對不同的瀏覽器還需要添加不同的hack,例如Opera的-o-transform、Firefox的-moz-transform,下面以Chrome瀏覽器為例實現一個樣例。
定義一個arrow-shadow樣式,內容如下:
~~~
.arrow-shadow?{
-webkit-transform:rotate(45deg);
border:1px?solid?#AAAAAA;
height:40px;
position:absolute;
width:40px;
}
~~~
實現的效果如下所示:

為了更加飽滿,我們加上CSS3的盒陰影,
~~~
.arrow-shadow?{
-webkit-transform:rotate(45deg);
-webkit-box-shadow:0?0?10px?0?#aaa;
height:40px;
position:absolute;
width:40px;
}
~~~
現在效果如下:

在外面加一層DIV控制它的高度和寬度。
~~~
.arrow-outer?{
height:24px;
overflow:hidden;
position:absolute;
width:60px;
}
~~~
效果如下:

現在我們已經有了一個漂亮的箭頭,但是這還不夠,為了表現得更加出色,我們再加一層內部的箭頭。

關鍵代碼和結構如下:
~~~
<style?type="text/css">
.arrow-outer?{
position:absolute;
height:24px;
width:60px;
overflow:hidden;
}
.arrow-shadow?{
-webkit-box-shadow:0?0?10px?0?#AAAAAA;
-webkit-transform:rotate(45deg);
background:none?repeat?scroll?0?0?#FFFFFF;
height:40px;
left:15px;
position:absolute;
top:16px;
width:40px;
}
.arrow-inner?{
position:relative;
left:10px;
top:20px;
height:40px;
width:40px;
background:#fff;
border:5px?solid?#ededed;
-webkit-transform:rotate(45deg);
transform:rotate(45deg);
}
</style>
<div?class="arrow-outer">
<div?class="arrow-shadow">
</div>
</div>
<div?class="arrow-inner">
</div>
~~~
在外面加上一層容器,就可以看到箭頭了。

最后完整的效果圖如下所示:

CSS3、HTML5的發展和完善讓我們編寫代碼更加簡便和快捷,實現的效果也更加漂亮,例如背景的漸變不再需要背景圖片的平鋪就可以通過CSS代碼直接實現,但是有時候需要經過一些轉換,才能將這些新技術應用到我們常見的功能中去,這需要我們多加思考和保持思維的靈感。
- 前言
- AutoPager的簡單實現
- 利用CSS3特性巧妙實現漂亮的DIV箭頭
- IE9在Win7下任務欄新特性簡介
- 瀏覽器九宮格的簡單實現
- Raphael js庫簡介
- 使用CSS3構建Ajax加載動畫
- 用CSS3創建動畫價格表
- 用CSS3實現瀏覽器的縮放功能
- 用純CSS3實現QQ LOGO
- 用CSS3創建旋轉載入器
- 使用Javascript開發移動應用程序
- 用HTML5創建超酷圖像灰度漸變效果
- 使用CSS3創建文字顏色漸變(CSS3 Text Gradient)
- 僅用CSS創建立體旋轉幻燈片
- 如何創建跨瀏覽器的HTML5表單
- 用CSS3實現動畫進度條
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas動畫實例
- 談HTML5和CSS3的國際化支持
- 實現跨瀏覽器的HTML5占位符
- 前端開發必備工具:WhatFont Bookmarklet-方便的查詢網頁上的字體
- 使用HTML5和CSS3來創建幻燈片
- HTML5之美
- 如何使用HTML5創建在線精美簡歷
- 以小見大、由淺入深-談如何面試Javascript工程師
- 快速入門:HTML5強大的Details元素
- 用CSS3實現圖像風格
- HTML5視頻字幕與WebVTT
- 用純CSS3實現Path華麗動畫
- 用3個步驟實現響應式網頁設計
- 遇見CSS3濾鏡
- 關于CSS3濾鏡的碎念
- 用純CSS3繪制萌系漫畫人物動態頭像
- CSS3新的鼠標樣式介紹
- 用HTML5獻上愛的3D玫瑰
- 對HTML5 Device API相關規范的解惑
- 如何使用HTML5實現拍照上傳應用
- 2012第一季度國外HTML5移動開發趨勢
- HTML5新特性:范圍樣式
- 百度開發者大會-《用HTML5新特性開發移動App》PPT分享
- Chrome 19對于HTML5最新支持的動態:電池狀態API,全屏API,震動API,語音API
- 遇見Javascript類型數組(Typed Array)
- 用HTML5 Audio API開發游戲音樂
- 用HTML5實現人臉識別
- 用Javascript實現人臉美容
- Chrome 20對于HTML5最新支持的動態:顏色輸入,網絡信息API,CSS著色器
- 用HTML5實現手機搖一搖的功能
- 用HTML5實現iPad應用無限平滑滾動
- 用非響應式設計構建跨端Web App
- 了解SVG
- HTML5圖像適配介紹
- HTML5安全:內容安全策略(CSP)簡介
- HTML5安全:CORS(跨域資源共享)簡介
- 用CSS3 Region和3D變換實現書籍翻頁效果
- 談談移動App的思維誤區
- Chrome新特性:文件夾拖拽支持
- 《關注HTML5安全》
- HTML5安全風險詳析之一:CORS攻擊
- HTML5安全風險詳析之二:Web Storage攻擊
- HTML5圖像適配最新進展:響應式圖片規范草案
- HTML5移動Web App相關標準狀態及路線圖
- HTML5安全風險詳析之三:WebSQL攻擊
- Chrome引入WebRTC支持視頻聊天App
- HTML5安全風險詳析之四:Web Worker攻擊
- HTML5安全風險詳析之五:劫持攻擊
- HTML5安全風險詳析之六:API攻擊
- HTML5安全攻防詳析之七:新標簽攻擊
- 在iOS Safari中播放離線音頻
- 使用WebRTC實現遠程屏幕共享
- Firefox、Android、iOS遇見WebRTC
- HTML5光線傳感器簡介
- HTML5安全攻防詳析之八:Web Socket攻擊
- HTML5安全攻防詳析之完結篇:HTML5對安全的改進
- 激動人心!在網頁上通過語音輸入文字 - HTML5 Web Speech API介紹
- Web滾動性能優化實戰
- 用CSS3設計響應式導航菜單
- 用HTML5構建高性能視差網站
- 漫談@supports與CSS3條件規則
- HTML5下載屬性簡介
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(一)
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(二)
- 趨勢:Chrome為打包應用提供強大新特性
- 從HTML5移動應用現狀談發展趨勢
- 基于HTML5的Web跨設備超聲波通信方案