我在Photoshop中创建了这个边框设计,并想知道是否有人可以给我一些关于如何使用css
重新创建它的指导。
答案 0 :(得分:15)
使用CSS3创建这样的效果肯定是可能的,但你需要的不仅仅是边框。
在下面的示例中,我使用了具有radial-gradient
背景的伪元素来模仿显示的边框效果。根据哪个边应该有边框,您可以调整伪元素的位置以实现效果。
答案中提供的示例对顶部边框有效。如果您想要它用于底部边框,可以参考this示例。对于左/右边界也可以实现相同,但需要更多调整。
您还可以调整background-size
属性以在边框中实现更小/更大的圆圈。您还可以在ellipse
属性值中使用关键字circle
代替radial-gradient
,在边框中生成椭圆图案而不是圆圈。
注意事项:
radial-gradient
背景也可以直接添加到主div
。但是,对于底部边界定位/实现这种效果是不可能的,因此使用伪元素。border-image
属性可以用于仅使用边框来实现相同的效果,但是它具有比radial-gradients
更低的支持(甚至IE 10不支持它),因此不推荐/使用。 radial-gradients
。
.bordered{
position: relative;
height: 75px;
width: 100%;
border-top: 40px solid black;
background: #EEE;
padding-top: 10px;
}
.bordered:before{
position: absolute;
content: '';
top: 0px;
height: 8px;
width: 100%;
background-size: 12px 12px;
background-position: -5px -3px;
background-image: -webkit-radial-gradient(50% 0%, circle, black 50%, transparent 55%);
background-image: -moz-radial-gradient(50% 0%, circle, black 50%, transparent 55%);
background-image: radial-gradient(circle at 50% 0%, black 50%, transparent 55%);
}
<div class="bordered">Lorem Ipsum Dolor Sit Amet</div>
相关示例:
此处提供了在底部而不是圆形处生成相似图案但带有三角形切割的方法 - lesser browser support for radial-gradients
。
同样的方法可以用于在顶部和底部生成边框等邮票。有一个样本Making jagged triangle border in CSS。还有一个类似的问题和答案here,在此答案中发布样本之前我没有遇到过。
可以使用相同的方法生成与液滴边界相反的边框(如下图所示)。可提供的示例here。
答案 1 :(得分:3)
除了@Harry的回答 - (这可能是解决这个问题的最好方法)......
我们也可以使用webkit text-stroke
属性通过在字符(例如'0')上设置粗笔划来实现此效果。
我们可以通过改变笔画粗细和字符的字体大小来微调这个效果。
div{
position: relative;
height: 75px;
width: 100%;
border-bottom: 20px solid black;
background: #EEE;
padding-top: 10px;
}
div:after{
position: absolute;
content: '00000000000000000000000000000000000000000000000000000000000';
font-size: 30px;
-webkit-text-stroke: 10px black;
text-stroke: 10px black;
bottom:-35px;
left:0;
width: 100%;
overflow:hidden;
}
<div>Lorem Ipsum Dolor Sit Amet</div>
答案 2 :(得分:0)
使用蒙版的想法,我们可以轻松地考虑所有方面并使用任何类型的背景:
.box {
--b:10px; /* border thickness */
width:150px;
height:150px;
margin:10px;
box-sizing:border-box;
display:inline-block;
border:var(--b) solid transparent;
background:red;
-webkit-mask:
radial-gradient(farthest-side,#fff 97%,transparent) 0 0/calc(2*var(--b)) calc(2*var(--b)) round,
linear-gradient(#fff 0 0) padding-box;
}
body {
background:lightgrey;
}
<div class="box"></div>
<div class="box" style="--b:20px;border-left:0;border-right:0;background:linear-gradient(45deg,red,blue) border-box"></div>
<div class="box" style="--b:5px;border-top:0;border-bottom:0;background:url(https://picsum.photos/id/129/300/300) center/cover border-box"></div>
<div class="box" style="--b:15px;border-left:0;border-right:0;border-bottom:0;background:conic-gradient(red,green,blue) border-box"></div>
<div class="box" style="--b:25px;border-left:0;border-right:0;border-top:0;background:repeating-linear-gradient(45deg, #000 0 10px,pink 0 20px) border-box"></div>
<div class="box" style="--b:40px;border-left:0;border-top:0;background:repeating-radial-gradient(circle, red 0 10px,green 20px) border-box"></div>