Има ли някакъв начин да създадете остър плосък ъгъл с CSS и HTML?
Нещо като това:
____
/ \
| |
\____/
Има ли някакъв начин да създадете остър плосък ъгъл с CSS и HTML?
Нещо като това:
____
/ \
| |
\____/
Вижте тук. Там ще намерите всичко необходимо:
http://css-tricks.com/examples/ShapesOfCSS/
Редактиране В случай, че връзката се загуби:
CSS
#octagon {
width: 100px;
height: 100px;
background: red;
position: relative;
}
#octagon:before {
content: "";
position: absolute;
top: 0; left: 0;
border-bottom: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px; height: 0;
}
#octagon:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
border-top: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
Ето моето решение, използвайки CSS формите от Chris Coyier.
http://jsfiddle.net/dDejan/XSs9L/
4 допълнителни div се вмъкват чрез JavaScript (е, всъщност jQuery) за всеки от вашите контейнери, които искате да бъдат оформени по този начин. Тези div са позиционирани абсолютно в ъглите на своя родител и са стилизирани по съответния начин, както е описано във връзката, публикувана от Sven Bieder
Можете да съставите това, като използвате абсолютно позиционирани :before
и :after
елементи, като използвате CSS триъгълници техника.
<div class="box"></div>
css:
.box {
background-color:#2020ff;
height:50px;
width:50px;
position:relative
}
.box:after {
content:" ";
width: 0;
height: 0;
border-top: 10px solid #ffffff;
border-bottom: 10px solid transparent;
border-right:10px solid #ffffff;
position:absolute;
top:-9px;
right:0px;
}
Ето цялостно решение за цялата кутия. Той мащабира въз основа на размера на съдържанието, както бихте очаквали от обикновен div. И можете лесно да го преоразмерите със свойството за височина и ширина, без да се налага да бърникате с нищо друго. Това е модифицирана версия на този codepen.
div {
padding: 5px;
margin: 40px auto;
width: 230px;
background: rgba(47,51,54,1); /* fallback */
background:
-moz-linear-gradient(45deg, transparent 7px, rgba(47,51,54,1) 7px),
-moz-linear-gradient(135deg, transparent 7px, rgba(47,51,54,1) 7px),
-moz-linear-gradient(225deg, transparent 7px, rgba(47,51,54,1) 7px),
-moz-linear-gradient(315deg, transparent 7px, rgba(47,51,54,1) 7px);
background:
-o-linear-gradient(45deg, transparent 7px, rgba(47,51,54,1) 7px),
-o-linear-gradient(135deg, transparent 7px, rgba(47,51,54,1) 7px),
-o-linear-gradient(225deg, transparent 7px, rgba(47,51,54,1) 7px),
-o-linear-gradient(315deg, transparent 7px, rgba(47,51,54,1) 7px);
background:
-webkit-linear-gradient(45deg, transparent 7px, rgba(47,51,54,1) 7px),
-webkit-linear-gradient(135deg, transparent 7px, rgba(47,51,54,1) 7px),
-webkit-linear-gradient(225deg, transparent 7px, rgba(47,51,54,1) 7px),
-webkit-linear-gradient(315deg, transparent 7px, rgba(47,51,54,1) 7px);
xbackground:
linear-gradient(45deg, transparent 7px, rgba(47,51,54,1) 7px),
linear-gradient(135deg, transparent 7px, rgba(47,51,54,1) 7px),
linear-gradient(225deg, transparent 7px, rgba(47,51,54,1) 7px),
linear-gradient(315deg, transparent 7px, rgba(47,51,54,1) 7px);
}
div {
background-position: bottom left, bottom right, top right, top left;
-moz-background-size: 50% 50%;
-webkit-background-size: 50% 50%;
background-size: 50% 50%;
background-repeat: no-repeat;
}
p {
border-left: none;
border-right: none;
color: #ccc;
margin: 0;
min-height: 40px;
padding: 10px;
position: relative;
}
<div>
<p>Here is some content.</p>
</div>
https://codepen.io/c0n5/pen/vYyRPVZ