
用 CSS 写对话气泡,其中小尖角希望和 iMessage 一样,然而似乎有些困难,网上也都是微信那种尖角。
大家有什么建议嘛……
1 ming2050 2017-05-23 20:58:02 +08:00 via iPhone |
2 adspe 2017-05-23 21:12:22 +08:00 和 CSS tooltip 一个思路 |
3 Bardon 2017-05-23 21:20:17 +08:00 via Android 伪类是一个思路 |
4 dumbass 2017-05-23 21:34:43 +08:00 via Android 伪元素:before,:after 写个三角形然后位置调调调 |
5 islujw OP @bojackhorseman 那个三角形是镰刀状的……不知道怎么写 $_$ |
7 gongpeione 2017-05-23 21:51:46 +08:00 上个图看看是什么样的 |
8 learnshare 2017-05-23 21:51:49 +08:00 |
9 geelaw 2017-05-23 21:52:24 +08:00 via iPhone 贴图呗,伪元素 content 可以是图 |
10 islujw OP |
12 Tonni 2017-05-23 22:59:18 +08:00 |
13 aleen42 2017-05-24 01:12:15 +08:00 via Android 用 border 三角形出 |
14 islujw OP @Tonni 非常感谢,已经成功!只是有一个细节希望能继续完善:iMessage 的蓝色是全屏范围渐变的,我将颜色定义为: background-image: linear-gradient(to bottom, #5ac8fa, #0b93f6); background-attachment:fixed; 达成效果。 但小尾巴是 border 拼出来的,border 怎样才能支持类似「 background-attachment:fixed;」的设定,让渐变在全屏幕范围,而不是仅仅是单个内? |
15 islujw OP @aleen42 嗯,做到了。但 border 的渐变填充能否达成类似 background-attachment:fixed; 的效果?也就是在全屏幕范围内的渐变,而不局限在单个元素内。要和气泡本身保持一致。 |
16 islujw OP @Tonni 如果能将 border 和主体部分连接到一起应该是最好的,因为如果消息是图片,整个部分都被图片填充,包括小尾巴。 |
17 geelaw 2017-05-24 04:36:05 +08:00 |
18 geelaw 2017-05-24 04:39:35 +08:00 上个图,感觉自己棒棒哒 |
19 islujw OP @geelaw 谢谢 Gee Law 热情创作 ^ ^ 搞定了~ 蓝色小尾巴 border 定义颜色为 transparent 即可让 background-image 可见~开心! |
20 islujw OP @Tonni 感谢,已搞定。蓝色小尾巴 border 定义颜色为 transparent 即可让 background-image 渐变可见。 |
23 lxy42 2017-05-24 09:57:35 +08:00 学习了 |
24 joyqi 2017-05-24 11:00:04 +08:00 |
27 Tonni 2017-05-24 15:09:53 +08:00 |
28 islujw OP @Tonni 基于那份代码,渐变效果已在 Mac Safari 上成功实现。但 iOS Safari 不支持 background-attachment: fixed; 特性,导致渐变色被固定在每个元素,不能根据位置而变化,这个还有解决的希望嘛…… |
30 geelaw 2017-05-24 17:38:31 +08:00 via iPhone @islujw 啊那你可以选择在 iOS Safari 上不使用渐变,还可以 fallback 到纯色 |
33 islujw OP @geelaw 怎么让 iOS 和 macOS 的 Safari 区别用色呢?没成功诶,iOS 上总是以预先分布好的渐变示人…… |
37 islujw OP @geelaw 1. 你是如何在手机上滚动这块页面的?我增加了对话、改变了颜色后,整个网页被撑高了,滑动是滑动整个网页,而非仅限于这个区块内。2. 我在自己网页上实现后,的确无法实现。3. 能搜出大量关于 iOS Safari 不支持此特性的讨论。你截图中的是 iOS Safari 实现的还是那个网站给的运行环境实现的呢? |
39 islujw OP @geelaw 经过测试,在 JSFiddle 和自己的网页上,为区块设置固定高度和滚动条 {max-height: 300px; overflow: scroll; } 可以让 iOS Safari 将背景固定住,达到效果。但从浏览体验出发,不可以这么设定。然而,在页面自然滚动状态下,就无法达成效果了。为了弄清楚背景图究竟是如何定位的,将颜色替换为图片,发现是以整个页面长度(而非屏幕高度,亦非第一个和最后一个气泡的高度差)为填充高度。 |
40 geelaw 2017-05-28 22:34:18 +08:00 via iPhone @islujw 那你可以把整个页面套进一个 div 里面,让这个 div 具有 100vh、100vw 和滚动条,并禁止 body、html 之滚动条 |
41 islujw OP @geelaw 最后权衡了一下,还是决定让宽度小于等于 1024px 的浏览器使用纯色。页面滑动的顺畅度还是首要考虑的。不管怎样,还是谢谢啦…(ì _ í) |
42 e8c47a0d 2017-06-30 14:22:52 +08:00 形状比较复杂的,建议用 inline svg |
43 islujw OP @e8c47a0d 已经用 border 写出来了。现在的问题是移动端的 Safari 不支持背景 fixed。当然还有滑动时的气泡缓冲效果,不过这个可有可无~ |