CSSで透明な境界線を作成するにはどうすればよいですか?


101

私はli次のようなスタイルを持っています:

li{
    display:inline-block;
    padding:5px;
    border:1px solid none;
}
li:hover{
    border:1px solid #FC0;
}

li境界線をホバーすると、li'をシフトせずに境界線が表示されます。見えない「ボーダー」を持つことは可能ですか?

回答:


107

色は「透明」が使えます。IEのいくつかのバージョンでは、それは黒く見えますが、IE6の日以来、私はそれをテストしていません。

http://www.researchkitchen.de/blog/archives/css-bordercolor-transparent.php


3
それは、IE8、Mozilla、Opera、Chromeで動作しました。私には十分です。Safariでは試しませんでしたが、Safariはあまり気にしていません。どうもありがとう!
ウィリアムCalleja

5
ええ、これが機能しないのは、具体的にはIE6です。IE7は問題ありません。
ボビンス、2010年

これは残念ながらうまくいきませんでした。要素が完全に境界から作られた疑似after要素を使用してしまいました...なんてめちゃくちゃなのでしょう!
Alex

51

透明な境界線ではなく不透明な境界線の解決策を見つけるには、多くの人がここに着陸している必要があります。あなたが使用することができ、その場合にはrgbaaの略ですalpha

.your_class {
    height: 100px;
    width: 100px;
    margin: 100px;
    border: 10px solid rgba(255,255,255,.5);
}

デモ

ここでは、変更できるopacityのをborderから0-1


あなたは、単に完全な透明国境をしたい場合は、使用する最善のことはあるtransparentように、border: 1px solid transparent;


そして、あなたはRGBA色に進から変換するには、このツールを使用することができます... hexcolortool.com ...あなたは、必要に応じてのように、URLに六角色を指定できそう... hexcolortool.com/#ffcc00
clayRay

32

ボーダーを削除してパディングを増やすことができます:

li {
  display: inline-block;
  padding: 6px;
  border-width: 0px;
}

li:hover {
  border: 1px solid #FC0;
  padding: 5px;
}
<ul>
  <li>Hovering is great</li>
</ul>


まあ、これは魅力のように機能しました、それを行う方法をより明確な方法があるかどうか疑問に思いましたか?目に見えない境界線があったとしても、提案を再度ありがとう。
ウィリアムCalleja

3
これは、私にとってより互換性のあるソリューションのように
思え

必要な方法とは逆のコードが機能することに気づきました!修繕。また、透明色を選びます。私はそれについて知らなかった:D
Matt Ellen

たとえば(私の場合)完全にクリック可能な<a/>ボックスが必要な場合は、ボーダーを減らしてパディングを増やしても意味がありません。ボーダーは要素(つまりクリック可能)に属し、パディングは親に属します。
ニコ

13

ねえ、これは私が今まで経験した中で最高のソリューションです。これはCSS3です

divまたは次のプロパティを使用して、境界線を透明にします

例えば

div_class { 
 border: 10px solid #999;
 background-clip: padding-box; /* Firefox 4+, Opera, for IE9+, Chrome */
}

これは動作します。


4

うん、あなたは使うことができます border: 1px solid transparent

別の解決策はoutline、ドキュメントフローに影響を与えないホバーで使用することです(ボーダーを0に設定します)。

li{
    display:inline-block;
    padding:5px;
    border:0;
}
li:hover{
    outline:1px solid #FC0;
}

NB。輪郭は、個別の側面ではなく、シャードハンドプロパティとしてのみ設定できます。デバッグに使用することのみを目的としていますが、うまく機能します。


どうもありがとう!私が持っているオプションが多いほど
ウィリアム・カジェハ

3

コメントであなたが持っているオプションは多いほど良いと言ったので、ここにもう一つあります。

CSS3には、2つの異なる「ボックスモデル」があります。1つはブロック要素の幅にボーダーとパディングを追加し、もう1つは追加しません。後者を指定することで使用できます

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;

次に、最新のブラウザでは、要素は常に同じ幅になります。つまり、ホバー時にボーダーを適用すると、ボーダーの幅は要素の全体の幅に追加されません。境界線は、いわば要素の「内側」に追加されます。ただし、私が正しく覚えている場合width、これを機能させるには明示的に指定する必要があります。この特定のケースでは、これはおそらくオプションではありませんが、将来の状況に備えてそれを覚えておくことができます。


これは、透明な境界線の使用例の1つかもしれません-ホバーに境界線を適用する代わりに、その色を透明から見えるものに変更します。
DaveWalley、2014年

2

このブログエントリには、border-color: transparentIE6でエミュレートする方法があります。以下の例には、ブログエントリのコメントに含まれる「hasLayout」修正が含まれています。

/* transparent border */
.testDiv {
    width: 200px;
    height: 200px;
    border: solid 10px transparent;
}
/* IE6 fix */
*html .testDiv {
    zoom: 1;
    border-color: #FEFEFE;
    filter: chroma(color=#FEFEFE);
}

border-colorIE6フィックスで使用されているが、.testDivエレメント内のどこでも使用されていないことを確認してください。私からの例を変更pinkする#FEFEFEことも少なく使用される可能性が高いようなので。


0

これに対する最も簡単な解決策はrgba、色として使用することです。border-color: rgba(0,0,0,0);これは完全に透明な境界線の色です。


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