Какое-то время я пытался скруглить углы шестиугольников, однако обнаружил, что ни один из моих методов не работает. Есть ли у вас, ребята, какие-либо предложения о том, как это можно сделать?
Возможны ли округлые формы? Формы, такие как шестиугольник, восьмиугольник?
comment
Что вы пробовали?
- person   schedule 02.02.2013
comment
CSS не подходит для этого. Попробуйте SVG.
- person John Dvorak   schedule 02.02.2013
comment
пытался использовать svg, но безрезультатно
- person Xceptic   schedule 02.02.2013
comment
@JackManey, ха-ха, whathaveyoutried.com... молодец, блестящая находка!
- person dev   schedule 02.02.2013
comment
Вероятно, это возможно с кучей работы (и несколькими элементами): css-tricks.com/examples/ShapesOfCSS< /а>
- person Tim Medora   schedule 02.02.2013
comment
@TimMedora Вы должны опубликовать это как ответ.
- person Pavlo   schedule 03.02.2013
Ответы (1)
HTML
<div class="hexagon">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
CSS
.hexagon {
position: relative;
}
.hexagon > DIV {
position: absolute;
top: 0;
left: 48px;
-moz-border-radius: 16px;
border-radius: 16px;
width: 64px;
height: 96px;
background-color: blue;
}
.hexagon > DIV:nth-child(2) {
-moz-transform: rotate(60deg);
-ms-transfrom: rotate(60deg);
-webkit-transform: rotate(60deg);
transform: rotate(60deg);
}
.hexagon > DIV:nth-child(3) {
-moz-transform: rotate(120deg);
-ms-transfrom: rotate(120deg);
-webkit-transform: rotate(120deg);
transform: rotate(120deg);
}
Заметки:
Это, вероятно, было бы лучше сделать с помощью SVG или холста, если это не является изолированной необходимостью. Создание набора элементов для формирования формы не имеет смысла и утомительно.
IE 7/8 вообще не будет работать из-за
transform
,border-radius
иnth-child
.Вы заметите простые математические отношения между размером радиуса границы, шириной и высотой.
На этом сайте показано много других интересных форм, которые можно создать.
person
Tim Medora
schedule
02.02.2013
Привет Тим Медора. У меня есть вопрос о простых математических отношениях между размером радиуса границы, шириной и высотой, не могли бы вы помочь мне найти отношения? Заранее спасибо.
- person Donovan Charpin; 17.04.2014
@DonovanCharpin — вот модифицированная скрипта, демонстрирующая отношения: jsfiddle.net/9BTTQ/91. Высота = ширина * 1,5, а радиус границы = ширина * 0,25. Честно говоря, я не уверен в геометрии, лежащей в основе почему это работает для закругленного шестиугольника, состоящего из трех равных прямоугольников.
- person Tim Medora; 17.04.2014
Спасибо за быстрый ответ. На этом веб-сайте, если длина ребра равна 100, короткая диагональ составляет около 173, поэтому соотношение равно
height = width * 1.73
. Для радиуса границы я не могу найти значение, соответствующее высоте и ширине... В jsFiddle я могу написать border-radius: 1em / 0.5em;
, который отлично работает следующим образом пример. Но у меня проблема с моей последней версией lessCSS, которая вычисляет 2em, а это не то же самое, что 1em / 0.5... ЧЕРТОВСКИ. jsFiddle обновлен
- person Donovan Charpin; 18.04.2014
Вы пытаетесь разделить радиус границы или установить неравные значения на разных сторонах? В простом CSS
1em / .5em
задает разные радиусы границ по сторонам прямоугольника. LESS CSS разделил бы это выражение, что привело бы к другому результату. Чтобы разделить в простом CSS, вам понадобится calc(1em / .5)
.
- person Tim Medora; 18.04.2014
Я хотел бы сохранить
border-radius: 1em / 0.5em;
, но без calc()
меньше вычисляет 2em
. Так что я не могу получить это выражение border-radius: 1em / 0.5em;
с меньшим количеством...
- person Donovan Charpin; 18.04.2014
Правильный формат просто
border-radius : "1em / 0.5em";
для меньшего... Я думаю, что это работает для каждого шестиугольника. Спасибо за вашу помощь. +1 :)
- person Donovan Charpin; 18.04.2014