【发布时间】:2018-12-24 03:50:14
【问题描述】:
我想用CSS创建如下效果,最初,我想合并两个带圆角的矩形,但我不能用那种方式,因为它是一个尖角,不是圆的,看看里面的区域圈子,这是最难的部分。
所以我这样做:
1. 创建一个圆角矩形作为轮廓。边框颜色为灰色。
2. 在矩形左侧的中心创建一个灰色三角形。
3. 创建另一个白色三角形覆盖步骤 2 中的灰色三角形,稍微偏移,使其显示为矩形的边框。
效果如下:
我的问题是:
1.如何添加正确的部分?看来我只能在 CSS 选择器中同时绘制一个 shap :before 或 :after。
2.如果我想添加边框阴影效果怎么办?如果我添加矩形的阴影,白色三角形会出现,它很难看。
3. 或者有什么其他的方法可以产生这种效果?
代码如下:
.triangle_left {
width: 600px;
height: 600px;
position: relative;
margin: 20px auto;
border: 2px solid #cccccc;
/* box-shadow: 0px 0px 8px 1px darkgrey; */
border-radius: 20px;
}
.triangle_left:before {
content: '';
width: 0;
height: 0;
border: 20px solid transparent;
border-left-color: #cccccc;
position: absolute;
left: 0;
top: 50%;
margin-top: -20px;
}
.triangle_left:after {
content: '';
width: 0;
height: 0;
border: 18px solid transparent;
border-left-color: white;
position: absolute;
left: -2px;
top: 50%;
margin-top: -18px;
}
<div class="triangle_left">
</div>
【问题讨论】:
-
我经常使用这个网站来寻找我需要创建的形状:css-tricks.com/examples/ShapesOfCSS
-
谢谢,我知道那个链接,但这还不是全部。
-
1.诚然,伪元素大部分可以被视为实际元素,但它们是一个元素,因此基本上是一个形状。但是通过大量的努力,有些人可以制作出非常棒的效果。如果你能用
::before做左边,你可以用::after做右边。 2. 也是。您正在使用叠加层隐藏部分边框。也许你可以给它一个内在的阴影。 3. SVG。一个可缩放的矢量图形,为您提供更多可能性。 -
所以对于 1. 这并不完美,但也许您可以对其进行微调,直到您满意为止。我正在使用一个旋转的伪元素,并给它一个嵌入阴影,该阴影显示在两侧(不幸的是,其他侧也有一点)。伪元素本身有一个白色背景,这使它隐藏了一些现有的阴影。如果您可以根据需要对其进行微调,则可以镜像
::after伪元素的效果并将其用于右侧。 jsfiddle.net/v21xek78/1 -
您可以使用包含元素 jsfiddle.net/7tun48es/65 来做到这一点,该元素位于标记重复的答案之一中
标签: html css css-shapes