【问题标题】:Multiple borders, with padding, around image多个边框,带填充,围绕图像
【发布时间】:2013-11-09 19:40:48
【问题描述】:

我想在我的图像周围创建多个边框,并带有一些填充,如下所示。我更喜欢只用 CSS 来做这件事,但我不知道这是否可行。

虽然我用谷歌搜索了这个,但我只发现 examples like this 使用盒子阴影直接在对象周围有多个边框。

我尝试在图像周围使用边框和填充来创建它。但是填充甚至都没有解决,并且像上面的示例中那样使用 box-shadow 我不会得到我想要的东西。

你们将如何处理这个问题,甚至有可能吗?

编辑: 抱歉,忘记显示我目前拥有的内容:code pen link

【问题讨论】:

  • 你当前的标记/CSS是什么样的?
  • 目前我有这个:cdpn.io/qxFpj

标签: css image border


【解决方案1】:

我认为该链接正是这样做的正确方法!我会使用盒子阴影。

http://jsfiddle.net/chriscoyier/Vm9aM/

box-shadow:
    0 0 0 10px hsl(0, 0%, 80%),
    0 0 0 15px hsl(0, 0%, 90%);

这是另一个来自 Lea Verou 的箱形阴影示例。

http://lea.verou.me/css3-secrets/#multiple-outlines

【讨论】:

  • 感谢您的回复,但这不是我想要的。我需要在所有边界之间留一些间距。无论如何,谢谢。
【解决方案2】:

这可能会帮助你refer this fiddle

.round{
    width:150px;
    height:150px;
    border-radius:50%;
    border:10px solid #fff; 
        background-color: #eaeae7;
            -webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.2);
            -moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.2);
            box-shadow:0 1px 4px rgba(0, 0, 0, 0.2);
}

【讨论】:

  • 这看起来像我想要的。我将尝试将其插入我自己的代码中,谢谢! :D
  • @ronnyrr 很高兴听到它..:)
【解决方案3】:

在设计您的标记时,如果可能的话,强烈建议使用 bg 图像而不是内联图像元素。有几个原因,但主要有两个:

  1. 内联 img 元素不能使用 css 伪类,:before 和 :之后
  2. 使用边框时,内嵌图像更难掩盖角落 半径,尤其是有多个边框时会很棘手。

另外,这意味着这个设计可以完全使用一个 div 来创建。以下是我的做法:

HTML

<div class="thumbnail"></div>

CSS

.thumbnail {
  height: 50px; width: 50px;
  border-radius: 50px;
  background: url(http://www.tapdog.co/images/welcome/satelite-bg.jpg) no-repeat;
  background-size: cover;
  border: solid 1px #aaa;
  box-shadow: 0 0 0 4px #eee, 0 0 0 5px #aaa;
}

这里的关键点是您可以使用 box-shadow 创建任意数量的伪边框。您仍然可以使用border 属性添加真正的边框,然后可以更进一步使用伪类添加边框,每个伪类都可以使用自己的border 和box-shadow 属性。

这里的另一个值得注意的点是使用 background-size 属性,它可以非常有助于让图像在被边框切割时按比例缩放。特别是在处理用户生成的图像或可变大小的图像时。应为跨浏览器兼容性添加供应商前缀

这是一个带有示例的代码笔。 http://codepen.io/anon/pen/dKxbh

【讨论】:

  • 你的笔没有输出??
  • 重新保存,再次检查
  • 您插入的 codepen 示例是您发布的其他内容。但我会自己测试你的代码,谢谢:)
  • 再次检查,应该是一样的。我重新保存了,可能没更新
【解决方案4】:

你的意思是这样的:

jsFiddle

HTML:

<div class="container">
    <div class="inner"></div>
</div>

CSS:

.container{
    width:100px;
    height:100px;
    padding:10px;
    background:white;
    border:1px solid #555;
    border-radius:50%;
}
.inner{
    width:100%;
    height:100%;
    background:tomato;
    border:1px solid #555;
    border-radius:50%;
    margin-top:-1px;
    margin-left:-1px;
}

【讨论】:

  • 好像是我想要的!但是@Tigran Petrossian 他的代码使用的 HTML/CSS 更少,所以更好一点。还是谢谢。
【解决方案5】:
<div class="border"> bipin kumar pal</div>


.border {
    border: 5px solid hsl(0, 0%, 40%);
    padding: 5px;
    background: hsl(0, 0%, 20%);
    outline: 5px solid hsl(0, 0%, 60%);
     box-shadow:
        0 0 0 10px hsl(0, 0%, 80%),
        0 0 0 15px hsl(0, 0%, 90%);
    color:#fff;

}

【讨论】:

    【解决方案6】:

    简单易懂!

    填充、边框和几个盒子阴影可以解决问题。

    img {    
        border-radius: 50%;
        padding: 3px;
        border: 1px solid #ddd;
        box-shadow: 0 0 0 7px #fff, 
                    0 0 0 8px #ddd;
    }
    

    Fiddle

    【讨论】:

    • 太棒了,正是我想要的! :D
    • 使用您的 CSS 更新了我的代码笔!看起来很棒,谢谢! :D 见:codepen.io/Ronnyrr/pen/qxFpj
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2016-07-16
    • 1970-01-01
    • 2023-03-22
    • 2011-11-08
    • 2015-05-09
    相关资源
    最近更新 更多