CSS3制作氣泡對話框的實例教程

創(chuàng)建一個100%CSS的氣泡,我們從下面的標記考試。
- <div class="speech-bubble">Hi there!</div>
接下來,應(yīng)用一些基本樣式。
- .speech-bubble {
- position: relative;
- background-color: #292929;
- width: 200px;
- height: 150px;
- line-height: 150px; /* 垂直居中 */
- color: white;
- text-align: center;
- }
箭頭將通過after偽元素實現(xiàn)。
- .speech-bubble:after {
- content: '';
- }
- :before和:after偽元素可以用來在元素內(nèi)容之前或之后插入生成內(nèi)容。 接下來,只是簡單復制箭頭,并定位到適當?shù)奈恢?。我們開始通過絕對定位的內(nèi)容,重置寬度和高度,并應(yīng)用邊界顏色。
- .speech-bubble:after {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- border: 10px solid;
- border-color: red green blue yellow;
- }
因為我們知道我們想要向下的箭頭,上面的圖片表明,除了紅色(或上)邊境其他的都應(yīng)該被省略,或者設(shè)置為透明。
- .speech-bubble:after {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- border: 10px solid;
- border-top-color: red;
- }
當創(chuàng)建CSS形狀是,因為我們不能使用width屬性來指定箭頭的寬度,而是應(yīng)該使用border-width屬性。在這種情況下,箭頭應(yīng)該更大點;所以border-width可以增加到15px。我們將箭頭定位到容器的底部居中,通過利用top和left屬性。
- .speech-bubble:after {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- border: 15px solid;
- border-top-color: red;
- top: 100%;
- left: 50%;
- }
到這里就差不多了;最后一個步驟是更新箭頭的顏色和容器的背景顏色相同。定位也需要修改,根據(jù)邊界的寬度(15 px)。當我們在這里,我們還將應(yīng)用一個微妙border-radius屬性來使容器更像氣泡。
- .speech-bubble {
- /* … 其他樣式 */
- border-radius: 10px;
- }
- .speech-bubble:after {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- border: 15px solid;
- border-top-color: #292929;
- top: 100%;
- left: 50%;
- margin-left: -15px; /* 調(diào)整邊框?qū)挾?nbsp;*/
- }
不錯,不是嗎?將這代碼抽象為幾個可重用的類,好應(yīng)用到你將來的項目。
- /*
- 對話氣泡
- 用法:使用.speech-bubble和.speech-bubble-DIRECTION類
- <div class="speech-bubble speech-bubble-top">Hi there</div>
- */
- .speech-bubble {
- position: relative;
- background-color: #292929;
- width: 200px;
- height: 150px;
- line-height: 150px; /* 垂直居中 */
- color: white;
- text-align: center;
- border-radius: 10px;
- font-family: sans-serif;
- }
- .speech-bubble:after {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- border: 15px solid;
- }
- /* 箭頭的位置 */
- .speech-bubble-top:after {
- border-bottom-color: #292929;
- left: 50%;
- bottombottom: 100%;
- margin-left: -15px;
- }
- .speech-bubble-rightright:after {
- border-left-color: #292929;
- left: 100%;
- top: 50%;
- margin-top: -15px;
- }
- .speech-bubble-bottombottom:after {
- border-top-color: #292929;
- top: 100%;
- left: 50%;
- margin-left: -15px;
- }
- .speech-bubble-left:after {
- border-right-color: #292929;
- top: 50%;
- rightright: 100%;
- margin-top: -15px;
- }
補充:更好的垂直居中
使用line-height實現(xiàn)垂直居中的一個缺點是僅限于一行。當文本需要兩行或兩行以上時,每一行的高度將會太大。一個聰明的解決辦法是設(shè)置氣泡的display屬性為table,和包裝段落文本的display為table-cell。這就允許我們將文本設(shè)為垂直居中。
- <div class="speech-bubble speech-bubble-top">
- <p>Text goes here.</p>
- </div>
接下來,修改CSS。
- .speech-bubble {
- /* 其他樣式 */
- display: table;
- }
- .speech-bubble p {
- display: table-cell;
- vertical-align: middle;
- }
如果引用display: table 帶來可怕的表格布局的老式回憶,別擔心。這些屬性是指顯示一個元素的樣式。
我們不局限于三角形;CSS能產(chǎn)生各種各樣的形狀,甚至心和生物危害標志!
- .biohazard {
- width: 0; height: 0;
- border: 60px solid;
- border-radius: 50%;
- border-top-color: black;
- border-bottom-color: black;
- border-left-color: yellow;
- border-right-color: yellow;
- }
相關(guān)文章
- 這篇文章主要介紹了純CSS實現(xiàn)氣泡對話框尖角處理的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-06-26
JS+CSS3實現(xiàn)的確認框和對話框彈出并關(guān)閉特效源碼
是一段通過CSS和JS代碼來實現(xiàn)確認框和對話框特效代碼,點擊相關(guān)圖標會自動彈出確認框和對話框的無刷新遮罩層,并分別有確認、取消等按鈕,點擊后,該確認框和對話框就會自2016-09-07CSS3實現(xiàn)可兼容移動端的超酷彈出對話框效果源碼
這是一款基于HTML5和CSS3的彈出對話框,一共有4種類型,每種對話框彈出的時候均帶有一定的動畫特效,比如成功時候的動畫和加載時候的動畫,都非常不錯。適合在移動端使用。2015-12-08jQuery結(jié)合Css3制作的多風格輕量級彈出動感對話框插件特效源碼
jQuery結(jié)合Css3制作的多風格輕量級彈出動感對話框插件特效源碼,是一段非常適合網(wǎng)站登錄或注冊以及需要填寫內(nèi)容時使用的對話框代碼,本段代碼可以彈出幾十種具有動畫特效的2014-10-30用純css3和html制作泡沫對話框?qū)崿F(xiàn)代碼
泡沫對話框是一種比較流行的趨勢因為它改變了傳統(tǒng),通常情況下都是使用html和javascript或者是圖片來實現(xiàn),接下來為大家介紹下使用css3配合html來實現(xiàn)一些簡單的泡沫對話框2013-03-21- 利用CSS的border屬性可以生成一些圖形,例如三角或是圓角。純粹的CSS2的內(nèi)容,沒有兼容性的問題,我之前在純CSS實現(xiàn)各類氣球泡泡對話框效果一文中算是比較詳細的講述了CSS2010-12-27
- 對話框小尾巴,估計大家在實際開發(fā)中應(yīng)該經(jīng)常遇到過,省事點的就是叫設(shè)計小姐姐給切個帶小尾巴的背景圖,那不省事的呢?這篇文章主要介紹了CSS對話框小尾巴,需要的朋友可以2019-05-16