边境外的CSS

use*_*320 50 css border

我希望能够在我的Div外面画一个边框!因此,如果我的div是20px乘20px,我想要一个1px边界(在本质上,我得到一个div 22x22px大).

我明白我可以让div 22x22开始,但由于我的原因,我需要边界在外面.

CSS大纲有效,但我只想要border-bottom或border-top thingy,所以像outline-bottom这样的东西不起作用,就是我想要的.

有没有办法做到这一点?

谢谢

Bea*_*Hat 57

我想你已经对这两个属性有了一点了解.边框影响元素的外边缘,使元素的大小不同.大纲不会改变元素的大小或位置(不占用空间)并超出边界.根据您的描述,您要使用border属性.

在浏览器中查看下面的简单示例:

<div style="height: 100px; width: 100px; background: black; color: white; outline: thick solid #00ff00">SOME TEXT HERE</div>

<div style="height: 100px; width: 100px; background: black; color: white; border-left: thick solid #00ff00">SOME TEXT HERE</div>
Run Code Online (Sandbox Code Playgroud)

注意边框如何推动底部div,但轮廓不会移动顶部div,轮廓实际上与底部div重叠.

你可以在这里阅读更多相关信息:
Border
Outline


Ben*_*roo 14

尝试大纲属性W3Schools - CSS Outline

大纲不会干扰元素/ div的宽度和长度!

请点击我在底部提供的链接,查看可以制作边框的不同方法的工作演示,以及内部/内联边框,甚至是不会破坏元素尺寸的边框!不需要每次都添加额外的div,如另一个答案所述!

您还可以将边框与轮廓结合使用,如果愿意,还可以使用框阴影(也通过链接显示)

<head>
   <style type="text/css" ref="stylesheet">
      div {
        width:22px;
        height:22px;
        outline:1px solid black;
      }
   </style>
</head>
<div>
    outlined
</div>
Run Code Online (Sandbox Code Playgroud)

通常默认情况下,'border:'将边框放在宽度的外侧,测量,添加到整体尺寸,除非您使用'inset'值:

div {border: inset solid 1px black};
Run Code Online (Sandbox Code Playgroud)

但是'outline:'是边框之外的额外边框,当然还会为元素增加额外的宽度/长度.

希望这可以帮助

PS:我也受到启发为你做这个:使用边框,轮廓和盒子阴影

  • Outline 是一项辅助功能,以这种方式劫持它可能不是最好的方法。它旨在用于为有视力障碍的人突出显示活动元素。 (5认同)

dfs*_*fsq 11

IsisCode为您提供了一个很好的解决方案.另一个是将border div 放在父div中.查看此示例http://jsfiddle.net/A2tu9/

UPD:你也可以使用伪元素:after(:before),在这种情况下,HTML不会被额外的标记污染:

.my-div {
    position: relative;
    padding: 4px;
    ...
}
.my-div:after {
    content: '';
    position: absolute;
    top: -3px;
    left: -3px;
    bottom: -3px;
    right: -3px;
    border: 1px #888 solid;
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/A2tu9/191/


K-G*_*Gun 8

为什么不简单地使用background-clip

-webkit-background-clip: padding;
   -moz-background-clip: padding;
        background-clip: padding-box;
Run Code Online (Sandbox Code Playgroud)

请参阅:
http://caniuse.com/#search=background-clip
https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip
https://css-tricks.com/almanac /属性/ b /背景夹


chr*_*raj 6

太晚了,但我遇到了类似的问题.我的解决方案是伪元素 - 没有额外的标记,你可以在不影响宽度的情况下绘制边框.绝对定位伪元素(主要定位相对)和whammo.

见下文,JSFiddle http://jsfiddle.net/mcx6m/

.hello {
    position: relative;
    /* Styling not important */
    background: black;
    color: white;
    padding: 20px;
    width: 200px;
    height: 200px;
}

.hello::before {
    content: "";
    position: absolute;
    display: block;
    top: 0;
    left: -5px;
    right: -5px;
    bottom: 0;
    border-left: 5px solid red;
    border-right: 5px solid red;
    z-index: -1;
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*iaz 6

我根据您的需要分享了两种解决方案:

<style type="text/css" ref="stylesheet">
  .border-inside-box {
    border: 1px solid black;
  }
  .border-inside-box-v1 {
    outline: 1px solid black; /* 'border-radius' not available */
  }
  .border-outside-box-v2 {
    box-shadow: 0 0 0 1px black; /* 'border-style' not available (dashed, solid, etc) */
  }
</style>
Run Code Online (Sandbox Code Playgroud)

示例:https : //codepen.io/danieldd/pen/gObEYKj

  • “box-shadow”的伟大用途!对于底线:`box-shadow: 0 1px 0 0 black;` (3认同)