2013-06-03 10 views
11

div内に "border"を持つdivを作成する方法があるかどうか疑問に思っていました。私の言いたいことは:例えば200pxのdivを持っていて、それを越えずに境界線を200ピクセル以内にしたいのです。div内のボーダーを設定するには

私は、境界線を持つdivの効果を、図形の端になく、5px内側にする必要があります。

http://jsfiddle.net/hpLYD/1/

CSS:ここ

circle inside-borded

私のコードです:

.circle { 
    border-radius: 50%; 
    width: 200px; 
    height: 200px; 
    background: red; 
    border: 3px solid blue; 
} 

パディング画像は、数百の言葉

私はこれをしたいが、以上のことを話すことができますプロパティは、ボーダーを含むdiv全体。

どのようにしてその効果をCSSだけで達成できますか?出来ますか?

+0

注: '境界:点線/破線;' Firefoxで動作していない、それはいずれにせよ固体としてレンダリング(境界半径のとき適用される)。 – pwnjack

答えて

17

CSS3プロパティbox-shadowを使用してこれを行うことができます。あなたのCSSに以下を追加します。

box-shadow: 0px 0px 0px 5px #f00; 

jsFiddle example

+1

私が欲しかったのはシャドウです。シャドーはサークルの200pxの難易度を超えていますが、そのプロパティでは簡単に195pxに減らし、3pxのシャドウと2pxのボーダーを持って対策の中に入れます!ありがとう。 – pwnjack

+0

匿名の臆病者downvoterは問題を説明するために気をつけますか? – j08691

1

あなたはしかし、あなたがその効果を与えるためにbox-shadowを使用することができ、要素内に境界線を配置することはできません。

.circle { 
    border-radius: 50%; 
    width: 190px; 
    height: 190px; 
    background: red; 
    border: 3px solid blue; 
    box-shadow: 0px 0px 0px 10px red; /* 10px box-shadow */ 
} 

JSFiddle example

ただし、これはCSS3スタイルのプロパティであり、一部のブラウザではサポートされていません。一部のブラウザでベンダープレフィックスを使用する必要がある場合もあります(-webkit-mozなど)。サポートについては、http://caniuse.com/#search=box-shadowを確認してください。

+0

私はベンダープレフィックスを知っていますが、これは私の例では単純ではありませんでしたが、とにかくそれを事前に評価し、その "caniuse"ウェブサイトを共有していただきありがとうございます。 ;) – pwnjack

+0

私は、あなたのサンプルコードよりも 'box-shadow'プロパティの方が多く言及していました。 '-webkit-box-shadow'と' -moz-box-shadow'を使用しています。 –

0

サークルに別のクラスを追加できるとします。

私はこれをあなたのためにしました。

丸いボーダーにパディングを追加することはできませんが、私は約30秒でフィドルを行いました。

.scirle {see fiddle} 

http://jsfiddle.net/hpLYD/7/embedded/result/

6

ボックス影が最も可能性が高い行くための最善の方法ですが、人々は疑問が境界が200pxのを超えていないことを必要とすることを忘れているようです。実際にこれを実現するには、ボックスシャドウアトリビュート(内側シャドウを作成する)にinsetパラメータを使用できます。

また、box-sizingborder-boxに変更する必要があります。そのサイズは、コンテンツではなく境界に比例します。

Here's an JSFiddle with the result

.circle { 
    border-radius: 50%; 
    width: 200px; 
    height: 200px; 
    background: red; 
    border: 3px solid red; 
    box-shadow: 0px 0px 0px 5px blue inset; 
    box-sizing: border-box; 
} 
+0

box-sizingプロパティを導入していただきありがとうございます。これは接頭辞付きの寸法でその効果を得るのに非常に便利です。 – pwnjack

0

問題は国境は、我々はそれを好きかどうか、画面の不動産を占めています。

1pxボーダーが100px要素にある場合、内部に表示されても、その要素は98px以内になります。しかし、現実には100pxの要素があります。実際には102pxですが、外側の境界線が原因です。ボーダーボックスは、最新のChromeの枠線には何もしないように見えます。常に外に表示されます。

これを簡単に解決するには、絶対的に配置されたCSS :afterまたは:before要素を使用します。これは、基本的に、境界線によって失われる画面スペースがないことを意味します。例を参照してください

.border{ position: relative; } 
.border{ content:''; position:absolute; left:0; right:0; top:0; bottom:0; border:1px dashed rgba(50,50,50,0.5); } 
2
<div class="mydiv"></div> 

.mydiv{ 
    position:relative; 
    height:150px; 
    width:200px; 
    background:#f00; 
} 
.mydiv:before{ 
    position:absolute; 
    content:''; 
    position: absolute; 
    top: 10px; 
    bottom: 10px; 
    left:10px; 
    right: 10px; 
    border:1px solid #daa521; 
} 

Here's an JSFiddle with the result

enter image description here

+0

これは本当に良いソリューションですDishanありがとう – MehranTM

関連する問題