Le contenu de cet article est de présenter la méthode CSS3 pour obtenir intelligemment l'effet de bulle de discussion. Elle a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
La révision de la page mobile que j'ai osé jouer il y a quelque temps est terminée. Le style de page précédent est plus plat, passant du fond sombre au fond clair, supprimant plus d'ombres et offrant aux utilisateurs un style d'expérience simple. haha, je ne suis pas designer, mais je vais trop commenter. Les amis intéressés peuvent accéder directement à la page d'accueil mobile d'idarex.
Tous les styles de cette révision sont écrits par orange. J'ai beaucoup de sentiments, je vais donc les partager avec vous en plusieurs fois
Passons maintenant au point. des bulles sur lesquelles nous nous sommes mis d'accord ?
Qu'est-ce qu'une bulle de discussion traditionnelle ? Il suffit d'aller sur l'image ci-dessus
Le code est le suivant
<p></p> <style> .comment { width: 150px; height: 35px; position: relative; margin: 30px auto 0; background: #f8ac09; border-radius: 5px; } .comment:after { content: ''; width: 0; height: 0; position: absolute; top: 5px; right: -16px; border: solid 8px; border-color: transparent transparent transparent #f8ac09; font-size: 0; } </style>
Tout le monde a entendu parler des méthodes d'implémentation, telles que les rectangles arrondis et les triangles. Le principe des triangles est que la bordure peut être définie comme transparente. Vous pouvez copier le code dans l'exemple ci-dessus et modifier le attribut pour explorer la mise en œuvre du triangle. border-color
.comment { position: relative; width: 150px; height: 35px; background: #f8ac09; border-radius: 5px; margin: 30px auto 0; } .comment:after { content: ''; position:absolute; top: 10px; right: -4px; width: 8px; height: 8px; transform: rotate(45deg); background-color: #f8ac09; }
transparente, comment la définir border
est un problème, n'y pensons pas pour l'instant. border
Jetons d'abord un coup d'œil au code d'implémentation rgba(247, 188, 10, 0.03)
.comment { width: 150px; height: 35px; position:relative; margin: 30px auto 0; background-color: rgba(247, 188, 10, 0.03); border: 1px solid rgba(252, 185, 8, 0.35); border-radius: 5px; } .comment:after { content: ''; width: 8px; height: 8px; position: absolute; top: 10px; right: -4px; transform: rotate(45deg); background-color: rgba(247, 188, 10, 0.03); border: 1px solid rgba(252, 185, 8, 0.35); }
.comment { width: 150px; height: 35px; position: relative; margin: 30px auto 0; background-color: #faf8f3; border: 1px solid #fbe2a0; border-radius: 5px; } .comment:after { content: ''; width: 8px; height: 8px; position:absolute; top: 10px; right: -4px; transform: rotate(45deg); background-color: #faf8f3; border: 1px solid #fbe2a0; }
.comment:after { content: ''; width: 8px; height: 8px; position: absolute; top: 10px; right: -5px; transform: rotate(45deg); background-color: #faf8f3; border: 1px #fbe2a0; border-style: solid solid none none; }
Il est réalisable dans ce cas pour des tests personnels, mais basé sur le principe de sérieuxpadding
Si. il est trop petit, quels problèmes vont survenir ? padding-right
<p>Hello,orange.Welcome to FrontEnd World!</p>
. z-index
after
à comparaître. Le vrai code du projet est le suivantbefore
.reply { position: relative; margin: 0.672rem 0 0.096rem 0; padding: 0.408rem 0.816rem; border: 1px solid rgba(#fcb908, 0.35); border-radius: 0.2rem; background-color: rgba(#f7bc0a, 0.03); &:after { content: ''; width: 0px; height: 0px; border-color: transparent transparent #faf8f3 transparent ; border-style: solid; border-width: 6px; position: absolute; top: -11px; border-radius: 3px; left: 18px; right: auto; } &:before { content: ''; width: 0px; height: 0px; border-color: transparent transparent rgba(#fcb908, 0.35) transparent; border-style: solid; border-width: 7px; position: absolute; top: -14px; border-radius: 3px; left: 17px; right: auto; } }
注:这段代码用的是 SASS 进行预编译,如果从头仔细看到这里的话不难理解,两个三角形叠加,大三角形颜色是边框的颜色,小三角形是内部背景色,小三角形绝对定位时向下移 3px 把圆角矩形的一部分上边框遮挡,这样小三角下部也有溢出,具体在两像素之内,实际上不存在遮挡文本问题。
实际问题解决的方法很多,就看大家怎么去思考,这个方案也不是最满意的方案,因为多了一个伪元素,主要还是设计思想的多样性,总之 css 很灵活。
有人不禁会问,这里设计稿给的是向上的箭头,为什么例子里却都是向右的,这里向右的都是我写的 demo ,理解原理的话,改变个位置方向都是大同小异。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!