用CSS實現箭頭

2021-06-12 01:59:07 字數 2397 閱讀 7987

在web開發中,popup和tooltip經常要用到類似的箭頭, **可以幫助我們自動生成對應的css**。下面主要闡述一下css實現箭頭的原理

上面的html**將產生如下的效果

根據id指定css的width和height屬性,然後加入10px的黑色border

如果將這個div的面積縮小,width和height都改為20px,我們再看一下顯示的效果

下面我們把div的width和height都設定為0

現在div顯示的效果如下

因為div的width和height都為0,所以現在div顯示的都是boder,如果我們把border的css調整一下

我們把border-top的顏色改為紅色,現在顯示效果如下

如果我們把border-bottom,border-left,border-right的顏色都改為透明色,會產生什麼樣的效果呢?

顯示效果如下,乙個紅色的箭頭已經出來了。 

到現在為止,我們已經可以用css來畫出乙個任意大小,任意顏色,任意方向的箭頭了。 

一般的情況下我們是把箭頭加到tooltip和popup上,按照目前的方法,我們需要增加乙個div才能實現,而在實際的**應用中,增加乙個div不是很方便,為了解決這個問題,我們可以使用css的偽類 before或者after。

上面的**,我們給div增加了after偽類,在after偽類裡我們增加了乙個空元素,因為是空元素,所以介面上看不到效果

接下來我們對after這個偽類做一下修改

我們為after偽類增加border屬性,我們可以看到箭頭已經顯示出來了。 下面我們可以通過absolute屬性,來控制箭頭的位置,要實現子元素的absolute定位,父元素一定要是relative。

利用top:100%,我們將after偽元素移到div的下面,left:50%,我們將after偽元素放到50%的位置

但是從顯示效果來看,箭頭並沒有按照我們預想的放置在中間位置。是因為箭頭本身的寬度。可以通過margin-left來控制,我們再做一下修改

我們加入了一行css

margin-left: -10px;

現在箭頭已經調整到了中間位置,當然我們可以根據絕對定位,可以把箭頭放置在任何位置。 

在cssarrowplease**生成的arrow css裡面,同時利用了after和before偽元素,是生成了兩個boder width不同的偽元素,來產生箭頭的陰影效果

用css屬性實現箭頭

原理 通過擷取 border 的部分拐角實現。l 當寬,高,邊框寬相近 相等 時,改變某一邊的顏色可看到乙個梯形。例一 l 當元素寬高為 0時,且其他邊為透明色時,可以形成乙個三角形。但為了精確定位,讓三角形顯示在合適位置,會使用 position 例如下面所示程式 left right displ...

css畫橫線箭頭 用純CSS實現的箭頭

用css即可繪製出各種箭頭,無需裁剪,甚至沒有用到css3的東西。對瀏覽器支援良好。基本原理 原理非常簡單,通過擷取border 邊框 的部分 拐角 實現,幾行css 即可理解 乙個梯形 當元素寬 高和邊框的寬相近 等 時,改變某一邊的顏色可以看到乙個梯形 demo11 border 10px so...

css實現彎曲箭頭

前些天寫專案,設計圖裡有彎曲的箭頭,當時由於時間緊迫,使用的是,現在閒下來,自己再畫乙個,如下 實現完全箭頭分兩部分 以上知識點基本都是圍繞border屬性 class curvedarrowup div class curvedarrowdw div 最簡單的直角三角形 curvedarrowup...