web-dev-qa-db-ja.com

HTMLでボックスの内側の境界線を作成する方法は?

HTMLでボックスの内側の境界線を作成する方法は?

次の図を参照してください:

What I want

7
DigiMan

これを見てください、私たちは単にこれをoutline-offsetプロパティ

出力画像は次のようになります

enter image description here

.black_box {
    width:500px;
    height:200px;
    background:#000;
    float:left;
    border:2px solid #000;
    outline: 1px dashed #fff;
    outline-offset: -10px;
}
<div class="black_box"></div>
42
Jishnu V S
  1. アウトラインにdashedボーダースタイルを使用します。
  2. 描画background-color with :beforeまたは:after擬似要素。

注:この方法により、ブラウザを最大限にサポートできます。

出力画像:

Output Image

* {box-sizing: border-box;}

.box {
  border: 1px dashed #fff;
  position: relative;
  height: 160px;
  width: 350px;
  margin: 20px;
}

.box:before {
  position: absolute;
  background: black;
  content: '';
  bottom: -10px;
  right: -10px;
  left: -10px;
  top: -10px;
  z-index: -1;
}
<div class="box">

</div>
4
Mohammad Usman

HTML:

<div class="outerDiv">
    <div class="innerDiv">Content</div>
</div>

CSS:

.outerDiv{
    background: #000;
    padding: 10px;
 }

 .innerDiv{
     border: 2px dashed #fff;
     min-height: 200px; //adding min-height as there is no content inside

 }
2
Taniya

box-shadowを使用し、background-clipを介してその破線borderに透明度を追加して、bodybackgroundを表示することもできます。

h1 {
  text-align: center;
  margin: auto;
  box-shadow: 0 0 0 5px #1761A2;
  border: dashed 3px #1761A2;
  background: linear-gradient(#1761A2, #1761A2) no-repeat;
  background-clip: border-box;
  font-size: 2.5em;
  text-shadow: 0 0 2px white, 0 0 2px white, 0 0 2px white, 0 0 2px white, 0 0 2px white;
  font-size: 2.5em;
  min-width: 12em;
}
body {
  background: linear-gradient(to bottom left, yellow, gray, tomato, purple, Lime, yellow, gray, tomato, purple, Lime, yellow, gray, tomato, purple, Lime);
  height: 100vh;
  margin: 0;
  display: flex;
}
::first-line {
  color: white;
  text-transform: uppercase;
  font-size: 0.7em;
  text-shadow: 0 0
}
code {
  color: tomato;
  text-transform: uppercase;
  text-shadow: 0 0;
}
em {
  mix-blend-mode: screen;
  text-shadow: 0 0 2px white, 0 0 2px white, 0 0 2px white, 0 0 2px white, 0 0 2px white
}
<h1>transparent dashed border<br/>
  <em>with</em> <code>background-clip</code>
</h1>

遊ぶペン

firefoxでレンダリング: screenshot from the snippet

2
G-Cyr

ご覧ください

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <style>
    .box{ width:500px; height:200px; background:#000; border:2px solid #ccc;}
        .inner-border {
            border: 20px solid black;
            box-shadow: inset 0px 0px 0px 10px red;
            box-sizing: border-box; /* Include padding and border in element's width and height */
        }
        /* CSS3 solution only for rectangular shape */
        .inner-outline {
            outline: 10px solid red;
            outline-offset: -30px;
        }
    </style>
    </head>

    <body>
    <div class="box inner-border inner-outline"></div>
    </body>
    </html>
2
.blackBox {
    width: 100%;
    height: 200px;
    background-color: #000;
    position: relative;
    color: cyan;
    padding: 20px;
    box-sizing: border-box;
}

.blackBox::before {
        position: absolute;
    border: 1px dotted #fff;
    left: 10px;
    right: 10px;
    top: 10px;
    bottom: 10px;
    content: "";
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<div class="blackBox">Created an inner border box. <br> Working fine all major browsers.</div>

</body>
</html>
1
Vinod Kumar

IEはアウトラインオフセットをサポートしていないため、別の解決策は2つのdivタグを作成し、一方を他方にネストすることです。内側のものには境界線があり、コンテナよりもわずかに小さくなります。

.container {
  position: relative;
  overflow: hidden;
  width: 400px;
  height: 100px;
  background: #000000;
  padding: 10px;
}
.inner {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
  background: #000000;
  border: 1px dashed #ffffff;
}
<div class="container">
  <div class="inner"></div>
</div>
1
Martina Sartor