改行や水平スペースを作成しない非表示のdivをどのように作成しますか?


354

画面のスペースを取らない非表示のチェックボックスが欲しいのですが。

これがあれば:

<div id="divCheckbox" style="visibility: hidden">

チェックボックスは表示されませんが、それでも新しい行が作成されます。

これがあれば:

<div id="divCheckbox" style="visibility: hidden; display:inline;">

新しい行は作成されなくなりましたが、画面の水平方向のスペースを占有します。

スペースを取らない隠しdivを作成する方法はありますか(垂直または水平)?


そのようなdivの用途はありますか?
Jonno_FTW

6
@ジョンノ:AJAXで一般的に使用されています。三角形の情報が表示されているアイテムのリストがあるとします。ユーザーが開閉用三角ボタンをクリックしたときに、詳細またはサブツリーが表示されるようにします。したがって、詳細は<div id = "theID" style = "display:none;">を配置するだけです。次に、ユーザーが三角形をクリックしたときに、三角形を「途中」の位置(南東を指す)に移動し、AJAXリクエストを発行して<div>に入力します。AJAX要求が完了したら、三角形を南に向けて、「display:none」を削除します。<div>のスタイルから。script.aculo.usライブラリはこれをたくさん行います。
Mike DeSimone、2010年

回答:


717

使用する display:none;

<div id="divCheckbox" style="display: none;">
  • visibility: hidden 要素を非表示にしますが、レイアウトのスペースを占有します。

  • display: none 要素をドキュメントから完全に削除します。スペースを取りません。


42
divをもう一度表示するため(誰かが私がしたように必要な場合に備えて)<div id="divCheckbox" style="display: inline-block;">
anjinn 2013年

14
@anujin:なぜinline-blockdisplaydiv のデフォルト値はblock
MMM 2014年

反対を行う方法はありますか?現在表示されているdivがスペースを取り、他のDOM要素を移動せずに、divをdisplay: noneからdisplay: inline-blockまたは同等のものに変更するには?
bpromas

1
HTML から直接ですが基本的に言っているのと同じHTML5.1以降で使用可能なグローバルHTML属性hiddenを含めるように回答を更新する価値があるかもしれません。ただし、このプロパティを使用すると、グローバル属性の動作が上書きされます。display: nonedisplayhidden
マリウス・ムセニク

54

HTML5のリリース以降、次のことが簡単にできるようになりました。

<div hidden>This div is hidden</div>

注:これは一部の古いブラウザ、特にIE <11でサポートされていません。

非表示属性のドキュメント(MDNW3C


1
これは、CSSを使用して非表示にするよりも意味的に正しく、アクセシビリティに優れており、すべての主要なブラウザーでサポートされています。それは2020年で受け入れ答えなければなりません
ロビンMETRAL

29

を使用しstyle="display: none;"ます。また、おそらくDIVは必要ありませんdisplay: none。チェックボックスでスタイルをに設定するだけで十分でしょう。


ページの読み込み時に警告メッセージを非表示にする必要があり、ボタンをクリックすると再び表示されるようにしました。試しましたvisibility: hiddenが、それは空のスペースを示していました。style="display: none;"小さな魅力のように働きました:)
sohaiby

8

CMSの回答に加えて、次のように、スタイルを外部スタイルシートに入れ、IDにスタイルを割り当てることを検討することをお勧めします。

#divCheckbox {
display: none;
}

+1、それは本当に良い提案ですが、他のすべてのチェックボックスの可視性に影響を与えずに1つのチェックボックスのみを表示する方法は?
Owais Qureshi 2013

1
@dotNetSoldier古い質問ですが、ここに答えがあるはずです。invisというcssクラスがあり、JSを使用してチェックボックスまたはIDによるdivから追加/削除します。
DanielST 2014

8

CSSの使いやすさと一般性に焦点を当てる必要があるため、特定のレイアウト要素を指すためにIDを使用するのではなく(巨大または複数のcssファイルが作成される)、リンクされた.cssファイルで真のクラスを使用する必要があります。

.hidden {
visibility: hidden;
display: none;
}

またはミニマリストの場合:

.hidden {
display: none;
}

これで、次のように簡単に適用できます。

<div class="hidden"> content </div>

この方法では、コードはかなりきれいに見えます!インラインスタイルよりもクラスの方が好きです
Harry Cho

5

を使用<span>して、レイアウトを壊さずにスタイル設定するマークアップの小さなセグメントを分離することを検討してください。これは<div>、実際にはチェックボックス自体を希望どおりにスタイル設定できない場合に、にそれ自体を表示させないようにするよりも慣用的なようです。


4

マウスクリックで表示/非表示:

<script language="javascript">

    function toggle() {

        var ele = document.getElementById("toggleText");
        var text = document.getElementById("displayText");

        if (ele.style.display == "block") {

            ele.style.display = "none";
            text.innerHTML = "show";
        }
        else {

            ele.style.display = "block";
            text.innerHTML = "hide";
        }
    }
</script>

<a id="displayText" href="javascript:toggle();">show</a> <== click Here

<div id="toggleText" style="display: none"><h1>peek-a-boo</h1></div>

出典:こちら


4

チェックボックスがDOMから削除せずにスペースを占有しないようにするには、を使用しますhidden

<div hidden id="divCheckbox">

チェックボックスがスペースを取らず、DOMから削除されないようにするには、を使用しますdisplay: none

<div id="divCheckbox" style="display:none">

3

要素を視覚的に非表示にするには、それをhtmlに保持するには、次のように使用できます。

<div style='visibility:hidden; overflow:hidden; height:0; width:0;'>
  [content]
</div>

または

<div style='visibility:hidden; overflow:hidden; position:absolute;'>
  [content]
</div>

何が問題になるのdisplay:noneでしょうか?HTMLから要素を完全に削除するため、非表示の要素にアクセスする必要がある場合、一部の機能が壊れる可能性があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.