作者:阿拉伯恶劣我_295 | 来源:互联网 | 2023-05-28 13:22
我需要用CSS3 实现波形 ,我试图用CSS3 Shapes实现,但是我没有达到预期的结果.
* {
margin: 0;
padding: 0;
}
body {
background: #007FC1;
}
.container,
.panel {
border-bottom: 4px solid #B4CAD8;
}
.container {
background-color: #fff;
}
.container > .text {
padding: 0.5em;
}
.panel {
position: relative;
float: right;
width: 200px;
height: 40px;
margin-top: -4px;
background-color: #fff;
line-height: 42px;
text-align: center;
}
.panel:before {
content: '';
position: absolute;
left: -44px;
width: 0;
height: 0;
border-top: 44px solid #B4CAD8;
border-left: 44px solid transparent;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates nam fuga eligendi ipsum sed ducimus quia adipisci unde atque enim quasi quidem perspiciatis totam soluta tempora hic voluptatem optio perferendis.
this is a panel
在波形上实现边框和设置背景颜色是不可能的.我需要实现这个结果:
1> Weafs.py..: 您可以使用svg
而不是.panel
(div
)并将其浮动到右侧.
body {
background: #007FC1;
}
.container {
border-bottom: 4px solid #B4CAD8;
}
.container {
background-color: #fff;
z-index: -1;
}
.container > .text {
padding: 0.5em;
}
.panel {
position: relative;
float: right;
margin-top: -4px;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates nam fuga eligendi ipsum sed ducimus quia adipisci unde atque enim quasi quidem perspiciatis totam soluta tempora hic voluptatem optio perferendis.
This is a panel
2> Harry..: 这是一种使用CSS实现波形的方法.(这只是关于如何使用CSS实现它的说明,但SVG仍然是推荐使用的工具 .)
底座是div
白色矩形盒子.在包装盒中,底部50px具有透明色,3px之后具有浅蓝色,其余为白色.这使得它看起来像上半部分是一个带有浅蓝色边框的白色矩形.底部的透明50px部件有助于使切割区域看起来好像不是容器的一部分.
伪元素倾斜并定位在父容器的右下方以产生弯曲效果.它们还添加了一些框阴影以产生边框.
内容使用单独添加div
,并再次位于父级的右下角.
.content {
position: relative;
height: 150px;
padding: 10px;
background: linear-gradient(270deg, transparent 200px, lightblue 200px) no-repeat, linear-gradient(0deg, transparent 50px, white 50px);
background-position: 100% 117px, 100% 100%;
background-size: 100% 3px, 100% 100%;
overflow: hidden;
}
.content:before {
position: absolute;
content: '';
height: 25px;
width: 50px;
bottom: 25px;
right: 170px;
background: transparent;
border-top-right-radius: 18px;
box-shadow: 4px -3px 0px lightblue, 4px 0px 0px lightblue, 20px 0px 0px white;
transform: skew(30deg);
z-index: 2;
}
.content:after {
position: absolute;
content: '';
right: 0px;
bottom: 0px;
height: 50px;
width: 177px;
background: white;
border-bottom-left-radius: 18px;
box-shadow: inset 4px -3px 0px lightblue;
transform-origin: right top;
transform: skew(30deg);
}
.panel {
position: absolute;
bottom: 3px;
right: 0px;
height: 50px;
width: 135px;
line-height: 50px;
z-index: 3;
}
/* just for demo */
body {
background: linear-gradient(90deg, crimson, indianred, purple);
font-family: Calibri;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates nam fuga eligendi ipsum sed ducimus quia adipisci unde atque enim quasi quidem perspiciatis totam soluta tempora hic voluptatem optio perferendis
This is a panel
3> jbutler483..: 使用两个元素来创建wave:
html,body{background:black;}
.wave{
height:40px;
width:100%;
transform:skewX(30deg);
background:blue;
border-top:5px solid lightblue;
border-right:5px solid lightblue;
margin-left:-20%;
position:relative;
border-radius:5px;
}
.wave:before{
position:absolute;
content:"";
height:100%;
width:20%;
background:transparent;
right:-20%;
top:-5px;
border-radius:5px;
border-bottom:5px solid lightblue;
}
.wave:after{
position:absolute;
content:"";
height:5px;
width:5px;
background:black;
right:-1.65%;
bottom:4px;
border-radius:50%;
}
4> The Pragmati..: CSS唯一解决方案
正如你所要求的,我只制作了形状.使用定位将其添加到页面非常简单.对于像这样的任务,使用CSS不太实用.我在制作一个简单的形状时浪费了大约15-20分钟!在这种情况下,SVG更为可取.但是,尽管可以做到,但必须 这样做.这里 :
body{
margin:0;
padding:0;
}
#one{
position:absolute;
top:30px;
left:-30px;
height:10px;
width:10px;
}
#one > span{
position:relative;
top:-215px;
left:300px;
text-align:center;
width:300px;
height:80px;
display:block;
line-height:80px;
z-index:4;
}
.one{
position: relative;
height: 90px;
width: 300px;
background-color: #007FC1;
border-radius: 25px;
-webkit-transform: skew(30deg);
transform: skew(30deg);
z-index:2;
}
.obefore {
height:35px;
width:60px;
position:relative;
top:-35px;
left:290px;
background-color: #007FC1;
-webkit-transform: skew(30deg);
transform: skew(30deg);
z-index:1;
}
.oafter{
position: relative;
top: -135px;
left:310px;
height: 90px;
width: 300px;
background-color: white;
border-bottom-left-radius: 25px;
-webkit-transform: skew(30deg);
transform: skew(30deg);
z-index:3;
}
#two{
position:absolute;
top:20px;
left:-20px;
}
.two{
position: relative;
height: 90px;
width: 300px;
background-color: #B4CAD8;
border-radius: 25px;
-webkit-transform: skew(30deg);
transform: skew(30deg);
z-index:0;
}
.tafter{
position: relative;
top: -80px;
left:290px;
height: 90px;
width: 300px;
background-color: #B4CAD8;
border-top-left-radius: 45px;
border-bottom-left-radius: 25px;
-webkit-transform: skew(30deg);
transform: skew(30deg);
z-index:2;
}