我有一个<div>
元素,我想在它上面加一个边框。 我知道我能够写style="border: 1px solid black"
,但这会增长2px到div的任何一侧,这不是我想要的。 css
我宁愿让这个边界距离div的边缘是-1px。 div自己是100px x 100px,若是我添加一个边框,那么我必须作一些数学来使边框出现。 css3
有什么方法可让边框出现,并确保框仍然是100px(包括边框)? web
你也能够像这样使用box-shadow: 浏览器
div{ -webkit-box-shadow:inset 0px 0px 0px 10px #f00; -moz-box-shadow:inset 0px 0px 0px 10px #f00; box-shadow:inset 0px 0px 0px 10px #f00; }
示例: http : //jsfiddle.net/nVyXS/ (悬停到查看边框) ide
这仅适用于现代浏览器。 例如:没有IE 8支持。 有关详细信息, 请参阅caniuse.com(框阴影功能) 。 spa
我知道这有点旧,但因为关键词“border inside”让我直接来到这里,我想分享一些可能值得一提的发现。 当我在悬停状态下添加边框时,我获得了OP正在谈论的效果。 边框将像素广告到框的尺寸,使其变得有弹性。 还有两种方法能够解决这个问题,这也适用于IE7。 .net
1)边框已经附加到元素上,只需更改颜色便可。 这种方式已经包含了数学。 ssr
div { width:100px; height:100px; background-color: #aaa; border: 2px solid #aaa; /* notice the solid */ } div:hover { border: 2px dashed #666; }
2)以负余量补偿边界。 这仍然会添加额外的像素,但元素的定位不会跳跃 code
div { width:100px; height:100px; background-color: #aaa; } div:hover { margin: -2px; border: 2px dashed #333; }
最好的跨浏览器解决方案(主要用于IE支持)如@Steve所说的是在宽度和高度上设置一个div为98px而不是在它周围添加1px的边框,或者你能够为div 100x100 px制做背景图像并在其上绘制边框。 get
多是迟来的回答,但我想与个人发现分享。 我找到了两个新方法来解决这个问题,我在答案中没有找到:
box-shadow
css属性 是的,box-shadow用于向元素添加框阴影。 可是你能够指定inset
阴影,它看起来像一个内边框而不是阴影。 您只须要将水平和垂直阴影设置为0px
,并将box-shadow
的“ spread
”属性设置为您想要的边框宽度。 所以,对于10px的“内部”边界,您将编写如下内容:
div{ width:100px; height:100px; background-color:yellow; box-shadow:0px 0px 0px 10px black inset; margin-bottom:20px; }
这是jsFiddle示例,说明了box-shadow
边框和“普通”边框之间的区别。 这样你的边框和盒子宽度总共100px,包括边框。
关于box-shadow的更多信息: 这里
这是另外一种方法,但这种方式边框将在框外。 这是一个例子 。 以下例所示,您可使用css outline
属性来设置不影响元素宽度和高度的边框。 这样,边框宽度不会添加到元素的宽度。
div{ width:100px; height:100px; background-color:yellow; outline:10px solid black; }
更多关于大纲: 这里
雅虎 这确实是可能的。 我找到了。
对于底边:
div {box-shadow: 0px -3px 0px red inset; }
对于顶级边框:
div {box-shadow: 0px 3px 0px red inset; }