この記事の内容は、チャットバブル効果を賢く実現するCSS3の方法を紹介するもので、困っている方は参考にしていただければ幸いです。
先ほど思い切ってプレイしたモバイル ページの改訂が完了しました。以前のページ スタイルはよりフラットになり、暗い背景から明るい背景に変更され、より多くの影が削除され、ユーザーにシンプルなデザインが提供されました。経験スタイル、笑、私はデザイナーではありませんが、あまりにもコメントします。興味のある友人は、idarex モバイル ホームページに直接アクセスしてください。
このリビジョンのすべてのスタイルは orange によって書かれています。私はそれらを分割して共有します。
さて、チャットバブルはどこにあるのか。私たちは同意しましたか?
画像のすぐ上にある従来のチャット バブルとは何ですか
##コードは次のとおりです<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>
注: IE8 の以前のバージョンでは、透明な境界線があまり適切にサポートされていませんでした。ほとんどのブラウザは正常に表示されるため、下位バージョンの欠陥は無視してかまいません。互換性が必要な場合は、透明属性をバブルの背景色ではなくメインの背景色に設定してください (背景が単色の場合)。
.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; }
# 全体的には非常に優れています。いくつかの方法には信頼性があり、大きな互換性の問題はありません。
現実的なケースここのデザイン ドラフトには余分な枠線があります。デザイン ドラフトを直接アップロードできますか。これに対処する方法を考えてみましょう。上記の
最初のメソッド自体はborder
を透明に設定する方法が問題ですが、やめておきます。とりあえず検討してみてください。2 番目の方法で小さな正方形の回転を使用する場合、デザイン ドラフトのバブルの背景が
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); }
1. 小さな正方形を上に重ねると、小さな正方形の左半分の境界線が表示されます。前の図と比較すると、次のようになります。 , 角丸長方形の右側は確かに覆われていますが、小さな正方形の左側の境界線は
と表示されています。.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; }
padding
が含まれています。この場合、個人的なテストでは実行可能ですが、真剣さの原則に沿っています。padding-right
小さすぎるとどのような問題が発生しますか?pにテキストを追加します。
.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; }
結果は次のとおりです
z-index
属性ハックを渡すこともできます。 2. 小さな正方形が角丸長方形の下にある場合、角丸長方形の右側の境界線が完全に表示されます。この解決策は自分で決めることができますが、私はそうではありません。説明しすぎると。上記の方法の欠点も明らかです。では、需要の変化に応じて筋肉や骨を傷つけずに、より厳密に行うにはどうすればよいでしょうか。
トライアングルプランも利用しております!三角解法は実現不可能ということではないでしょうか? 1つの三角形は無理です。2つについては、
の兄弟である
beforeに登場してもらいました。プロジェクトの実際のコードは次のとおりです
.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 ,理解原理的话,改变个位置方向都是大同小异。
以上がCSS3でチャットバブル効果を実装するにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。