Czy jest możliwe w css (bez obrazów) tworzyć elementy o promieniu obramowania i stronie trójkąta?Elementy CSS z promieniem obramowania i bokiem trójkąta
Odpowiedz
Można użyć obrazu SVG, że będzie ostro renderowania w dowolnym rozmiarze i dostosuje się do wielkości elementu, to będzie wyglądać tak ...
.button {
background: #000;
float: left;
position: relative;
color: #999;
font: 15px/130% Arial, sans-serif;
padding: 10px 20px;
clear: both;
margin: 10px;
border-radius: 5px 0 0 5px;
}
.button:after {
content: '';
display: block;
width: 10px;
position: absolute;
right: -10px;
height: 100%;
top: 0;
background: transparent url('triangle.svg') 0 0 no-repeat;
}
Ten jsfiddle będzie tylko pracuj w Webkit, ponieważ umieściłem na nim napis svg, abyś mógł zrozumieć, jak działa, ale jeśli załadujesz go z zewnętrznego pliku, powinien działać dobrze. Oto renderowania dla odniesienia:
rzucić okiem na to: http://css-tricks.com/snippets/css/css-triangle/ czy to: http://jonrohan.me/guide/css/creating-triangles-in-css/
na wysokości dynamicznych, jest pytanie i odpowiedź tutaj: CSS triangle with dynamic height
To świetne rozwiązanie, ale mam jeden problem: jak utworzyć trójkąt bez określonej wysokości? Jeden element li może znajdować się w jednej linii, a drugi w dwóch ... –
HTML:
<div><span>fubar</span></div>
CSS:
span{
display:block;
width:100px;
float:left;
background-color:green;
text-align:center;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
padding:5px 0;
}
div:after {
content: "";
display:block;
float:left;
border-top: 15px solid transparent;
border-bottom:15px solid transparent;
border-left: 10px solid green;
}
Aktualizacja:
Aby móc obsługiwać różne wysokości masz zamiar trzeba albo napisać kod JavaScript, żeby dynamicznie zmień rozmiar ramki lub skróć tekst za pomocą CSS. Jednak zależy to od Twoich szczególnych wymagań.
Nie działa dla zmiennej wysokości elementu, podobnie jak PO wskazał, że jest potrzebny. [Zobacz JSFiddle] (http://jsfiddle.net/hJfgw/4/). –
Dzięki, ale tak, - problemy z dwiema liniami :) –
możesz albo użyć JavaScript albo skrócić tekst za pomocą CSS - http://jsfiddle.net/hJfgw/7/ - choć wszystko zależy od twoich szczególnych wymagań. – xandercoded
Tak, ale to nie jest obsługiwana w starszych wersjach IE. Czy to jest problem? – zzzzBov
Prawdopodobnie łatwiej zrobić z dwoma elementami na (z braku lepszego terminu) rzeczą. Jedna na większą lewą część z zaokrąglonymi krawędziami i druga na trójkąt. – j08691
to nie jest konieczne wsparcie IE :) I jest ok, jeśli inny element, ale jak mogę utworzyć trójkąt bez określonej wysokości? –