用 CSS 写对话气泡,其中小尖角希望和 iMessage 一样,然而似乎有些困难,网上也都是微信那种尖角。
大家有什么建议嘛……
1
mringg 2017-05-23 20:58:02 +08:00 via iPhone 4
|
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
bojackhorseman 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 4
|
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 1
|
18
geelaw 2017-05-24 04:39:35 +08:00 2
上个图,感觉自己棒棒哒
|
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 1
@islujw 啊那你可以选择在 iOS Safari 上不使用渐变,还可以 fallback 到纯色
|
33
islujw OP @geelaw 怎么让 iOS 和 macOS 的 Safari 区别用色呢?没成功诶,iOS 上总是以预先分布好的渐变示人……
|
34
geelaw 2017-05-26 19:53:57 +08:00
|
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。当然还有滑动时的气泡缓冲效果,不过这个可有可无~
|