如果您需要仅在元素的三侧添加边框,则有多种方法可以实现。
您可以专门声明仅三侧的边框
div {
border-top: 1px solid red;
border-right: 1px solid red;
border-bottom: 1px solid red;
}
冗长,但易于理解。
或者,您可以只声明一个 border
,它将覆盖所有四侧,然后移除您不需要的那一侧。
div {
border: 1px solid red;
border-left: 0;
}
更简洁,但依赖于理解并维护边框移除覆盖在边框声明之后。
或者,您可以声明颜色和样式,并使用简写形式仅 border-width
来专门声明三侧。
div {
border-color: red;
border-style: solid;
border-width: 1px 1px 1px 0;
}
比第一个示例更简洁,但重复性较低。只需要注意,如果左侧边框获得了宽度,它将已经是红色和实线。
然后还有边框会影响常规盒模型下元素大小的事实。如果您想添加边框而不增加元素的大小,则需要依赖 CSS3。以下是如何使用内阴影来实现的方法
div {
-webkit-box-shadow:
inset -1px 0 0 red,
inset 0 -1px 0 red,
inset 0 1px 0 red;
-moz-box-shadow:
inset -1px 0 0 red,
inset 0 -1px 0 red,
inset 0 1px 0 red;
box-shadow:
inset -1px 0 0 red,
inset 0 -1px 0 red,
inset 0 1px 0 red;
}
但是,内阴影的浏览器支持远不如边框。例如,上面的代码仅在 Internet Explorer 9 及更高版本中有效。如果您更愿意使用边框,并且仍然不影响元素的大小,则可以尝试使用 box-sizing,它支持到 IE 8。
哦,选择!这是一件很小的事情,但我认为这是一个很好的例子,说明在 CSS 中通常有许多不同的方法可以实现相同的事情。如果您刚开始学习 CSS,这种事情会让您感到困惑还是非常简单呢?
轮廓怎么样?它类似于边框,但不是盒模型的一部分,因此不会增加宽度。
据我所知,无法使用轮廓只获得三侧。
啊,抱歉 - 似乎无法指定可以轮廓的哪几侧。不知道为什么!?
我认为这是一篇毫无意义的帖子,无需进一步讨论。
这个怎么样
div { border: 1px 1px 1px 0 solid red; }
我认为这不起作用?除非我疯了。
我在这里将其作为示例 5:http://jsbin.com/three-sided-border/14/edit
那不起作用,虽然有也不错。不过我更喜欢第二种方法。
第二种选择是我一直使用的方法 - 只需提供所有边框,然后移除我不需要的边框。简单,代码量很少,并且跨浏览器兼容。
尽管我喜欢能够快速看到我正在移除一个边缘的能力,但 Maurice 的代码也是一个非常不错、简单的选项 - 这让我对移除操作更加了解,这仅仅是我的个人偏好。
那也是我偏好的方法。
它只有两行代码,并且您只声明一次颜色。
我在测试时会查看哪种方法最易于维护。
使用 No.2,您只需要更改一个词即可更改颜色、边或宽度。
No.3 也非常接近,但它有三行代码,并且要更改一侧需要对一行代码进行两次更改。幸运的是,使用快速 grep 可以轻松更改宽度。
Maurice。我一直都是这么做的。它比显示的任何其他示例都占用更少的空间。
你们在哪个浏览器上看到它起作用的?
当我第一次开始使用边框时,我使用了一段时间第一个示例,在学习了更多 CSS 后,我开始使用第二个示例,直到最近(大约 3 或 4 个月前),我一直在使用最后一个示例。
尽管我不想承认,但我很可能出于方便会使用第一个示例 :)
有时当我想关闭边框时,我会将边框颜色设置为透明,尤其是在它应该保持其宽度时(例如,当边框随悬停切换打开或关闭时)。
我通常就是这样做的
border: solid red;
border-width: 1px 1px 1px 0;
它类似于第三个示例,但更简洁。:3
我喜欢这个 :)
这绝对可以。我通常使用示例 #2,但我想我可能会尝试这个。就像 Chris 说的那样,
“在 CSS 中通常有许多不同的方法可以实现相同的事情”
我们只需要选择一个长期不会造成麻烦的方法。
我以前从未了解过 border-width 简写形式。这是一个我经常遇到的问题,所以我很高兴找到一个更好的方法。
是的,我同意
它更简单
在需要三边框的几个场合,我使用了第一个选项。
它一直对我来说都很好用。不错的帖子 Chris。
我使用第二种方法,其他方法都是不必要的重复。
我不明白为什么。所有最新版本的渲染引擎都支持多个盒阴影或 inset 关键字。
顺便说一句,您可以使用一个阴影和 spread 参数,但垂直“边框”最终会变成水平边框的两倍 :( http://jsfiddle.net/leaverou/Eed3V/
盒阴影甚至更适合模拟多个“边框”,正如 David DeSandro 最近演示的那样:http://jsfiddle.net/desandro/KQsL2/
对于“Internet Explorer 9 及更高版本”,我的意思是,就 Internet Explorer 而言,只有 9 及更高版本。
啊,明白了。
第二个示例对我来说是最好的
如果遇到这种情况,我会使用第三种方法,因为它更易于维护。对于像第一个示例那样将每个边框边分开,一旦您想要更改颜色或样式,就必须更改多次。如果您像我一样是完美主义者,试图为特定边框找到完美的颜色,这有点麻烦…
第二个示例在这种情况下也适用,但它感觉有点…不对劲。我无法解释。
我通常使用方法 #1,但已经开始使用方法 #2 了。
当我最初学习 CSS 时,我从未了解过将多种样式组合成一个的魔力(如背景、边距、填充等),直到使用了 CSSEdit,它可以自动为您完成此操作。该程序确实神奇地节省了时间,我只是希望他们能实现 CSS3。
小细节:在第三个示例下方,您写了“repeative”而不是“repetitive”。
(哦,还要补充一点,我更喜欢第二种选项,使用
border-direction:0
。我痴迷于 CSS 的简洁性。)“上面提供的代码仅在 Internet Explorer 9 及更高版本中有效”
没想到我会看到这句话
我喜欢第二个例子……
这是一个真的不需要讨论的话题,除非有一个简写版本,可以这样写
{ border: #red 1px 1px 1px 0px solid; }
这无法工作真是令人沮丧!
我怎样才能在我的博文里添加头像?
在 gravatar.com 获取一个 Gravatar
支持 Gravatar 的网站会在你使用已在 gravatar.com 注册的电子邮件地址在博客上发帖时使用你的 Gravatar。你可以为你的帐户添加多个电子邮件地址,并管理不同的图像。
Dan,
抱歉,我是在咨询如何在我的博客中添加评论者的头像。目前,我正在构建自己的 WordPress 主题,需要一小段代码片段,以便评论者可以添加他们自己的头像/Gravatar。
谢谢。
我用过这个,但它在 IE7 中不兼容
div {
border: 1px solid red;
border-left: 0;
}
但第三个对我有帮助……谢谢……
它有效:-) 第二个选项更好……