如何用输入和按钮创建三角形的形式?
How to create triangle's form with inputs and button?
现在我有一个像上面那样的表格,但是左右两边没有三角形。我已将此功能应用到我的表单中,但它变成了一些静态的,而不是自适应的(我通过像素选择尺寸,只考虑我的浏览器)。如果您能提供一些链接,我将非常高兴。这个三角形有相应的三角形阴影,所以我不能使用 :after 和 :before。最重要
您可以像这个例子一样使用 CSS 边框创建三角形
.form {
width: 400px;
height: 80px;
margin: 0px auto;
background: #1E9BAF;
position: relative;
box-shadow: -7px 15px 0px -5px rgba(0, 0, 0, 0.3);
}
.triangle,
.triangle > div {
width: 0px;
height: 0px;
position: absolute;
border: 40px solid transparent;
}
.leftTriangle {
left: -55px;
border-right: 15px solid #1E9BAF;
}
.leftTriangle > div {
left: -42px;
top: -30px;
z-index: -1;
border-right: 15px solid rgba(0, 0, 0, 0.3);
}
.rightTriangle {
right: -55px;
border-left: 15px solid #1E9BAF;
}
.rightTriangle > div {
right: -28px;
top: -30px;
z-index: -1;
border-left: 15px solid rgba(0, 0, 0, 0.3);
}
<div class="form">
<div class="triangle leftTriangle">
<div></div>
</div>
<div class="triangle rightTriangle">
<div></div>
</div>
</div>
另一种方法是使用 CSS-transforms。 Elongated hexagon shaped button using only one element.
中描述了主要思想
您可以将 box-shadow 直接添加到 .rhombus:before 和 :after(但我注意到 Mozilla 中存在一些问题)或者只是制作另一个带有偏移量的包装器并复制这些伪元素。
form {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 30px 20px;
border: none;
font-family: sans-serif;
}
form .header {
flex-basis: 100%;
margin: -10px 0 10px;
text-align: center;
color: white;
}
form input,
form button {
flex-grow: 1;
height: 30px;
margin: 0 5px;
padding: 0 5px;
box-sizing: border-box;
}
form button[type="submit"] {
background-color: #FFD900;
}
.rhombus {
position: relative;
-webkit-perspective: 800px;
perspective: 800px;
}
.rhombus:before,
.rhombus:after {
content: "";
position: absolute;
left: 0;
height: 50%;
width: 100%;
background-color: #1E9BAF;
z-index: -1;
}
.rhombus:before {
top: 0;
-webkit-transform: rotateX(30deg);
-webkit-transform-origin: center bottom;
-ms-transform: rotateX(30deg);
-ms-transform-origin: center bottom;
transform: rotateX(30deg);
transform-origin: center bottom;
/*box-shadow: 3px 5px #DDD;*/
}
.rhombus:after {
bottom: 0;
-webkit-transform: rotateX(-30deg);
-webkit-transform-origin: center top;
-ms-transform: rotateX(-30deg);
-ms-transform-origin: center top;
transform: rotateX(-30deg);
transform-origin: center top;
/*box-shadow: 5px 5px #DDD;*/
}
<form class="rhombus">
<div class="header">ОСТАВИТЬ ЗАЯВКУ</div>
<input name="name" placeholder="Ваше имя"/>
<input name="phone" placeholder="Ваш номер телефона"/>
<button type="submit">ОТПРАВИТЬ</button>
</form>
与您之前的问题类似的答案:)。 4 个渐变 + background-size
也可以在这里完成工作:
form {
font-size:2em;
background:
linear-gradient(-250deg, transparent 1em, #1E9BAF 1.01em) top left no-repeat,
linear-gradient( 70deg, transparent 1em, #1E9BAF 1.01em) bottom left no-repeat,
linear-gradient( 250deg, transparent 1em, #1E9BAF 1.01em) top right no-repeat,
linear-gradient( -70deg, transparent 1em, #1E9BAF 1.01em) bottom right no-repeat;
background-size: 60% 50.3%;
box-shadow:0 1.25em 15px -1.25em ;
background-size: 60% 50%;
margin: 2em;
padding:0.5em;
text-align: center
}
label{display:block;color:white }
[type] {background:linear-gradient(to top, #ffab00, #fff800);}
<form>
<label>texting</label>
<input placeholder=" Name"/> <input placeholder="☎ phone"/> <input type="submit" value="submit"/>
</form>
现在我有一个像上面那样的表格,但是左右两边没有三角形。我已将此功能应用到我的表单中,但它变成了一些静态的,而不是自适应的(我通过像素选择尺寸,只考虑我的浏览器)。如果您能提供一些链接,我将非常高兴。这个三角形有相应的三角形阴影,所以我不能使用 :after 和 :before。最重要
您可以像这个例子一样使用 CSS 边框创建三角形
.form {
width: 400px;
height: 80px;
margin: 0px auto;
background: #1E9BAF;
position: relative;
box-shadow: -7px 15px 0px -5px rgba(0, 0, 0, 0.3);
}
.triangle,
.triangle > div {
width: 0px;
height: 0px;
position: absolute;
border: 40px solid transparent;
}
.leftTriangle {
left: -55px;
border-right: 15px solid #1E9BAF;
}
.leftTriangle > div {
left: -42px;
top: -30px;
z-index: -1;
border-right: 15px solid rgba(0, 0, 0, 0.3);
}
.rightTriangle {
right: -55px;
border-left: 15px solid #1E9BAF;
}
.rightTriangle > div {
right: -28px;
top: -30px;
z-index: -1;
border-left: 15px solid rgba(0, 0, 0, 0.3);
}
<div class="form">
<div class="triangle leftTriangle">
<div></div>
</div>
<div class="triangle rightTriangle">
<div></div>
</div>
</div>
另一种方法是使用 CSS-transforms。 Elongated hexagon shaped button using only one element.
中描述了主要思想您可以将 box-shadow 直接添加到 .rhombus:before 和 :after(但我注意到 Mozilla 中存在一些问题)或者只是制作另一个带有偏移量的包装器并复制这些伪元素。
form {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 30px 20px;
border: none;
font-family: sans-serif;
}
form .header {
flex-basis: 100%;
margin: -10px 0 10px;
text-align: center;
color: white;
}
form input,
form button {
flex-grow: 1;
height: 30px;
margin: 0 5px;
padding: 0 5px;
box-sizing: border-box;
}
form button[type="submit"] {
background-color: #FFD900;
}
.rhombus {
position: relative;
-webkit-perspective: 800px;
perspective: 800px;
}
.rhombus:before,
.rhombus:after {
content: "";
position: absolute;
left: 0;
height: 50%;
width: 100%;
background-color: #1E9BAF;
z-index: -1;
}
.rhombus:before {
top: 0;
-webkit-transform: rotateX(30deg);
-webkit-transform-origin: center bottom;
-ms-transform: rotateX(30deg);
-ms-transform-origin: center bottom;
transform: rotateX(30deg);
transform-origin: center bottom;
/*box-shadow: 3px 5px #DDD;*/
}
.rhombus:after {
bottom: 0;
-webkit-transform: rotateX(-30deg);
-webkit-transform-origin: center top;
-ms-transform: rotateX(-30deg);
-ms-transform-origin: center top;
transform: rotateX(-30deg);
transform-origin: center top;
/*box-shadow: 5px 5px #DDD;*/
}
<form class="rhombus">
<div class="header">ОСТАВИТЬ ЗАЯВКУ</div>
<input name="name" placeholder="Ваше имя"/>
<input name="phone" placeholder="Ваш номер телефона"/>
<button type="submit">ОТПРАВИТЬ</button>
</form>
与您之前的问题类似的答案:)。 4 个渐变 + background-size
也可以在这里完成工作:
form {
font-size:2em;
background:
linear-gradient(-250deg, transparent 1em, #1E9BAF 1.01em) top left no-repeat,
linear-gradient( 70deg, transparent 1em, #1E9BAF 1.01em) bottom left no-repeat,
linear-gradient( 250deg, transparent 1em, #1E9BAF 1.01em) top right no-repeat,
linear-gradient( -70deg, transparent 1em, #1E9BAF 1.01em) bottom right no-repeat;
background-size: 60% 50.3%;
box-shadow:0 1.25em 15px -1.25em ;
background-size: 60% 50%;
margin: 2em;
padding:0.5em;
text-align: center
}
label{display:block;color:white }
[type] {background:linear-gradient(to top, #ffab00, #fff800);}
<form>
<label>texting</label>
<input placeholder=" Name"/> <input placeholder="☎ phone"/> <input type="submit" value="submit"/>
</form>