Czy istnieje sposób na stworzenie ostrego, płaskiego rogu z CSS i HTML?Płaskie ostre narożniki lub ścięte narożniki
coś takiego:
____
/ \
| |
\____/
Czy istnieje sposób na stworzenie ostrego, płaskiego rogu z CSS i HTML?Płaskie ostre narożniki lub ścięte narożniki
coś takiego:
____
/ \
| |
\____/
Oto moje rozwiązanie, używając kształtów CSS z Chrisem Coyier.
http://jsfiddle.net/dDejan/XSs9L/
4 dodatkowe div są wstawiane za pośrednictwem JavaScript (dobrze, faktycznie jQuery) dla każdego z pojemników, które mają być ukształtowane w ten sposób. Te div są umieszczone całkowicie w rogach jest dominująca, a są one odpowiednio urządzone w sposób opisany w linku wysłana przez Sven Bieder
można komponować to za pomocą absolutnie położenie :before
i :after
elementów z wykorzystaniem techniki CSS triangles.
<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;
}
To brzmi jak dobry początek, opieka udostępnić przykładowy kod ? – zehelvion
To wygląda dobrze, ale czy możesz wyjaśnić kod? Nie w pełni rozumiem, jak to działa? – zehelvion
To stara sztuczka polegająca na zrobieniu trójkąta z narożnego kawałka granicy. W tym przypadku jest to biały trójkąt, który zakrywa część niebieskiego pudełka. Możesz edytować ustawienia w: po, aby zobaczyć, jak to działa. Użyj innego z: before, aby ukryć lewy górny róg. Oto, jak to działa: http://stackoverflow.com/questions/7073484/how-does-this-css-triangle-shape-work –
Spójrz tutaj. Tam znajdziesz wszystko, czego potrzebujesz:
http://css-tricks.com/examples/ShapesOfCSS/
Edit W przypadku, gdy związek idzie utracone:
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;
}
Tak, masz rację, zmieniłem to –
Ale nie dostałeś akceptacji Odpowiedz teraz. Wstyd. Twój jest lepszy. –
Nie jest problemem. Kiedy druga odpowiedź działa lepiej dla niego, to jest w porządku. W końcu chodzi o pomoc ludziom, a nie o to, kto zostanie zaakceptowany. –
box {
background-color: transparent;
position: fixed;
width: 300px;
height: 300px;
}
svg {
width: 300px;
height: 300px;
}
polygon {
visibility: visible;
background: black;
stroke: white;
}
<box>
<svg>
<polygon points="0 250, 50 300, 300 300, 300 50, 250 0, 0 0" />
</svg>
</box>
Można to zrobić tylko z jednym dodatkowym elementem –
Dobrze wiedzieć @ VladimirStarkov, dziękuję za ten wnikliwy komentarz :) – dDejan