QQスペースのコメントについて少し調べてみました Reply_html/css_WEB-ITnose
コメントに返信することは非常に一般的なことですが、主要な Web サイトごとに実装方法が異なります。大きく分けて 2 つの方法があります
1.
最も一般的な方法は、Youku のように、入力ボックスに返信したい相手の @ を変更する方法です。
Sina Weibo はこれに基づいて友達メニューをポップアップします。この方法の利点は、互換性のための js または css 処理が必要ないことです。
2.
QQスペース同様、リプライ頂いた方は全て削除させて頂きます。この方法の方が良いと思いますが、この方法には互換性の詳細があり、後で詳しく説明します。
実際、QQ スペースの実装は IE および最新のブラウザーと事実上互換性があり、非常によくできています。上記はchrome
ie8
ie7
ie6です。 最後に、最終的な例も添付します。 ie6で。
それを達成する方法について話しましょう。
まず qq スペースがどのように機能するかを見てみましょう
chrome
上でわかるように、qq スペースはボタンにテキストを追加するため、削除するときに、返信されたユーザー名を完全に削除できます。
しかし、これでは十分ではありません。最初のスタイルは、ボタンをインラインブロックに設定する必要があります。
ボタンのデフォルトの透明な背景と境界線を削除し、もちろんパディングとマージンを 0 に設定します。
button{ border: 0; background:none; }
この時点で ie6 で 7 に挿入すると、パディングがあるように見えますが、まだ非常に大きいです
したがって、IE8 では、overflow:visible; を追加する必要があります。入力時にキャリッジ リターンがあり、削除プロセス中にボタン ラベルを削除できないことがわかります。カーソルがボタン ラベルの前に移動し、もう一度右カーソル キーを押すか、マウスでボタンをクリックしても、ラベルの右側にカーソルは移動できません。実際、QQ スペースでも ie8
ie8
でも ie6 と 7 ではそのような問題はありません
ie7
ie6
ここでは、テキストボックスをバインドする必要がありますie8 keydown イベントのコールバック check_comment は IE6 と 7 にバインドしても問題ありません。ここでは一律に IE にバインドします。
function getPositionForTextArea(ctrl) { //获取光标位置 var CaretPos = 0; if(document.selection) { ctrl.focus(); var Sel = document.selection.createRange(); var Sel2 = Sel.duplicate(); Sel2.moveToElementText(ctrl); var CaretPos = -1; while(Sel2.inRange(Sel)){ Sel2.moveStart('character'); CaretPos++; } }else if(ctrl.selectionStart || ctrl.selectionStart == '0'){ CaretPos = ctrl.selectionStart; } return (CaretPos); } vm.check_comment=function(e,i){ var a=getPositionForTextArea($('reply'+i)); if(e.keyCode==8&&a<3){ var pat = new RegExp("^<p><button .*?>.*?</button> </p>$",'i'); if(pat.test(this.innerHTML)) this.innerHTML=''; } };
カーソル位置が 3 未満の場合は、ボタンのラベルがカーソルの前にあり、入力ボックスをクリアできることを示します。厳密さを期すために、ボタン ラベルであるかどうかを確認するために正規表現が使用されることに注意してください
さらに、IE が Enter キーを押して行を変更すると、正規表現内で p ラベルがボタン ラベルの周囲にラップされます。デフォルトでは、前の行で p ラベルが自動的に折り返されます。もちろん、最初は入力ボックスの button タグの外側で p タグをラップする必要があります。
余談
qq space は ff
で img タグを使用します 最近のブラウザでは qq space が一律に img タグを使用していると思って書いていましたが、chrome でも使用されていることが分かりました。一つはbuttonタグなので、Chromeの下にimgタグを入れてみたところ、境界線が削除できないことが分かりました。また、最近のブラウザは挿入するため、削除する際にバインディング内のカーソル位置の判定がIEと一致しません。
はデフォルトで改行されるため、単純に chrome の button タグを使用しました。
さらに、私の例では、ボタンのラベルが ff に挿入されている場合、入力ボックスは簡単にフォーカスを取得しません。私はそれを変更するのが面倒なので、対応する keydown コールバック
if(!!-[1,]&&e.keyCode==8&&$('reply'+i).childNodes.length==2){//ff this.innerHTML=''; return; }
に img タグを挿入するだけで済みます。
最終効果
クローム
ff
ie8
ie7
ie6
添付サンプルのダウンロード
この記事の内容が当てはまらないと思われた方はそれが役立つなら、あなたにとって便利です、あなたは私を傾けることができます:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。
